summaryrefslogtreecommitdiff
path: root/include/lib/arena.h
diff options
context:
space:
mode:
author0x221e <x221e@0xinfinity.dev>2026-06-22 13:18:43 +0300
committer0x221e <x221e@0xinfinity.dev>2026-06-22 13:22:10 +0300
commitad5d641ad41f415cca3cc01c88bc063319aba937 (patch)
treef03b2c0116bb41535e2fe7aa11294948b66e99c8 /include/lib/arena.h
parent45f4a6afd2a5683fa53f9d6787e3c5b0f70229fd (diff)
downloadmetalc-master.tar.gz
parser: add unary, and binary operationsHEADmaster
lex: add bang passes: add initial debug pass
Diffstat (limited to 'include/lib/arena.h')
-rw-r--r--include/lib/arena.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/lib/arena.h b/include/lib/arena.h
new file mode 100644
index 0000000..9d3cb38
--- /dev/null
+++ b/include/lib/arena.h
@@ -0,0 +1,31 @@
+/**
+ * @file arena.h
+ * @author x221e
+ * @brief linear arena-allocation without relocation
+ * @description
+ * This will be a linear arena allocation,
+ * no free functionality exists right now.
+ *
+ * @todo create a larger arena structure that would hold regions
+ */
+
+#ifndef ARENA_H
+#define ARENA_H
+
+#include <stddef.h>
+
+// 2 MiB regions
+#define REGION_MAX_CAPACITY 1024*1024*2
+
+struct region { // or arena?
+ size_t capacity;
+ size_t size;
+ void *end;
+ void *start;
+};
+
+int region_init(struct region *r);
+void *region_alloc(struct region *r, size_t b);
+int region_pop(struct region *r, size_t b);
+
+#endif