14 #define array_of(type) type *
15 #define array_size(array) (_array_get_header(array)->size)
16 #define array_capacity(array) (_array_get_header(array)->capacity)
17 #define array_element_size(array) (_array_get_header(array)->element_size)
18 #define array_alloc(array) (_array_get_header(array)->alloc)
21 KB_API
void *_array_create(usize initial_capacity, usize element_size, usize element_alignment,
allocator *alloc);
22 #define array_create(type, initial_capacity, alloc_ptr) \
23 (array_of(type))(_array_create(initial_capacity, sizeof(type), 1, alloc_ptr))
25 KB_API
void array_destroy(
void *arr_ptr);
27 KB_API b8 array_reserve(
void *arr_ptr, usize new_capacity);
28 KB_API b8 array_resize(
void *arr_ptr, usize new_size);
29 KB_API
void *array_clone(
const void *arr,
allocator *alloc);
31 #define array_push(array, element) \
33 array[array_size(array)++] = element; \
35 KB_API b8 array_push_checked(
void *arr,
void *element);
37 #define array_pop(array) array[--array_size(array)]
38 KB_API b8 array_pop_checked(
void *arr_ptr,
void *element);
40 KB_API b8 array_insert(
void *arr_ptr, usize index,
void *element);
42 KB_API b8 array_remove(
void *arr_ptr, usize index,
void *element);
44 #define array_for_each(type, var, arr) for (type *var = arr; var < arr + array_size(arr); ++var)
Central header providing allocator functionality.
Central allocator structure.