diff options
author | Mitya Selivanov <automainint@guattari.tech> | 2023-03-24 22:51:12 +0100 |
---|---|---|
committer | Mitya Selivanov <automainint@guattari.tech> | 2023-03-24 22:51:12 +0100 |
commit | b6179af210b0ed92224506dce0978c20d8d6fba7 (patch) | |
tree | 8368f703914c83490be519099a03c1274f1034be /source/kit/dynamic_array.c | |
parent | e071aa5408ca617172923214aaf61b4cd3733483 (diff) | |
download | kit-b6179af210b0ed92224506dce0978c20d8d6fba7.zip |
Custom alloc dispatch mode
Diffstat (limited to 'source/kit/dynamic_array.c')
-rw-r--r-- | source/kit/dynamic_array.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/source/kit/dynamic_array.c b/source/kit/dynamic_array.c index 1829c45..d3eaf29 100644 --- a/source/kit/dynamic_array.c +++ b/source/kit/dynamic_array.c @@ -9,12 +9,12 @@ void kit_da_init(kit_da_void_t *array, ptrdiff_t element_size, assert(element_size > 0); assert(size >= 0); assert(alloc.allocate != NULL); - assert(alloc.deallocate != NULL); memset(array, 0, sizeof(kit_da_void_t)); if (size > 0) - array->values = alloc.allocate(alloc.state, element_size * size); + array->values = kit_alloc_dispatch(alloc, KIT_ALLOCATE, + element_size * size, 0, NULL); if (array->values != NULL) { array->capacity = size; @@ -45,15 +45,16 @@ void kit_da_resize(kit_da_void_t *array, ptrdiff_t element_size, ptrdiff_t capacity = eval_capacity(array->capacity, size); assert(array->alloc.allocate != NULL); - assert(array->alloc.deallocate != NULL); - void *bytes = array->alloc.allocate(array->alloc.state, - element_size * capacity); + void *bytes = kit_alloc_dispatch( + array->alloc, KIT_ALLOCATE, element_size * capacity, 0, NULL); + if (bytes != NULL) { if (array->size > 0) memcpy(bytes, array->values, element_size * array->size); if (array->values != NULL) - array->alloc.deallocate(array->alloc.state, array->values); + kit_alloc_dispatch(array->alloc, KIT_DEALLOCATE, 0, 0, + array->values); array->capacity = capacity; array->size = size; array->values = bytes; |