Add stack allocator
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user