#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
#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
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
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
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
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
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
}\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
\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
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
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
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