addition: resize and reserve, not tested

This commit is contained in:
2026-04-15 10:01:27 -06:00
parent 0fc64c2d8d
commit 1d7f9676ec
2 changed files with 42 additions and 0 deletions

View File

@@ -19,6 +19,7 @@ typedef enum {
ARRLIST_EMPTY, ARRLIST_EMPTY,
ARRLIST_NULL_ARG, ARRLIST_NULL_ARG,
ARRLIST_INVALID_ELEM_SIZE, ARRLIST_INVALID_ELEM_SIZE,
ARRLIST_INVALID_CAPACITY,
} ArrayListErr; } ArrayListErr;
ArrayList *arraylist_init(size_t capacity, size_t elem_size); ArrayList *arraylist_init(size_t capacity, size_t elem_size);

View File

@@ -319,3 +319,44 @@ ArrayListErr arraylist_set(ArrayList *arr, size_t index, void *data) {
return ARRLIST_OK; return ARRLIST_OK;
} }
ArrayListErr arraylist_resize(ArrayList *arr, size_t new_capacity) {
if (arr == NULL) {
return ARRLIST_NULL_ARG;
}
if (new_capacity < 1) {
return ARRLIST_INVALID_CAPACITY;
}
uint8_t *tmp = realloc(arr->buffer, new_capacity * arr->elem_size);
if (tmp == NULL) {
return ARRLIST_BAD_ALLOC;
}
arr->buffer = tmp;
arr->capacity = new_capacity;
return ARRLIST_OK;
}
ArrayListErr arraylist_reserve(ArrayList *arr, size_t size_to_reserve) {
if (arr == NULL) {
return ARRLIST_NULL_ARG;
}
if (size_to_reserve < 1) {
return ARRLIST_INVALID_CAPACITY;
}
uint8_t *tmp = realloc(
arr->buffer,
(arr->capacity + size_to_reserve) * arr->elem_size);
if (tmp == NULL) {
return ARRLIST_BAD_ALLOC;
}
arr->buffer = tmp;
arr->capacity += size_to_reserve;
return ARRLIST_OK;
}