summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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