summaryrefslogtreecommitdiff
path: root/source/base/base_arena.h
diff options
context:
space:
mode:
authornasr <nsrddyn@gmail.com>2026-03-13 22:31:21 +0100
committernasr <nsrddyn@gmail.com>2026-03-13 22:31:21 +0100
commit444bfa2f41143aff7490e4fa21565947565b7d30 (patch)
tree696b06d40140c85805d171597e37deb8290ead73 /source/base/base_arena.h
parent3913d1778318cd0c6bfb871148d38abb33ec7fd3 (diff)
cleanup: generalisation
Diffstat (limited to 'source/base/base_arena.h')
-rwxr-xr-xsource/base/base_arena.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/source/base/base_arena.h b/source/base/base_arena.h
new file mode 100755
index 0000000..71d9e69
--- /dev/null
+++ b/source/base/base_arena.h
@@ -0,0 +1,41 @@
1#ifndef ARENA_H
2#define ARENA_H
3
4#define Align(pointer, alignment) align((u64)(pointer), (umm)(alignment))
5#define PushStruct(arena, type) (type *)arena_alloc((arena), sizeof(type))
6#define PushArray(arena, type, len) (type *)arena_alloc((arena), sizeof(type) * (len))
7#define PushString(arena, len) (s8 *)arena_alloc((arena), sizeof(s8)*len))
8
9typedef struct mem_arena mem_arena;
10typedef struct temp_arena temp_arena;
11
12struct mem_arena
13{
14 u64 current_position;
15 u64 previous_position;
16 u64 capacity;
17 u8 *base_position;
18};
19
20struct temp_arena
21{
22 mem_arena *arena;
23 u64 start_position;
24};
25
26internal mem_arena *
27arena_resize_align(
28 mem_arena *arena,
29 void *old_memory,
30 u64 new_size,
31 u64 old_size,
32 umm alignment);
33
34internal mem_arena *
35arena_resize(
36 mem_arena *arena,
37 void *old_memory,
38 u64 new_size,
39 u64 old_size);
40
41#endif