aboutsummaryrefslogtreecommitdiff
path: root/src/arena.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/arena.h')
-rw-r--r--src/arena.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/arena.h b/src/arena.h
new file mode 100644
index 0000000..80636e2
--- /dev/null
+++ b/src/arena.h
@@ -0,0 +1,23 @@
+#ifndef ALGDS_ARENA_H_
+#define ALGDS_ARENA_H_
+
+struct memblock {
+ void *buf;
+ int sz;
+ int cap;
+ struct memblock *next;
+};
+typedef struct memblock memblock_t;
+
+struct arena {
+ struct memblock head;
+ struct memblock *current;
+ int blocksz;
+};
+typedef struct arena arena_t;
+
+void init_arena(arena_t *r, int blocksz);
+void destroy_arena(arena_t *r);
+void *arena_alloc(arena_t *r, int sz);
+
+#endif