c-engine/src/dynamic_array.c

27 lines
784 B
C

#include "dynamic_array.h"
#include "arena_allocator.h"
#include <assert.h>
wn_darr *wn_darr_init(Arena *arena, size_t object_size, size_t object_count) {
wn_darr *darr = arena_alloc(arena, sizeof(wn_darr));
*darr =
(wn_darr){.metadata = arena_init(arena, object_count * sizeof(void *)),
.data = arena_init(arena, object_count * object_size),
.count = 0};
assert(darr->metadata != NULL);
assert(darr->data != NULL);
return darr;
}
void wn_darr_deinit(wn_darr *dynamic_array) {
assert(dynamic_array->metadata != NULL);
assert(dynamic_array->data != NULL);
arena_deinit(dynamic_array->metadata);
arena_deinit(dynamic_array->data);
}
// TODO: This
void wn_darr_append(wn_darr *dynamic_array, void *data, size_t data_size) {}