]> git.lizzy.rs Git - nothing.git/blob - src/dynarray.h
Merge pull request #1009 from The-Renaissance/master
[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_clear(Dynarray *dynarray);
14 // O(1) amortized
15 // TODO(#981): dynarray_push should be called dynarray_push_copy
16 int dynarray_push(Dynarray *dynarray, const void *element);
17 int dynarray_push_empty(Dynarray *dynarray);
18 void dynarray_pop(Dynarray *dynarray, void *element);
19 bool dynarray_contains(const Dynarray *dynarray,
20                        const void *element);
21 // O(N)
22 void dynarray_delete_at(Dynarray *dynarray, size_t index);
23
24 #endif  // DYNARRAY_H_