Code cleanup
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 17 May 2020 16:45:59 +0000 (11:45 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Sun, 17 May 2020 16:45:59 +0000 (11:45 -0500)
bh.h

diff --git a/bh.h b/bh.h
index 68924702078473e410563f213f3b7e875ef18201..f4d89cfbc9fc6ac20d2671d4aa62854947742fb1 100644 (file)
--- a/bh.h
+++ b/bh.h
@@ -173,18 +173,18 @@ BH_ALLOCATOR_PROC(bh_heap_allocator_proc);
 
 
 
-// NOFREE ALLOCATOR
-
+// ARENA ALLOCATOR
 typedef struct bh_arena {
+       bh_allocator backing;
        ptr memory;
        ptr next_allocation;
        isize size, total_size; // in bytes
 } bh_arena;
 
-BH_ALLOCATOR_PROC(bh_arena_allocator_proc);
-void bh_arena_init(bh_arena* alloc, isize total_size);
+void bh_arena_init(bh_arena* alloc, bh_allocator backing, isize total_size);
 void bh_arena_free(bh_arena* alloc);
 bh_allocator bh_arena_allocator(bh_arena* alloc);
+BH_ALLOCATOR_PROC(bh_arena_allocator_proc);
 
 
 
@@ -649,7 +649,31 @@ BH_ALLOCATOR_PROC(bh_heap_allocator_proc) {
 
 
 
-// NOFREE ALLOCATOR IMPLEMENTATION
+// ARENA ALLOCATOR IMPLEMENTATION
+void bh_arena_init(bh_arena* alloc, bh_allocator backing, isize total_size) {
+       ptr data = bh_alloc(backing, total_size);
+
+       alloc->backing = backing;
+       alloc->total_size = total_size;
+       alloc->size = 0;
+       alloc->memory = data;
+       alloc->next_allocation = data;
+}
+
+void bh_arena_free(bh_arena* alloc) {
+       bh_free(alloc->backing, alloc->memory);
+       alloc->memory = NULL;
+       alloc->next_allocation = NULL;
+       alloc->total_size = 0;
+       alloc->size = 0;
+}
+
+bh_allocator bh_arena_allocator(bh_arena* alloc) {
+       return (bh_allocator) {
+               .proc = bh_arena_allocator_proc,
+               .data = alloc,
+       };
+}
 
 BH_ALLOCATOR_PROC(bh_arena_allocator_proc) {
        bh_arena* alloc_nf = (bh_arena*) data;
@@ -684,32 +708,6 @@ BH_ALLOCATOR_PROC(bh_arena_allocator_proc) {
        return retval;
 }
 
-void bh_arena_init(bh_arena* alloc, isize total_size) {
-       ptr data = malloc(total_size);
-
-       alloc->total_size = total_size;
-       alloc->size = 0;
-       alloc->memory = data;
-       alloc->next_allocation = data;
-}
-
-void bh_arena_free(bh_arena* alloc) {
-       free(alloc->memory);
-       alloc->memory = NULL;
-       alloc->next_allocation = NULL;
-       alloc->total_size = 0;
-       alloc->size = 0;
-}
-
-bh_allocator bh_arena_allocator(bh_arena* alloc) {
-       return (bh_allocator) {
-               .proc = bh_arena_allocator_proc,
-               .data = alloc,
-       };
-}
-
-
-