#include "dynarray.h" struct dyn_array { char **array; size_t size; size_t capacity; }; DynArray *dynarray_init(size_t initial_capacity) { DynArray *da = malloc(sizeof(DynArray)); da->size = 0; da->capacity = initial_capacity; return da; } void dynarray_add(DynArray *da, const char *s) { // An empty dynarray does not have an allocated internal array yet if (da->size == 0) { da->array = malloc(sizeof(char*) * da->capacity); } // Double array size if it's full else if (da->size == da->capacity) { da->array = realloc(da->array, da->capacity * 2); da->capacity *= 2; } da->array[da->size] = strdup(s); da->size++; } void dynarray_free(DynArray *da) { if (da == NULL) { return; } if (da->array != NULL) { for (size_t i = 0; i < da->size; i++) { free(da->array[i]); } free(da->array); } free(da); } char **dynarray_convert(DynArray *da) { char **array = da->array; da->array = NULL; dynarray_free(da); return array; }