From 90d6b2a866c6da29921dfae3d684203fd232ea74 Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Wed, 22 Oct 2025 12:26:19 -0400 Subject: some improvements --- array.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'array.c') diff --git a/array.c b/array.c index 7120899..4345346 100644 --- a/array.c +++ b/array.c @@ -43,6 +43,23 @@ void* array_add_(void* array, size_t item_size) { return &(info[1]); } +void array_resize(void* array, size_t size) { + array_info* info = &((array_info*)array)[-1]; + info->size = size; + if (size > info->capacity) { + info->capacity = size; + + // round up to next power of 2 + info->capacity--; + info->capacity |= info->capacity >> 1; + info->capacity |= info->capacity >> 2; + info->capacity |= info->capacity >> 4; + info->capacity |= info->capacity >> 8; + info->capacity |= info->capacity >> 16; + info->capacity++; + } +} + void array_print(void* array) { array_info* info = &((array_info*)array)[-1]; printf( "size: %lu\n" -- cgit v1.2.3