From 6ca18697f9eb332c38f0b46b823089ce80347580 Mon Sep 17 00:00:00 2001 From: sanine Date: Sun, 27 Nov 2022 20:03:27 -0600 Subject: add dynamic array functions --- src/util.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/util.c (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..7b8120b --- /dev/null +++ b/src/util.c @@ -0,0 +1,39 @@ +#include + +#include +#include "util.h" + +void * kai_next_array_element(void **array, size_t *count, size_t *max, size_t sz) +{ + void *array_new = NULL; + if (*max == 0) { + array_new = malloc(sz); + *count = 1; + *max = 1; + } + else if (*count == *max) { + array_new = realloc(*array, 2*(*max)*sz); + *count += 1; + *max *= 2; + } + else { + array_new = *array; + *count += 1; + } + + if (array_new == NULL) + return NULL; + + *array = array_new; + return array_new + ((*count-1) * sz); +} + + +ka_node_t * kai_next_node(kalmia_t *k) +{ + return kai_next_array_element( + (void**) &(k->node), + &(k->n_nodes), &(k->n_nodes_max), + sizeof(ka_node_t) + ); +} -- cgit v1.2.1