diff options
author | fschildt <florian.schildt@protonmail.com> | 2025-08-22 15:23:11 +0200 |
---|---|---|
committer | fschildt <florian.schildt@protonmail.com> | 2025-08-22 15:23:11 +0200 |
commit | 2050c0e0576f05156f192aa4caf48834d2f28b14 (patch) | |
tree | ee58bd35b0df0a1bacfbc9700ed99ce80c99294e /src/basic/arena.h |
Diffstat (limited to 'src/basic/arena.h')
-rw-r--r-- | src/basic/arena.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/basic/arena.h b/src/basic/arena.h new file mode 100644 index 0000000..f13ccfa --- /dev/null +++ b/src/basic/arena.h @@ -0,0 +1,36 @@ +#ifndef ARENA_H +#define ARENA_H + + +#include <basic/basic.h> + +typedef struct { + size_t size_used; + size_t size_max; + u8 *memory; +} Arena; + + +typedef struct { + Arena *arena; + u64 pos; +} ArenaTmp; + + +void arena_init(Arena *arena, u64 size); +void arena_deinit(Arena *arena); + +void arena_align(Arena *arena, u64 alignment); +void* arena_push(Arena *arena, u64 size); +void arena_pop_to(Arena *arena, u64 pos); +void arena_pop_size(Arena *arena, u64 size); + +void arena_zero(Arena *arena); +void arena_clear(Arena *arena); + + +ArenaTmp arena_tmp_begin(Arena *arena); +void arena_tmp_end(ArenaTmp tmp); + + +#endif // MEM_ARENA_H |