From 0ee2fe88746ca646b1173feaa11798a1d2cbafdb Mon Sep 17 00:00:00 2001 From: Seoxi Ryouko Date: Tue, 18 Aug 2026 08:12:49 -0500 Subject: [PATCH] ugh --- Makefile | 4 ++-- a.out | Bin 23872 -> 0 bytes libkeke_array.c | 15 ++++++++++++--- libkeke_symbol.c | 2 +- test_array.c | 4 ++-- 5 files changed, 17 insertions(+), 8 deletions(-) delete mode 100755 a.out diff --git a/Makefile b/Makefile index 39b6c56..85f4843 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -CC = clang -CFLAGS = -O2 -Wall -Wextra -Wno-c2x-extensions +CC = zig cc +CFLAGS = -O2 -std=c23 #-Wall -Wextra -Wno-c2x-extensions test_array: $(CC) $(CFLAGS) -o test_array test_array.c libkeke_array.c ./test_array diff --git a/a.out b/a.out deleted file mode 100755 index 8d8a0f551dca697360e9cec19ade56b9a56cd19f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23872 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 ZGaJ!vKfU&|v2elY4MKjKO~6)U{{uiR=0^Yk diff --git a/libkeke_array.c b/libkeke_array.c index 30fda9b..98b4e2f 100644 --- a/libkeke_array.c +++ b/libkeke_array.c @@ -27,8 +27,7 @@ KekeArray *keke_array_alloc(size_t initial_len, size_t type_size) { array->type_size = type_size; array->max_len = max_len; - array->content = malloc(max_len * type_size); - memset(array->content, 0, max_len * type_size); + array->content = calloc(max_len, type_size); return array; } @@ -37,7 +36,6 @@ void keke_array_free(KekeArray *array) { free(array); } - void keke_array_set(KekeArray *array, size_t index, const void *value) { if(index >= array->max_len) { array->content = realloc(array->content, (array->max_len << 1) * array->type_size); @@ -74,6 +72,11 @@ void keke_array_set_len(KekeArray *array, size_t new_len) { } void keke_array_insert(KekeArray *array, size_t index, const void *value) { + if(array->len + 1 > array->max_len) { + array->content = realloc(array->content, (array->max_len << 1) * array->type_size); + memset(array->content + array->max_len * array->type_size, 0, array->max_len * array->type_size); + array->max_len <<= 1; + } keke_array_set_len(array, array->len + 1); memmove(array->content + ((index + 1) * array->type_size), array->content + (index * array->type_size), (array->len - index - 1) * array->type_size); memcpy(array->content + index * array->type_size, value, array->type_size); @@ -98,6 +101,12 @@ void keke_array_delete(KekeArray *array, size_t index) { memmove(array->content + (index * array->type_size), array->content + ((index + 1) * array->type_size), (array->len - index + 1) * array->type_size); } +void keke_array_swap_delete(KekeArray *array, size_t index) { + size_t new_len = array->len - 1; + keke_swap(ARRAY_GET(array, index), ARRAY_GET(array, new_len), array->type_size); + keke_array_set_len(array, new_len); +} + KekeArray *keke_array_yoink(KekeArray *array, size_t start_index, size_t len) { if(start_index + len >= array->len) return NULL; KekeArray *ret = keke_array_alloc(len, array->type_size); diff --git a/libkeke_symbol.c b/libkeke_symbol.c index bbe4828..8eea560 100644 --- a/libkeke_symbol.c +++ b/libkeke_symbol.c @@ -1,7 +1,7 @@ #include #include "libkeke_symbol.h" -static KekeSymbol iota = KEKE_NULL_SYMBOL + 1; +static _Atomic KekeSymbol iota = KEKE_NULL_SYMBOL + 1; KekeSymbol keke_new_symbol() { return iota++; diff --git a/test_array.c b/test_array.c index dd3da74..513a285 100644 --- a/test_array.c +++ b/test_array.c @@ -48,7 +48,7 @@ int main(void) { puts("Expected value:\n9, 8, 3, 2, 1, 0,"); keke_array_foreach(array, output); puts("\n"); - + const int k = 100; keke_array_insert(array2, 2, &k); puts("Expected value:\n7, 6, 100, 5, 4,"); @@ -123,7 +123,7 @@ int main(void) { j = 0; keke_array_reduce(array4, add, &j); printf("Expected value:\n7\n%d\n\n", j); - + keke_array_free(array); keke_array_free(array2); keke_array_free(array4);