Files
ArrayList/src/arraylist.c

61 lines
1.3 KiB
C
Raw Normal View History

#include "arraylist.h"
#include <stdbool.h>
#include <stdlib.h>
2026-04-14 19:33:15 -06:00
#include <string.h>
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};
}
2026-04-14 19:33:15 -06:00
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;
}