#ifndef LTYPES_ARRAY_H #define LTYPES_ARRAY_H #include "version.h" #include typedef struct { size_t count; size_t capacity; void** items; } LArray; LArray* l_array_create(); void l_array_delete(LArray* array); int l_array_append(LArray* array, void* item); void l_array_clear(LArray* array); #ifdef L_ARRAY_IMPLEMENTATION #include LArray* l_array_create() { return (LArray*) calloc(1, sizeof(LArray)); } void l_array_delete(LArray* array) { free(array); } int l_array_append(LArray* array, void* item) { if (array->count >= array->capacity) { if (array->capacity == 0) array->capacity = 8; else array->capacity *= 2; array->items = realloc(array->items, array->capacity * sizeof(*array->items)); } array->items[array->count++] = item; return 0; } void l_array_clear(LArray* array) { free(array->items); array->items = NULL; array->capacity = 0; array->count = 0; } #endif #endif