#include "arraylist.h" #include #include #include ArrayListResult arraylist_init(size_t capacity, size_t elem_size) { if (capacity == 0) { return (ArrayListResult) { .is_valid = false, .err = ARRLIST_INVALID_CAPACITY}; } if (elem_size == 0) { return (ArrayListResult) { .is_valid = false, .err = ARRLIST_INVALID_ELEM_SIZE, }; } ArrayList arr = { .data = malloc(capacity * elem_size), .capacity = capacity, .elem_size = elem_size, .len = 0 }; if (arr.data == NULL) { return (ArrayListResult) { .is_valid = false, .err = ARRLIST_BAD_ALLOC, }; } return (ArrayListResult) {.is_valid = true, .array = arr}; } ArrayListErr arraylist_destroy(ArrayList *arr) { if (arr == NULL) { return ARRLIST_NULL_ARG; } arr->capacity = 0; arr->elem_size = 0; arr->len = 0; free(arr->data); arr->data = NULL; return ARRLIST_OK; } ArrayListErr arraylist_clear(ArrayList *arr) { if (arr == NULL) { return ARRLIST_NULL_ARG; } memset(arr->data, 0, arr->capacity * arr->elem_size); arr->capacity = 0; arr->elem_size = 0; arr->len = 0; return ARRLIST_OK; }