summaryrefslogtreecommitdiff
path: root/src/ez_arena.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ez_arena.h')
-rw-r--r--src/ez_arena.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/ez_arena.h b/src/ez_arena.h
new file mode 100644
index 0000000..19def60
--- /dev/null
+++ b/src/ez_arena.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "common.h"
+
+#define EZ_ARENA_BASE_POS (sizeof(ez_arena_t))
+
+typedef struct {
+ u64 alloc_size;
+ u64 pos;
+} ez_arena_t;
+
+ez_arena_t *ez_arena_create(u64 size, b32 zero_out);
+ void *ez_arena_alloc(ez_arena_t *arena, u64 alloc_amount);
+ void *ez_arena_alloc_nz(ez_arena_t *arena, u64 alloc_amount);
+ void ez_arena_clear(ez_arena_t *arena, b32 zero_out);
+ void ez_arena_destroy(ez_arena_t *arena);
+
+#define EZA_ALLOC_ARRAY(arena, T, n) (T*)ez_arena_alloc(arena, sizeof(T) * (n))