diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 9ce4561..4093471 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -33,9 +33,11 @@ set(libraryDirs set(BreezeSources breeze/core/logger.c - breeze/core/memory.c breeze/core/module_system.c + breeze/memory/memory.c + breeze/memory/stack_alloc.c + breeze/map/map.c breeze/map/tileset.c @@ -48,10 +50,12 @@ set(BreezeSources set(BreezeHeaders breeze/core/logger.h - breeze/core/memory.h breeze/math/vec2i.h + breeze/memory/memory.h + breeze/memory/stack_alloc.h + breeze/map/map.h breeze/map/tileset.h diff --git a/engine/breeze.h b/engine/breeze.h index 19aed4d..913a92e 100644 --- a/engine/breeze.h +++ b/engine/breeze.h @@ -2,10 +2,12 @@ #define BREEZE_H #include "breeze/core/logger.h" -#include "breeze/core/memory.h" #include "breeze/math/vec2i.h" +#include "breeze/memory/memory.h" +#include "breeze/memory/stack_alloc.h" + #include "breeze/util/array.h" #include "breeze/util/heap.h" #include "breeze/util/object_pool.h" diff --git a/engine/breeze/map/map.c b/engine/breeze/map/map.c index 1848bbf..222ef3c 100644 --- a/engine/breeze/map/map.c +++ b/engine/breeze/map/map.c @@ -1,7 +1,7 @@ #include "map.h" #include "../core/logger.h" -#include "../core/memory.h" +#include "../memory/memory.h" #include "../math/vec2i.h" #include diff --git a/engine/breeze/map/tileset.c b/engine/breeze/map/tileset.c index ea3903d..ae6471a 100644 --- a/engine/breeze/map/tileset.c +++ b/engine/breeze/map/tileset.c @@ -2,7 +2,7 @@ #include #include "tileset.h" -#include "../core/memory.h" +#include "../memory/memory.h" BzTileset BZ_TILESET_INVALID = {.isValid = false}; diff --git a/engine/breeze/core/memory.c b/engine/breeze/memory/memory.c similarity index 97% rename from engine/breeze/core/memory.c rename to engine/breeze/memory/memory.c index 4a82dc0..72090c4 100644 --- a/engine/breeze/core/memory.c +++ b/engine/breeze/memory/memory.c @@ -1,6 +1,6 @@ #include "memory.h" -#include "logger.h" +#include "../core/logger.h" #include #include diff --git a/engine/breeze/core/memory.h b/engine/breeze/memory/memory.h similarity index 100% rename from engine/breeze/core/memory.h rename to engine/breeze/memory/memory.h diff --git a/engine/breeze/memory/stack_alloc.c b/engine/breeze/memory/stack_alloc.c new file mode 100644 index 0000000..b9da496 --- /dev/null +++ b/engine/breeze/memory/stack_alloc.c @@ -0,0 +1,34 @@ +#include "stack_alloc.h" + +#include "memory.h" + +BzStackAlloc bzStackAllocCreate(size_t size) { + BzStackAlloc alloc = { + .memory=bzAlloc(size), + .size=size, + .allocated=0 + }; + BZ_ASSERT(alloc.memory); + + return alloc; +} + +void bzStackAllocDestroy(BzStackAlloc *alloc) { + bzFree(alloc->memory); + alloc->memory = NULL; + alloc->size = 0; + alloc->allocated = 0; +} + +void *bzStackAlloc(BzStackAlloc *alloc, size_t numBytes) { + BZ_ASSERT(alloc->size + numBytes < alloc->size); + void *allocated = (u8 *) alloc->memory + alloc->allocated; + alloc->allocated += numBytes; + return allocated; +} + +void bzStackAllocFree(BzStackAlloc *alloc, void *ptr) { + size_t byteOffset = (u8 *) ptr - (u8 *) alloc->memory; + BZ_ASSERT(byteOffset >= 0 && byteOffset < alloc->size); + alloc->allocated = byteOffset; +} diff --git a/engine/breeze/memory/stack_alloc.h b/engine/breeze/memory/stack_alloc.h new file mode 100644 index 0000000..9c11223 --- /dev/null +++ b/engine/breeze/memory/stack_alloc.h @@ -0,0 +1,18 @@ +#ifndef BREEZE_STACK_ALLOC_H +#define BREEZE_STACK_ALLOC_H + +#include "../defines.h" + +typedef struct BzStackAlloc { + void *memory; + size_t size; + size_t allocated; +} BzStackAlloc; + +BzStackAlloc bzStackAllocCreate(size_t size); +void bzStackAllocDestroy(BzStackAlloc *alloc); + +void *bzStackAlloc(BzStackAlloc *alloc, size_t numBytes); +void bzStackAllocFree(BzStackAlloc *alloc, void *ptr); + +#endif //BREEZE_STACK_ALLOC_H diff --git a/engine/breeze/util/array.c b/engine/breeze/util/array.c index 004b01e..cd8319b 100644 --- a/engine/breeze/util/array.c +++ b/engine/breeze/util/array.c @@ -1,6 +1,6 @@ #include "array.h" -#include "../core/memory.h" +#include "../memory//memory.h" typedef struct BzArrayHead { i32 capacity; diff --git a/engine/breeze/util/heap.c b/engine/breeze/util/heap.c index 19029e8..1ab01bd 100644 --- a/engine/breeze/util/heap.c +++ b/engine/breeze/util/heap.c @@ -1,6 +1,6 @@ #include "heap.h" -#include "../core/memory.h" +#include "../memory/memory.h" typedef struct BzHeapHead { i32 capacity; diff --git a/engine/breeze/util/object_pool.c b/engine/breeze/util/object_pool.c index 25ef9ea..c56fe0d 100644 --- a/engine/breeze/util/object_pool.c +++ b/engine/breeze/util/object_pool.c @@ -1,6 +1,6 @@ #include "object_pool.h" -#include "../core/memory.h" +#include "../memory/memory.h" typedef struct BzObjectPool { void *objects; diff --git a/engine/breeze/util/spatial_grid.c b/engine/breeze/util/spatial_grid.c index ad902a9..bc8e88a 100644 --- a/engine/breeze/util/spatial_grid.c +++ b/engine/breeze/util/spatial_grid.c @@ -1,6 +1,6 @@ #include "spatial_grid.h" -#include "../core/memory.h" +#include "../memory/memory.h" #include "array.h" #include "object_pool.h" diff --git a/engine/libs/cute_tiled/cute_tiled.c b/engine/libs/cute_tiled/cute_tiled.c index 5665be1..a453936 100644 --- a/engine/libs/cute_tiled/cute_tiled.c +++ b/engine/libs/cute_tiled/cute_tiled.c @@ -1,5 +1,5 @@ #include -#include +#include #if 1