update array names to be shorter

This commit is contained in:
2025-12-09 17:49:23 +01:00
parent e3bfde5826
commit f579ddc3cb
3 changed files with 54 additions and 50 deletions
+23 -19
View File
@@ -119,38 +119,42 @@ typedef struct dyn_array_create_func_args {
int line; int line;
} dyn_array_create_func_args_t; } dyn_array_create_func_args_t;
void *dyn_array_create_func(dyn_array_create_func_args_t args); void *dyn_array_create_func(dyn_array_create_func_args_t args);
#define dyn_array_create(ALLOCATOR, TYPE, ...) \
((TYPE *)dyn_array_create_func( \ #define make_arr(ALLOCATOR, TYPE, ...) ((TYPE *)dyn_array_create_func((dyn_array_create_func_args_t){ \
(dyn_array_create_func_args_t){.allocator = ALLOCATOR, \ .allocator = ALLOCATOR, \
.itemsize = sizeof(TYPE), \ .itemsize = sizeof(TYPE), \
.file = __FILE__, \ .file = __FILE__, \
.line = __LINE__, \ .line = __LINE__, \
__VA_ARGS__})) __VA_ARGS__ \
}))
// Always reassign the array. if multiple variables reference the same growing // Always reassign the array. if multiple variables reference the same growing
// array, then you should be using pointer pointers. // array, then you should be using pointer pointers.
void *dyn_array_grow_func(void *this, size_t n_new_items, const char *file, int line); void *dyn_array_grow_func(void *this, size_t n_new_items, const char *file, int line);
void dyn_array_shrink_func(void *this, size_t n_items_to_remove, const char *file, int line); void dyn_array_shrink_func(void *this, size_t n_items_to_remove, const char *file, int line);
#define dyn_array_grow(THIS, N_NEW_ITEMS) \ #define arr_grow(THIS, N_NEW_ITEMS) \
dyn_array_grow_func(THIS, N_NEW_ITEMS, __FILE__, __LINE__) dyn_array_grow_func(THIS, N_NEW_ITEMS, __FILE__, __LINE__)
#define dyn_array_shrink(THIS, N_ITEMS_TO_REMOVE) \ #define arr_shrink(THIS, N_ITEMS_TO_REMOVE) \
dyn_array_shrink_func(THIS, N_ITEMS_TO_REMOVE, __FILE__, __LINE__) dyn_array_shrink_func(THIS, N_ITEMS_TO_REMOVE, __FILE__, __LINE__)
#define dyn_array_reset(THIS) \ #define arr_reset(THIS)\
do { \ do {\
dyn_array_shrink(THIS, dyn_array_length(THIS)); \ dyn_array_header_t *header = PTR_FROM_FIELD_PTR(dyn_array_header_t, bytes, THIS);\
header->size = 0;\
} while (0) } while (0)
size_t dyn_array_length(void *this); size_t arr_len(void *this);
size_t dyn_array_capacity(void *this); size_t arr_cap(void *this);
#define dyn_array_append(THIS, VAL) do { \ #define arr_append(THIS, VAL) do { \
THIS = dyn_array_grow(THIS, 1); \ THIS = arr_grow(THIS, 1); \
THIS[dyn_array_length(THIS)-1] = VAL; \ THIS[arr_len(THIS)-1] = VAL; \
} while(0) } while(0)
#define dyn_array_pop(THIS) (dyn_array_shrink(THIS, 1), THIS[dyn_array_length(THIS)])
#define arr_pop(THIS) (arr_shrink(THIS, 1), THIS[arr_len(THIS)])
// CLI ///////////////////////////////////////////////////////////////////////// // CLI /////////////////////////////////////////////////////////////////////////
+2 -2
View File
@@ -70,7 +70,7 @@ static inline void *todo_remove_grow_func(void *this, size_t n_new_items, const
} }
void dyn_array_shrink_func(void *this, size_t n_items_to_remove, const char *file, int line) { void dyn_array_shrink_func(void *this, size_t n_items_to_remove, const char *file, int line) {
if (dyn_array_length(this) < n_items_to_remove) { if (arr_len(this) < n_items_to_remove) {
fprintf( fprintf(
stderr, stderr,
"%s:%d: tried to remove more items than contained in dynamic array.\n", "%s:%d: tried to remove more items than contained in dynamic array.\n",
@@ -83,7 +83,7 @@ void dyn_array_shrink_func(void *this, size_t n_items_to_remove, const char *fil
header->size -= n_items_to_remove; header->size -= n_items_to_remove;
} }
size_t dyn_array_length(void *this) { size_t arr_len(void *this) {
if (this == NULL) { return 0; } if (this == NULL) { return 0; }
dyn_array_header_t *header = PTR_FROM_FIELD_PTR(dyn_array_header_t, bytes, this); dyn_array_header_t *header = PTR_FROM_FIELD_PTR(dyn_array_header_t, bytes, this);
return header->size; return header->size;
+29 -29
View File
@@ -6,19 +6,19 @@
Test(dynamic_arrays, append) { Test(dynamic_arrays, append) {
with_borrow(alloc) { with_borrow(alloc) {
int *numbers = dyn_array_create(alloc, int); int *numbers = make_arr(alloc, int);
dyn_array_append(numbers, 40); arr_append(numbers, 40);
dyn_array_append(numbers, 41); arr_append(numbers, 41);
dyn_array_append(numbers, 42); arr_append(numbers, 42);
dyn_array_append(numbers, 43); arr_append(numbers, 43);
dyn_array_append(numbers, 44); arr_append(numbers, 44);
dyn_array_append(numbers, 45); arr_append(numbers, 45);
dyn_array_append(numbers, 46); arr_append(numbers, 46);
dyn_array_append(numbers, 47); arr_append(numbers, 47);
dyn_array_append(numbers, 48); arr_append(numbers, 48);
dyn_array_append(numbers, 49); arr_append(numbers, 49);
dyn_array_append(numbers, 50); arr_append(numbers, 50);
for (int i = 0; i < (int)dyn_array_length(numbers); i++) { for (int i = 0; i < (int)arr_len(numbers); i++) {
cr_assert_eq(numbers[i], i+40); cr_assert_eq(numbers[i], i+40);
} }
} }
@@ -26,26 +26,26 @@ Test(dynamic_arrays, append) {
Test(dynamic_arrays, pop) { Test(dynamic_arrays, pop) {
with_borrow(alloc) { with_borrow(alloc) {
int *numbers = dyn_array_create(alloc, int); int *numbers = make_arr(alloc, int);
dyn_array_append(numbers, 40); arr_append(numbers, 40);
dyn_array_append(numbers, 41); arr_append(numbers, 41);
dyn_array_append(numbers, 42); arr_append(numbers, 42);
dyn_array_append(numbers, 43); arr_append(numbers, 43);
dyn_array_append(numbers, 44); arr_append(numbers, 44);
dyn_array_append(numbers, 45); arr_append(numbers, 45);
dyn_array_append(numbers, 46); arr_append(numbers, 46);
dyn_array_append(numbers, 47); arr_append(numbers, 47);
dyn_array_append(numbers, 48); arr_append(numbers, 48);
dyn_array_append(numbers, 49); arr_append(numbers, 49);
dyn_array_append(numbers, 50); arr_append(numbers, 50);
cr_assert_eq(dyn_array_length(numbers), 11); cr_assert_eq(arr_len(numbers), 11);
// NOTE: you can stack for loops to have scoped variables you can abuse // NOTE: you can stack for loops to have scoped variables you can abuse
// in macros. e.g. // in macros. e.g.
// for (TYPE UNIQUE = (int)dyn_array_length(numbers); UNIQUE != 0; UNIQUE = 0;) // for (TYPE UNIQUE = (int)arr_len(numbers); UNIQUE != 0; UNIQUE = 0;)
// for (int i = 0, i < UNIQUE; i++) // for (int i = 0, i < UNIQUE; i++)
int len = (int)dyn_array_length(numbers); int len = (int)arr_len(numbers);
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
int num = dyn_array_pop(numbers); int num = arr_pop(numbers);
cr_assert_eq(num, 50-i); cr_assert_eq(num, 50-i);
} }
} }