7 #include "system/memory.h"
8 #include "system/stacktrace.h"
10 #define DYNARRAY_CAPACITY 256
19 Dynarray create_dynarray_malloc(size_t element_size)
22 .element_size = element_size,
24 .data = malloc(DYNARRAY_CAPACITY * element_size)
26 trace_assert(result.data);
31 Dynarray create_dynarray(Memory *memory, size_t element_size)
35 .element_size = element_size,
37 .data = memory_alloc(memory, DYNARRAY_CAPACITY * element_size)
43 Dynarray clone_dynarray(Memory *memory, Dynarray dynarray)
47 .element_size = dynarray.element_size,
48 .count = dynarray.count,
49 .data = memory_alloc(memory, DYNARRAY_CAPACITY * dynarray.element_size)
51 memcpy(result.data, dynarray.data, dynarray.element_size * DYNARRAY_CAPACITY);
55 void *dynarray_pointer_at(const Dynarray *dynarray, size_t index);
56 void dynarray_replace_at(Dynarray *dynarray, size_t index, void *element);
57 void dynarray_copy_to(Dynarray *dynarray, void *dest, size_t index);
58 void dynarray_clear(Dynarray *dynarray);
60 // TODO(#981): dynarray_push should be called dynarray_push_copy
61 int dynarray_push(Dynarray *dynarray, const void *element);
62 int dynarray_push_empty(Dynarray *dynarray);
63 void dynarray_pop(Dynarray *dynarray, void *element);
64 bool dynarray_contains(const Dynarray *dynarray,
67 void dynarray_swap(Dynarray *dynarray, size_t i, size_t j);
70 void dynarray_delete_at(Dynarray *dynarray, size_t index);
71 void dynarray_insert_before(Dynarray *dynarray, size_t index, void *element);