Came up with a basic structure for a dynamic array
This commit is contained in:
parent
4390e80b26
commit
44a7a95ae9
2 changed files with 41 additions and 0 deletions
27
src/dynamic_array.c
Normal file
27
src/dynamic_array.c
Normal 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
14
src/dynamic_array.h
Normal 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);
|
||||||
Loading…
Reference in a new issue