diff options
| author | Jake Koroman <jake@jakekoroman.com> | 2025-09-09 19:31:59 -0400 |
|---|---|---|
| committer | Jake Koroman <jake@jakekoroman.com> | 2025-09-09 19:31:59 -0400 |
| commit | 28dfbe162b48059c1b3ad99b0c56fb2d9100e8cf (patch) | |
| tree | d37c167a089b72b9f1fdc753c5b391df0320d441 | |
| parent | 0a62235e16263adfe0be3a90c578a50e3277ed9b (diff) | |
add jrk_return_defer and remove assert from jrk_da_free.
| -rw-r--r-- | jrk.h | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -6,6 +6,7 @@ * must be a better way of handling things. */ +#include <stdbool.h> #include <stdint.h> #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 |
