#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) ); }