diff options
author | WormHeamer | 2025-02-10 02:00:02 -0500 |
---|---|---|
committer | WormHeamer | 2025-02-10 02:00:02 -0500 |
commit | 299e2d107eaebc45117c8ac6072bd860e2e4f9be (patch) | |
tree | b82b984a59df5fd95e2c7ca8e07bc2d854eeb24a | |
parent | c762664ef5990c6e8684d5d8a34f811b18df0465 (diff) |
add DA_INIT_SIZE
-rw-r--r-- | dynarr.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/dynarr.h b/dynarr.h index f8e5f20..46a77f9 100644 --- a/dynarr.h +++ b/dynarr.h @@ -13,14 +13,17 @@ typedef struct { size_t count, capacity; } DynArrHeader; #define DYNARR(type) type * #define DA_HEADER(da) ((DynArrHeader*)(da) - 1) -#define DA_INIT_CAP 16 -#define DA_INIT(da) do {\ - char *da_init_ptr = ((char*)malloc(sizeof(DynArrHeader) + DA_INIT_CAP * sizeof(*da)));\ +#define DA_DEFAULT_INIT_SIZE 16 + +#define DA_INIT_SIZE(da, sz) do {\ + char *da_init_ptr = ((char*)malloc(sizeof(DynArrHeader) + sz * sizeof(*da)));\ if (!da_init_ptr) err(1, "dynamic array allocation failed");\ da = (void *)(da_init_ptr + sizeof(DynArrHeader));\ - *DA_HEADER(da) = (DynArrHeader) { 0, DA_INIT_CAP };\ + *DA_HEADER(da) = (DynArrHeader) { 0, sz };\ } while(0) +#define DA_INIT(da) DA_INIT_SIZE(da, DA_DEFAULT_INIT_SIZE) + #define DA_FREE(da)\ free(DA_HEADER(da)) |