]> www.git.momoyon.org Git - commonlib.git/commitdiff
Make memory-allocation procs changable(for a lack of a betterword).
authorahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 25 Jan 2025 14:46:09 +0000 (19:46 +0500)
committerahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 25 Jan 2025 14:49:51 +0000 (19:49 +0500)
commonlib.h

index d975879a7f3680b7ffec40ecacf788ea56239dd9..f05281286a0e4c809ecb7231e9c46be9143bf8eb 100644 (file)
@@ -8,6 +8,12 @@
 #include <string.h>\r
 #include <ctype.h>\r
 \r
+// Memory allocation\r
+#define C_MALLOC malloc\r
+#define C_FREE free\r
+#define C_REALLOC realloc\r
+#define C_MEMCPY memcpy\r
+\r
 // Remove Prefix\r
 #ifdef COMMONLIB_REMOVE_PREFIX\r
 #define ASSERT c_ASSERT\r
@@ -35,7 +41,6 @@
 #define Arena_alloc_str c_Arena_alloc_str\r
 #define Arena_alloc_wstr c_Arena_alloc_wstr\r
 \r
-#define String_view c_String_view\r
 #define String_view c_String_view\r
 \r
 #endif // COMMONLIB_REMOVE_PREFIX\r
@@ -98,12 +103,12 @@ typedef struct c_Arena c_Arena;
                if ((da).items == NULL) {\\r
                        (da).capacity = DYNAMIC_ARRAY_INITIAL_CAPACITY;\\r
                        (da).count = 0;\\r
-                       (da).items = malloc(sizeof(elm) * (da).capacity);\\r
+                       (da).items = C_MALLOC(sizeof(elm) * (da).capacity);\\r
                }\\r
                if ((da).count + 1 > (da).capacity) {\\r
                        (da).capacity *= 2;\\r
                        if (DEBUG) log_info("%s realloced!", #da);\\r
-                       ASSERT(realloc((da).items, (da).capacity * sizeof(*(da).items)) != NULL, "TODO: Log error instead of asserting");\\r
+                       ASSERT(C_REALLOC((da).items, (da).capacity * sizeof(*(da).items)) != NULL, "TODO: Log error instead of asserting");\\r
                }\\r
                (da).items[(da).count++] = elm;\\r
        } while (0)\r
@@ -174,9 +179,9 @@ typedef struct {
     char* data;\r
     size_t size;\r
     size_t capacity;\r
-} String_builder;\r
+} c_String_builder;\r
 \r
-void sb_append(String_builder* sb, char* data);\r
+void c_sb_append(c_String_builder* sb, char* data);\r
 \r
 //\r
 // String view\r
@@ -290,7 +295,7 @@ const char *c_slurp_file(const char* filename, bool* success) {
         defer(NULL);\r
     }\r
 \r
-    result = malloc(sizeof(char)*(fsize+1));\r
+    result = C_MALLOC(sizeof(char)*(fsize+1));\r
 \r
     if (result == NULL){\r
         c_log_error("slurp_file::malloc(%zu) -> %s\n", sizeof(char)*fsize, strerror(errno));\r
@@ -331,7 +336,7 @@ void c_touch_file_if_doesnt_exist(cstr filename) {
 c_Arena c_Arena_make(size_t size) {\r
     c_Arena res = {0};\r
     res.buff_size = size == 0 ? ARENA_BUFF_INITIAL_SIZE : size;\r
-    res.buff = malloc(res.buff_size);\r
+    res.buff = C_MALLOC(res.buff_size);\r
     res.ptr = res.buff;\r
 \r
     c_ASSERT(res.buff, "Malloc failed?");\r
@@ -349,7 +354,7 @@ void* c_Arena_alloc(c_Arena* a, size_t size) {
     if (diff > a->buff_size) {\r
         c_log_info("c_Arena resized from %zu to %zu", a->buff_size, a->buff_size*2);\r
         a->buff_size *= 2;\r
-        a->buff = realloc(a->buff, a->buff_size);\r
+        a->buff = C_REALLOC(a->buff, a->buff_size);\r
         a->ptr = (uint8*)a->buff + diff;\r
         res = a->ptr;\r
         a->ptr = (uint8*)a->ptr + size;\r
@@ -364,22 +369,22 @@ void c_Arena_reset(c_Arena* a) {
 }\r
 \r
 void c_Arena_free(c_Arena* a) {\r
-    free(a->buff);\r
+    C_FREE(a->buff);\r
 }\r
 \r
 //\r
 // String Builder\r
 //\r
 \r
-void sb_append(String_builder* sb, char* data) {\r
+void c_sb_append(c_String_builder* sb, char* data) {\r
     size_t data_size = strlen(data);\r
     if (sb->size + data_size > sb->capacity) {\r
         sb->capacity *= 2;\r
-        sb->data = realloc(sb->data, sb->capacity);\r
+        sb->data = C_REALLOC(sb->data, sb->capacity);\r
     }\r
 \r
     // void *memcpy(void dest[restrict .n], const void src[restrict .n],\r
-    memcpy((uintptr_t)sb->data + (uintptr_t)sb->data, data, data_size);\r
+    C_MEMCPY((void *)((uintptr_t)sb->data + (uintptr_t)sb->data), data, data_size);\r
     sb->size += data_size;\r
 }\r
 \r
@@ -522,7 +527,7 @@ void c_sv_trim(c_String_view* sv){
 \r
 char* c_sv_to_cstr(c_String_view sv){\r
     char* res = (char*)calloc(1, sizeof(char)*sv.count);\r
-    memcpy(res, sv.data, sv.count);\r
+    C_MEMCPY(res, sv.data, sv.count);\r
     return res;\r
 }\r
 \r
@@ -530,14 +535,14 @@ char* c_sv_to_cstr(c_String_view sv){
 int32 c_sv_to_int(c_String_view sv) {\r
     char* str = c_sv_to_cstr(sv);\r
     int32 res = atoi(str);\r
-    free(str);\r
+    C_FREE(str);\r
     return res;\r
 }\r
 \r
 uint64 c_sv_to_uint64(c_String_view sv) {\r
     char* str = c_sv_to_cstr(sv);\r
     uint64 res = (uint64)atoll(str);\r
-    free(str);\r
+    C_FREE(str);\r
     return res;\r
 }\r
 \r
@@ -545,14 +550,14 @@ uint8 c_sv_to_uint8_hex(c_String_view sv) {
     char* str = c_sv_to_cstr(sv);\r
     char* end = str + sv.count;\r
     uint8 res = (uint8)strtol(str, &end, 16);\r
-    free(str);\r
+    C_FREE(str);\r
     return res;\r
 }\r
 \r
 float32 c_sv_to_float(c_String_view sv) {\r
     char* str = c_sv_to_cstr(sv);\r
     float32 res = (float32)atof(str);\r
-    free(str);\r
+    C_FREE(str);\r
     return res;\r
 }\r
 \r
@@ -560,7 +565,7 @@ void*    c_sv_to_ptr(c_String_view sv) {
     char* str = c_sv_to_cstr(sv);\r
     char* end = NULL;\r
     void* res = (void*)strtoull(str, &end, 16);\r
-    free(str);\r
+    C_FREE(str);\r
     return res;\r
 }\r
 \r