From 154bf6f53529e88dfa03d6ff5034b575f92cdbb5 Mon Sep 17 00:00:00 2001 From: nasr Date: Tue, 14 Apr 2026 23:11:49 +0200 Subject: feature(setup): base implementation --- source/base/base_arena.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 source/base/base_arena.h (limited to 'source/base/base_arena.h') diff --git a/source/base/base_arena.h b/source/base/base_arena.h new file mode 100755 index 0000000..dc6dd73 --- /dev/null +++ b/source/base/base_arena.h @@ -0,0 +1,31 @@ +#ifndef BASE_ARENA_H +#define BASE_ARENA_H + +#define Align(pointer, alignment) align((u64)(pointer), (umm)(alignment)) +#define PushStruct(arena, type) (type *)arena_alloc((arena), sizeof(type), 0) +#define PushStructZero(arena, type) (type *)arena_alloc((arena), sizeof(type), 1) +#define PushArray(arena, type, len) (type *)arena_alloc((arena), sizeof(type) * (len), 0) +#define PushArrayZero(arena, type, len) (type *)arena_alloc((arena), sizeof(type) * (len), 1) + +#define KiB(n) (((u64)(n)) << 10) +#define MiB(n) (((u64)(n)) << 20) +#define GiB(n) (((u64)(n)) << 30) + + +typedef struct mem_arena mem_arena; +struct mem_arena +{ + u64 current_position; + u64 previous_position; + u64 capacity; + u8 *base_position; +}; + +typedef struct temp_arena temp_arena; +struct temp_arena +{ + mem_arena *arena; + u64 start_position; +}; + +#endif /* BASE_ARENA_H */ -- cgit v1.3