summaryrefslogtreecommitdiff
path: root/source/kit/dynamic_array.c
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2023-03-24 22:51:12 +0100
committerMitya Selivanov <automainint@guattari.tech>2023-03-24 22:51:12 +0100
commitb6179af210b0ed92224506dce0978c20d8d6fba7 (patch)
tree8368f703914c83490be519099a03c1274f1034be /source/kit/dynamic_array.c
parente071aa5408ca617172923214aaf61b4cd3733483 (diff)
downloadkit-b6179af210b0ed92224506dce0978c20d8d6fba7.zip
Custom alloc dispatch mode
Diffstat (limited to 'source/kit/dynamic_array.c')
-rw-r--r--source/kit/dynamic_array.c13
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;