From 04a52e34551768e8fed0c12322b99fdd62d06842 Mon Sep 17 00:00:00 2001 From: laentropia Date: Sun, 19 Apr 2026 21:57:28 -0600 Subject: [PATCH] addtition: Added function declarations --- include/arraylist.h | 23 ++++++++++++++++++++++- src/arraylist.c | 3 ++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/include/arraylist.h b/include/arraylist.h index e461e3a..93df972 100644 --- a/include/arraylist.h +++ b/include/arraylist.h @@ -7,7 +7,7 @@ typedef struct ArrayList ArrayList; -typedef struct ArrayListSlice ArrayListSlice; +typedef struct ArraySlice ArraySlice; typedef enum { ARRLIST_OK = 0, @@ -24,6 +24,7 @@ typedef enum { ArrayList *arraylist_init(size_t capacity, size_t elem_size); ArrayListErr arraylist_destroy(ArrayList **arr); ArrayListErr arraylist_clear(ArrayList *arr); +ArrayList *arraylist_copy(ArrayList *arr); size_t arraylist_size(const ArrayList *arr); size_t arraylist_capacity(const ArrayList *arr); @@ -44,4 +45,24 @@ ArrayListErr arraylist_set(ArrayList *arr, size_t index, void *data); ArrayListErr arraylist_resize(ArrayList *arr, size_t new_capacity); ArrayListErr arraylist_reserve(ArrayList *arr, size_t size_to_reserve); +//Slice stuff +ArraySlice *arraylist_slice(ArrayList *arr, size_t start, size_t len); +ArraySlice *arraylist_slice_unsafe(ArrayList *arr, size_t start, size_t len); +ArrayListErr arrayslice_destroy(ArraySlice **slice); + +bool arrayslice_is_valid(ArraySlice *slice); +size_t arrayslice_size(ArraySlice *slice); +bool arrayslice_empty(ArraySlice *slice); + +// peek and next can be null, get can't, like, why would you use get without +// actually getting something?, for validating an index?, use size idiot +ArrayListErr *arrayslice_peek(ArraySlice *slice, void *out); +ArrayListErr *arrayslice_next(ArraySlice *slice, void *out); +ArrayListErr *arrayslice_get(ArraySlice *slice, void *out); + +ArrayListErr *arrayslice_reset(ArraySlice *slice); +ArrayListErr *arrayslice_advance(ArraySlice *slice, size_t n); + +ArrayList *arrayslice_to_arraylist(ArraySlice *slice); + #endif diff --git a/src/arraylist.c b/src/arraylist.c index b7300ad..01d0001 100644 --- a/src/arraylist.c +++ b/src/arraylist.c @@ -9,9 +9,10 @@ struct ArrayList{ size_t capacity; size_t len; size_t elem_size; + size_t borrows; }; -struct ArrayListSlice { +struct ArraySlice { ArrayList *arr; size_t start; size_t end;