added find, more tests

This commit is contained in:
2026-08-18 09:08:01 -05:00
parent 0ee2fe8874
commit a1862f54c1
9 changed files with 69 additions and 19 deletions
+9 -3
View File
@@ -19,11 +19,9 @@ typedef struct {
#define ARRAY_GET(array, i) ((array)->content + (array)->type_size * (i))
KekeArray *keke_array_alloc(size_t initial_len, size_t type_size) {
//if(initial_len == 0) initial_len = 1;
KekeArray *array = malloc(sizeof(*array));
array->len = initial_len;
size_t max_len = 1;
while(initial_len >>= 1) max_len <<= 1;
size_t max_len = next_power_of_two(initial_len);
array->type_size = type_size;
array->max_len = max_len;
@@ -170,6 +168,14 @@ bool keke_array_all(KekeArray *array, Test_func test) {
return ret;
}
void *keke_array_find(KekeArray *array, Test_func test) {
for(size_t i = 0; i < array->len; i++) {
void *current = ARRAY_GET(array, i);
if(test(current, i, array)) return current;
}
return NULL;
}
KekeArray *keke_array_filter(KekeArray *array, Test_func test) {
KekeArray *ret = keke_array_alloc(0, array->type_size);
for(size_t i = 0; i < array->len; i++) {