Start implementing realloc functions for Arena allocator
This commit is contained in:
parent
95c47ec940
commit
a0dfe8acd0
@ -95,6 +95,14 @@ void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment) {
|
|||||||
return (void *)output;
|
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) {
|
void wapp_mem_arena_clear(Arena *arena) {
|
||||||
if (!arena) {
|
if (!arena) {
|
||||||
return;
|
return;
|
||||||
|
@ -47,6 +47,8 @@ bool wapp_mem_arena_init_custom(Arena **arena, u64 base_capacity,
|
|||||||
MemAllocFlags flags, bool zero_buffer);
|
MemAllocFlags flags, bool zero_buffer);
|
||||||
void *wapp_mem_arena_alloc(Arena *arena, u64 size);
|
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_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_clear(Arena *arena);
|
||||||
void wapp_mem_arena_destroy(Arena **arena);
|
void wapp_mem_arena_destroy(Arena **arena);
|
||||||
|
|
||||||
|
@ -8,7 +8,9 @@
|
|||||||
/***************************************************************************/ //
|
/***************************************************************************/ //
|
||||||
|
|
||||||
internal inline void *mem_arena_alloc(u64 size, void *alloc_obj);
|
internal inline void *mem_arena_alloc(u64 size, void *alloc_obj);
|
||||||
internal inline void *mem_arena_alloc_aligned(u64 size, u64 alignment,
|
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);
|
void *alloc_obj);
|
||||||
|
|
||||||
/***************************************************************************/ //
|
/***************************************************************************/ //
|
||||||
@ -29,6 +31,8 @@ Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity,
|
|||||||
|
|
||||||
allocator.alloc = mem_arena_alloc;
|
allocator.alloc = mem_arena_alloc;
|
||||||
allocator.alloc_aligned = mem_arena_alloc_aligned;
|
allocator.alloc_aligned = mem_arena_alloc_aligned;
|
||||||
|
allocator.realloc = mem_arena_realloc;
|
||||||
|
allocator.realloc_aligned = mem_arena_realloc_aligned;
|
||||||
|
|
||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
@ -58,3 +62,14 @@ internal inline void *mem_arena_alloc_aligned(u64 size, u64 alignment,
|
|||||||
Arena *arena = (Arena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wapp_mem_arena_alloc_aligned(arena, size, alignment);
|
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);
|
||||||
|
}
|
||||||
|
@ -46,9 +46,7 @@ extern "C" {
|
|||||||
* The `wapp_mem_arena_allocator_init_custom` provides the most control over how
|
* The `wapp_mem_arena_allocator_init_custom` provides the most control over how
|
||||||
* the Arena is initialised. Wrapper macros are provided for easier use.
|
* the Arena is initialised. Wrapper macros are provided for easier use.
|
||||||
*/
|
*/
|
||||||
Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity,
|
Allocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, bool zero_buffer);
|
||||||
MemAllocFlags flags,
|
|
||||||
bool zero_buffer);
|
|
||||||
void wapp_mem_arena_allocator_clear(Allocator *allocator);
|
void wapp_mem_arena_allocator_clear(Allocator *allocator);
|
||||||
void wapp_mem_arena_allocator_destroy(Allocator *allocator);
|
void wapp_mem_arena_allocator_destroy(Allocator *allocator);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user