aboutsummaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authorJack Jamison <jackqjamison@gmail.com>2025-10-22 12:26:19 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-10-22 12:26:19 -0400
commit90d6b2a866c6da29921dfae3d684203fd232ea74 (patch)
treeb7e95964708bc81c3237a8d67c3d27309fa88637 /array.c
parenta3117976dc912a35575c1c5813a480001cd8b789 (diff)
some improvements
Diffstat (limited to 'array.c')
-rw-r--r--array.c17
1 files changed, 17 insertions, 0 deletions
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"