diff options
Diffstat (limited to 'inc/resarr.h')
-rw-r--r-- | inc/resarr.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/inc/resarr.h b/inc/resarr.h new file mode 100644 index 0000000..92a1f85 --- /dev/null +++ b/inc/resarr.h @@ -0,0 +1,29 @@ +#ifndef LIBSPICY_RESARR_H +#define LIBSPICY_RESARR_H + +#include <stdlib.h> + +typedef struct ResArr { + size_t elemsize; + size_t elemcount; + size_t allocsize; + void *array; +} stype_resarr; + +#define resarr_access(arr, idx) ((idx) <= (arr).size ? (arr).array[(idx)] : NULL ) + +stype_resarr resarr_create(size_t elemsize); +int resarr_reserve(stype_resarr *arr, size_t elemcount); +int resarr_reserve_exact(stype_resarr *arr, size_t elemcount); +int resarr_push(stype_resarr *arr, void *elem); +int resarr_pop(stype_resarr *arr); +size_t resarr_size(stype_resarr arr); +int resarr_insert(stype_resarr *arr, void *elem, size_t before, size_t count); +int resarr_insert_single(stype_resarr *arr, void *elem, size_t before); +int resarr_delete(stype_resarr *arr, size_t start, size_t end); +int resarr_swap(stype_resarr *first, stype_resarr *second); +int resarr_clear(stype_resarr arr); +int resarr_destroy(stype_resarr *arr); + +#endif + |