nothing/src/dynarray.h
2019-08-26 00:06:35 +07:00

29 lines
1.0 KiB
C

#ifndef DYNARRAY_H_
#define DYNARRAY_H_
#include <stdbool.h>
typedef struct Dynarray Dynarray;
Dynarray *create_dynarray(size_t element_size);
void destroy_dynarray(Dynarray *dynarray);
size_t dynarray_count(const Dynarray *dynarray);
void *dynarray_data(Dynarray *dynarray);
void *dynarray_pointer_at(Dynarray *dynarray, size_t index);
void dynarray_replace_at(Dynarray *dynarray, size_t index, void *element);
void dynarray_copy_to(Dynarray *dynarray, void *dest, size_t index);
void dynarray_clear(Dynarray *dynarray);
// O(1) amortized
// TODO(#981): dynarray_push should be called dynarray_push_copy
int dynarray_push(Dynarray *dynarray, const void *element);
int dynarray_push_empty(Dynarray *dynarray);
void dynarray_pop(Dynarray *dynarray, void *element);
bool dynarray_contains(const Dynarray *dynarray,
const void *element);
// O(N)
void dynarray_delete_at(Dynarray *dynarray, size_t index);
void dynarray_insert_before(Dynarray *dynarray, size_t index, void *element);
#endif // DYNARRAY_H_