summaryrefslogtreecommitdiff
path: root/base/base_arena.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/base_arena.h')
-rw-r--r--base/base_arena.h49
1 files changed, 0 insertions, 49 deletions
diff --git a/base/base_arena.h b/base/base_arena.h
deleted file mode 100644
index 19c4f3d..0000000
--- a/base/base_arena.h
+++ /dev/null
@@ -1,49 +0,0 @@
1#ifndef ARENA_H
2#define ARENA_H
3
4#include "base.h"
5
6/**
7 * Arena Helper macro's
8 * */
9
10#define MIN(a, b) (((a) < (b)) ? (a) : (b))
11#define MAX(a, b) (((a) > (b)) ? (a) : (b))
12#define ALIGN_UP_POW2(n, p) (((u64)(n) + ((u64)(p) - 1)) & (~((u64)(p) - 1)))
13
14#define PUSH_STRUCT(arena, T) (T *)arena_push((arena), sizeof(T), 0)
15#define PUSH_STRUCT_NZ(arena, T) (T *)arena_push((arena), sizeof(T), 1)
16#define PUSH_ARRAY(arena, T, n) (T *)arena_push((arena), sizeof(T) * (n), 0)
17#define PUSH_ARRAY_NZ(arena, T, n) (T *)arena_push((arena), sizeof(T) * (n), 1)
18
19#define ARENA_BASE_POS (sizeof(mem_arena))
20#define ARENA_ALIGN (sizeof(void *))
21
22typedef struct mem_arena mem_arena;
23
24struct mem_arena
25{
26 u64 capacity;
27 u64 pos;
28};
29
30local_internal mem_arena *
31arena_create(u64 capacity);
32
33local_internal void
34arena_destroy(mem_arena *arena);
35
36local_internal void *
37arena_push(mem_arena *arena, u64 size, b32 non_zero);
38
39local_internal void
40arena_pop(mem_arena *arena, u64 size);
41
42local_internal void
43arena_pop_to(mem_arena *arena, u64 pos);
44
45local_internal void
46arena_clear(mem_arena *arena);
47
48
49#endif