Came up with a basic structure for a dynamic array

This commit is contained in:
Warwick 2026-02-06 09:47:01 +00:00
parent 4390e80b26
commit 44a7a95ae9
2 changed files with 41 additions and 0 deletions

27
src/dynamic_array.c Normal file
View file

@ -0,0 +1,27 @@
#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) {}

14
src/dynamic_array.h Normal file
View file

@ -0,0 +1,14 @@
#pragma once
#include "arena_allocator.h"
#include <stddef.h>
typedef struct wn_darr {
Arena *metadata;
Arena *data;
size_t count;
} wn_darr;
wn_darr *wn_darr_init(Arena *arena, size_t object_size, size_t object_number);
void wn_darr_deinit(wn_darr *dynamic_array);
void wn_darr_append(wn_darr *dynamic_array, void *data, size_t data_size);