From bd49bd525f4c6c6c15c4142bf42d1dd38be6fc16 Mon Sep 17 00:00:00 2001 From: pryazha Date: Sun, 19 Jan 2025 17:33:44 +0500 Subject: initial commit --- libs/pwyazh/memory.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 libs/pwyazh/memory.h (limited to 'libs/pwyazh/memory.h') diff --git a/libs/pwyazh/memory.h b/libs/pwyazh/memory.h new file mode 100644 index 0000000..6f741b7 --- /dev/null +++ b/libs/pwyazh/memory.h @@ -0,0 +1,41 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#include + +Arena * +arena_alloc(U64 capacity) +{ + Arena *result = 0; + result = malloc(sizeof(Arena)); + Assert(result); + result->memory = malloc(capacity); + Assert(result->memory); + result->capacity = capacity; + result->used = 0; + return(result); +} + +void +arena_release(Arena *arena) +{ + free(arena->memory); + arena->memory = 0; + arena->capacity = 0; + arena->used = 0; + free(arena); +} + +void * +arena_push_size(Arena *arena, U64 size) +{ + Assert(arena->used+size <= arena->capacity); + void *result = arena->memory+arena->used; + arena->used += size; + return(result); +} + +#define ArenaPushStruct(arena, element) arena_push_size(arena, sizeof(*(element)) +#define ArenaPushArray(arena, array) arena_push_size(arena, sizeof(array)) + +#endif /* MEMORY_H */ -- cgit v1.2.3