Add stack allocator

This commit is contained in:
2023-12-07 10:31:12 +01:00
parent 488dccfada
commit 0d156f515e
13 changed files with 69 additions and 11 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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>

View File

@@ -2,7 +2,7 @@
#include <stdio.h>
#include "tileset.h"
#include "../core/memory.h"
#include "../memory/memory.h"
BzTileset BZ_TILESET_INVALID = {.isValid = false};

View File

@@ -1,6 +1,6 @@
#include "memory.h"
#include "logger.h"
#include "../core/logger.h"
#include <malloc.h>
#include <memory.h>

View 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;
}

View 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

View File

@@ -1,6 +1,6 @@
#include "array.h"
#include "../core/memory.h"
#include "../memory//memory.h"
typedef struct BzArrayHead {
i32 capacity;

View File

@@ -1,6 +1,6 @@
#include "heap.h"
#include "../core/memory.h"
#include "../memory/memory.h"
typedef struct BzHeapHead {
i32 capacity;

View File

@@ -1,6 +1,6 @@
#include "object_pool.h"
#include "../core/memory.h"
#include "../memory/memory.h"
typedef struct BzObjectPool {
void *objects;

View File

@@ -1,6 +1,6 @@
#include "spatial_grid.h"
#include "../core/memory.h"
#include "../memory/memory.h"
#include "array.h"
#include "object_pool.h"

View File

@@ -1,5 +1,5 @@
#include <breeze/core/logger.h>
#include <breeze/core/memory.h>
#include <breeze/memory/memory.h>
#if 1