From 379074924fcee1954cac0f7d43da3ad356032291 Mon Sep 17 00:00:00 2001 From: alistair Date: Sat, 13 Jun 2020 20:00:19 +1000 Subject: [PATCH] arrays, for later refactor --- erray.c | 31 +++++++++++++++++++++++++++++++ erray.h | 16 ++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 erray.c create mode 100644 erray.h 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 *); + +