diff options
author | Ren Kararou <[email protected]> | 2025-01-31 01:34:25 -0600 |
---|---|---|
committer | Ren Kararou <[email protected]> | 2025-01-31 01:34:25 -0600 |
commit | 7f6011bc44e0d7643b3f1eafefbd4fa1390c1661 (patch) | |
tree | a2e6980561800fc70ad36642ebd19eccf5ff343a /inc/resarr.h | |
parent | 46ac53232eaec4c9e52ba42524c9a749090d963f (diff) | |
download | libspicy-7f6011bc44e0d7643b3f1eafefbd4fa1390c1661.tar.gz libspicy-7f6011bc44e0d7643b3f1eafefbd4fa1390c1661.tar.bz2 libspicy-7f6011bc44e0d7643b3f1eafefbd4fa1390c1661.zip |
implement the easy parts of resizable array
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 + |