diff --git a/src/arraylist.c b/src/arraylist.c index e76acbf..a147a0e 100644 --- a/src/arraylist.c +++ b/src/arraylist.c @@ -553,3 +553,27 @@ ArrayListErr arrayslice_next(ArraySlice *slice, void *out) { slice->current++; return ARRLIST_OK; } + +ArrayListErr arrayslice_reset(ArraySlice *slice) { + if (slice == NULL) { + return ARRLIST_NULL_ARG; + } + + slice->current = slice->start; + + return ARRLIST_OK; +} + +ArrayListErr arrayslice_advance(ArraySlice *slice, size_t n) { + if (slice == NULL) { + return ARRLIST_NULL_ARG; + } + + if (n > SIZE_MAX - slice->current || slice->current + n >= slice->end) { + return ARRLIST_OUT_OF_BOUNDS; + } + + slice->current += n; + + return ARRLIST_OK; +}