diff --git a/src/core/mem/arena/mem_arena.c b/src/core/mem/arena/mem_arena.c index 9129c97..fd6eb8d 100644 --- a/src/core/mem/arena/mem_arena.c +++ b/src/core/mem/arena/mem_arena.c @@ -95,6 +95,14 @@ void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment) { return (void *)output; } +void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size) { + return NULL; +} + +void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment) { + return NULL; +} + void wapp_mem_arena_clear(Arena *arena) { if (!arena) { return; diff --git a/src/core/mem/arena/mem_arena.h b/src/core/mem/arena/mem_arena.h index f4fddff..1eca49c 100644 --- a/src/core/mem/arena/mem_arena.h +++ b/src/core/mem/arena/mem_arena.h @@ -47,6 +47,8 @@ bool wapp_mem_arena_init_custom(Arena **arena, u64 base_capacity, MemAllocFlags flags, bool zero_buffer); void *wapp_mem_arena_alloc(Arena *arena, u64 size); void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment); +void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size); +void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment); void wapp_mem_arena_clear(Arena *arena); void wapp_mem_arena_destroy(Arena **arena); diff --git a/src/core/mem/arena/mem_arena_allocator.c b/src/core/mem/arena/mem_arena_allocator.c index da0829c..2aee280 100644 --- a/src/core/mem/arena/mem_arena_allocator.c +++ b/src/core/mem/arena/mem_arena_allocator.c @@ -8,8 +8,10 @@ /***************************************************************************/ // internal inline void *mem_arena_alloc(u64 size, void *alloc_obj); -internal inline void *mem_arena_alloc_aligned(u64 size, u64 alignment, - void *alloc_obj); +internal inline void *mem_arena_alloc_aligned(u64 size, u64 alignment, void *alloc_obj); +internal inline void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj); +internal inline void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment, + void *alloc_obj); /***************************************************************************/ // //////////////////////////////////////////////////////////////////////////////// @@ -29,6 +31,8 @@ Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, allocator.alloc = mem_arena_alloc; allocator.alloc_aligned = mem_arena_alloc_aligned; + allocator.realloc = mem_arena_realloc; + allocator.realloc_aligned = mem_arena_realloc_aligned; return allocator; } @@ -58,3 +62,14 @@ internal inline void *mem_arena_alloc_aligned(u64 size, u64 alignment, Arena *arena = (Arena *)alloc_obj; return wapp_mem_arena_alloc_aligned(arena, size, alignment); } + +internal inline void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj) { + Arena *arena = (Arena *)alloc_obj; + return wapp_mem_arena_realloc(arena, ptr, old_size, new_size); +} + +internal inline void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment, + void *alloc_obj) { + Arena *arena = (Arena *)alloc_obj; + return wapp_mem_arena_realloc_aligned(arena, ptr, old_size, new_size, alignment); +} diff --git a/src/core/mem/arena/mem_arena_allocator.h b/src/core/mem/arena/mem_arena_allocator.h index 9b738e3..bd77b6d 100644 --- a/src/core/mem/arena/mem_arena_allocator.h +++ b/src/core/mem/arena/mem_arena_allocator.h @@ -46,9 +46,7 @@ extern "C" { * The `wapp_mem_arena_allocator_init_custom` provides the most control over how * the Arena is initialised. Wrapper macros are provided for easier use. */ -Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, - MemAllocFlags flags, - bool zero_buffer); +Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, bool zero_buffer); void wapp_mem_arena_allocator_clear(Allocator *allocator); void wapp_mem_arena_allocator_destroy(Allocator *allocator);