]> git.lizzy.rs Git - nothing.git/blob - src/dynarray.h
(#1047) Make the level reload from the level editor
[nothing.git] / src / dynarray.h
1 #ifndef DYNARRAY_H_
2 #define DYNARRAY_H_
3
4 #include <stdbool.h>
5
6 typedef struct Dynarray Dynarray;
7
8 Dynarray *create_dynarray(size_t element_size);
9 void destroy_dynarray(Dynarray *dynarray);
10
11 size_t dynarray_count(const Dynarray *dynarray);
12 void *dynarray_data(Dynarray *dynarray);
13 void *dynarray_pointer_at(Dynarray *dynarray, size_t index);
14 void dynarray_replace_at(Dynarray *dynarray, size_t index, void *element);
15 void dynarray_copy_to(Dynarray *dynarray, void *dest, size_t index);
16 void dynarray_clear(Dynarray *dynarray);
17 // O(1) amortized
18 // TODO(#981): dynarray_push should be called dynarray_push_copy
19 int dynarray_push(Dynarray *dynarray, const void *element);
20 int dynarray_push_empty(Dynarray *dynarray);
21 void dynarray_pop(Dynarray *dynarray, void *element);
22 bool dynarray_contains(const Dynarray *dynarray,
23                        const void *element);
24 // O(N)
25 void dynarray_delete_at(Dynarray *dynarray, size_t index);
26 void dynarray_insert_before(Dynarray *dynarray, size_t index, void *element);
27
28 #endif  // DYNARRAY_H_