diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-09-25 14:17:07 +0300 |
commit | 166877cf15f6afa89c9f8a61e267d485868d0ee1 (patch) | |
tree | 9f080314edc4fb293f91227cdc1c01cfec8d7bae /src/un_list.c | |
parent | 8ebdc95621bc61fdf3c98cd7ae4ddca67398df23 (diff) | |
download | ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.tar.gz ungrateful-166877cf15f6afa89c9f8a61e267d485868d0ee1.zip |
+disgrace and rework of ungrateful.h
Diffstat (limited to 'src/un_list.c')
-rw-r--r-- | src/un_list.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/un_list.c b/src/un_list.c index 9d6a5ce..c90ae25 100644 --- a/src/un_list.c +++ b/src/un_list.c @@ -9,15 +9,14 @@ List un_list_create(u64 start_capacity, u64 element_size, Allocator alloc) { list.data = un_memory_alloc(list.capacity * list.element_size, alloc); if (list.data == NULL) { - list.alloc = un_allocator_get_temporary(); - list.data = un_memory_alloc(list.capacity * list.element_size, list.alloc); + UN_CLEAR(list); } return list; } -void un_list_destroy(List *list, b32 delete_allocator) { - if (delete_allocator) { un_memory_destroy(&list->alloc); } +void un_list_destroy(List *list) { + un_memory_free(list->data, list->alloc); UN_CLEAR(*list); } @@ -27,15 +26,13 @@ List un_list_clone(List *list, Allocator alloc) { result = *list; result.alloc = alloc; result.data = un_memory_alloc(result.capacity * result.element_size, alloc); - assert(result.data != NULL); if (result.data == NULL) { - result.alloc = un_allocator_get_temporary(); - result.data = un_memory_alloc(result.capacity * result.element_size, result.alloc); + UN_CLEAR(list); + } else { + memcpy(result.data, list->data, result.count * result.element_size); } - un_memory_copy(result.data, list->data, result.count * result.element_size); - return result; } @@ -49,7 +46,7 @@ static b32 list_grow_if_needed(List *list) { return false; } - un_memory_copy(mem, list->data, list->element_size * list->capacity); + memcpy(mem, list->data, list->element_size * list->capacity); un_memory_free(list->data, list->alloc); list->data = mem; @@ -68,7 +65,7 @@ static void un_list_create_if_needed(List *list) { assert(list->element_size != 0); if (!list->data) { - Allocator alloc = list->alloc.proc == NULL ? un_allocator_get_standard() : list->alloc; + Allocator alloc = list->alloc.proc == NULL ? un_alloc_std_get() : list->alloc; *list = un_list_create(UN_LIST_STANDARD_CAPACITY, list->element_size, alloc); } } @@ -79,7 +76,7 @@ b32 un_list_append(List *list, void *data) { if (list_grow_if_needed(list)) { addr = (u8*)list->data + list->count * list->element_size; - un_memory_copy(addr, data, list->element_size); + memcpy(addr, data, list->element_size); list->count++; return true; } else { @@ -106,7 +103,7 @@ void un_list_remove(List *list, u64 index) { move_elements = list->count - (index + 1); if (move_elements) { - un_memory_move(addr, (u8*)addr + list->element_size, move_elements * list->element_size); + memmove(addr, (u8*)addr + list->element_size, move_elements * list->element_size); } list->count--; |