diff --git a/erray.c b/erray.c new file mode 100644 index 0000000..2f1d5f2 --- /dev/null +++ b/erray.c @@ -0,0 +1,31 @@ +#include "erray.h" + +void chicken_array_extend(Chicken_Array array, void *item) { + if (1 + array.length == array.size) { + array.items = reallocarray(array.items, array.length + 1, sizeof(void *)); + if (array.items) { + array.length++; + } else { + errx(9, "Malloc error"); + } + } +} + +Chicken_Array get_chicken_array(int length) { + Chicken_Array array; + if (length != 0) { + array.items = calloc(length, sizeof(void*)); + if (!array.items) { + errx(9, "Malloc error"); + } + } + array.length = 0; + array.size = length; + return array; +} + +/* Frees a heap array */ +void delete_chicken_array(Chicken_Array *array) { + free(array->items); + free(array); +} diff --git a/erray.h b/erray.h new file mode 100644 index 0000000..b223ffc --- /dev/null +++ b/erray.h @@ -0,0 +1,16 @@ +#include +#include + +struct chicken_array { + void **items; + int length; + int size; +}; + +typedef struct chicken_array Chicken_Array; + +void chicken_array_extend(Chicken_Array, void *); +Chicken_Array get_fucked_array(int); +void delete_chicken_array(Chicken_Array *); + +