Add stack allocator
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "map.h"
|
||||
|
||||
#include "../core/logger.h"
|
||||
#include "../core/memory.h"
|
||||
#include "../memory/memory.h"
|
||||
#include "../math/vec2i.h"
|
||||
|
||||
#include <cute_tiled.h>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "tileset.h"
|
||||
#include "../core/memory.h"
|
||||
#include "../memory/memory.h"
|
||||
|
||||
BzTileset BZ_TILESET_INVALID = {.isValid = false};
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "memory.h"
|
||||
|
||||
#include "logger.h"
|
||||
#include "../core/logger.h"
|
||||
|
||||
#include <malloc.h>
|
||||
#include <memory.h>
|
||||
34
engine/breeze/memory/stack_alloc.c
Normal file
34
engine/breeze/memory/stack_alloc.c
Normal file
@@ -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;
|
||||
}
|
||||
18
engine/breeze/memory/stack_alloc.h
Normal file
18
engine/breeze/memory/stack_alloc.h
Normal file
@@ -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
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "array.h"
|
||||
|
||||
#include "../core/memory.h"
|
||||
#include "../memory//memory.h"
|
||||
|
||||
typedef struct BzArrayHead {
|
||||
i32 capacity;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "heap.h"
|
||||
|
||||
#include "../core/memory.h"
|
||||
#include "../memory/memory.h"
|
||||
|
||||
typedef struct BzHeapHead {
|
||||
i32 capacity;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "object_pool.h"
|
||||
|
||||
#include "../core/memory.h"
|
||||
#include "../memory/memory.h"
|
||||
|
||||
typedef struct BzObjectPool {
|
||||
void *objects;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "spatial_grid.h"
|
||||
|
||||
#include "../core/memory.h"
|
||||
#include "../memory/memory.h"
|
||||
#include "array.h"
|
||||
#include "object_pool.h"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include <breeze/core/logger.h>
|
||||
#include <breeze/core/memory.h>
|
||||
#include <breeze/memory/memory.h>
|
||||
|
||||
#if 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user