From 28dfbe162b48059c1b3ad99b0c56fb2d9100e8cf Mon Sep 17 00:00:00 2001 From: Jake Koroman Date: Tue, 9 Sep 2025 19:31:59 -0400 Subject: add jrk_return_defer and remove assert from jrk_da_free. --- jrk.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/jrk.h b/jrk.h index 02d86da..802bd3d 100644 --- a/jrk.h +++ b/jrk.h @@ -6,6 +6,7 @@ * must be a better way of handling things. */ +#include #include #ifdef JRK_IMPLEMENTATION_WITH_SHORTNAMES @@ -29,8 +30,15 @@ typedef double f64; #define JRK_UNUSED(x) (void)x #define JRK_ARRSIZE(arr) (sizeof(arr) / sizeof(arr[0])) +#define jrk_return_defer(value) \ + do { result = value; goto defer; } while(0) + +#define JRK_KILOBYTES(x) ((u64)x*1024) +#define JRK_MEGABYTES(x) (JRK_KILOBYTES((u64)x*1024)) +#define JRK_GIGABYTES(x) (JRK_MEGABYTES((u64)x*1024)) + #define JRK_TMPSTRINGS_ARR_CAPACITY 4 -#define JRK_TMPSTRINGS_STR_CAPACITY 1024 +#define JRK_TMPSTRINGS_STR_CAPACITY JRK_KILOBYTES(1) typedef struct { u8 *data; @@ -135,10 +143,10 @@ char *jrk_tmpstrings_pushf(char *, ...); }; \ typedef struct name name -#define jrk_da_free(da) \ - do { \ - jrk_assert((da).items, "bad free: jrk_da_free da.items is NULL"); \ - free((da).items); \ +#define jrk_da_free(da) \ + do { \ + if ((da).items) \ + free((da).items); \ } while (0) #define jrk_da_foreach(type,it,da) for (type *it = (da)->items; it < (da)->items + (da)->count; ++it) @@ -158,6 +166,11 @@ char *jrk_tmpstrings_pushf(char *, ...); #ifdef JRK_SHORTNAMES #define UNUSED JRK_UNUSED #define ARRSIZE JRK_ARRSIZE + #define KILOBYTES JRK_KILOBYTES + #define MEGABYTES JRK_MEGABYTES + #define GIGABYTES JRK_GIGABYTES + + #define return_defer jrk_return_defer #define Arena jrk_Arena #define StringBuilder jrk_StringBuilder -- cgit v1.2.3