From 60585faf7951cffb6046280bdd5f91275fb97d65 Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Sun, 12 Oct 2025 00:07:02 -0400 Subject: input buffer and key repeat --- array.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 array.c (limited to 'array.c') diff --git a/array.c b/array.c new file mode 100644 index 0000000..aa25e93 --- /dev/null +++ b/array.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include "array.h" + + +array_info* array_new_(size_t item_size, size_t capacity) { + array_info* info = calloc(1, sizeof(array_info) + item_size * capacity); + info->capacity = capacity; + return info; +} + +void* array_add_(void* array, size_t item_size) { + array_info* info = NULL; + if (!array) { + info = array_new_(item_size, 8); + } + else { + info = ((array_info*)array) - 1; + } + if (info->size == info->capacity) { + info->capacity <<= 1; + info = realloc(info, sizeof(array_info) + (info->capacity * item_size)); + } + info->size++; + return &(info[1]); +} + +void array_print(void* array) { + array_info* info = &((array_info*)array)[-1]; + printf( "size: %lu\n" + "capacity: %lu\n" + "array: %p\n", + info->size, + info->capacity, + info->array); +} + +void array_pop(void* array) { + array_info* info = &((array_info*)array)[-1]; + if (info->size) + info->size--; +} -- cgit v1.2.3