From 7f6011bc44e0d7643b3f1eafefbd4fa1390c1661 Mon Sep 17 00:00:00 2001 From: Ren Kararou Date: Fri, 31 Jan 2025 01:34:25 -0600 Subject: implement the easy parts of resizable array --- inc/resarr.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 inc/resarr.h (limited to 'inc/resarr.h') 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 + +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 + -- cgit 1.4.1-2-gfad0