summaryrefslogtreecommitdiff
path: root/jrk.h
diff options
context:
space:
mode:
authorJake Koroman <jake@jakekoroman.com>2025-09-09 19:31:59 -0400
committerJake Koroman <jake@jakekoroman.com>2025-09-09 19:31:59 -0400
commit28dfbe162b48059c1b3ad99b0c56fb2d9100e8cf (patch)
treed37c167a089b72b9f1fdc753c5b391df0320d441 /jrk.h
parent0a62235e16263adfe0be3a90c578a50e3277ed9b (diff)
add jrk_return_defer and remove assert from jrk_da_free.
Diffstat (limited to 'jrk.h')
-rw-r--r--jrk.h23
1 files 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 <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