aboutsummaryrefslogtreecommitdiff
path: root/src/un_list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/un_list.c')
-rw-r--r--src/un_list.c23
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--;