summaryrefslogtreecommitdiff
path: root/mem/allocator.h
diff options
context:
space:
mode:
Diffstat (limited to 'mem/allocator.h')
-rw-r--r--mem/allocator.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/mem/allocator.h b/mem/allocator.h
new file mode 100644
index 0000000..535965a
--- /dev/null
+++ b/mem/allocator.h
@@ -0,0 +1,23 @@
+#ifndef MEM_ALLOCATOR_H
+#define MEM_ALLOCATOR_H
+
+#include <rt.h>
+
+typedef struct mem_allocator MemAllocator;
+
+typedef void *(*MemAlloc)(MemAllocator *, usize);
+typedef void *(*MemRealloc)(MemAllocator *, void *, usize);
+typedef void (*MemFree)(MemAllocator *, void *);
+
+/* Abstract object representing an allocator */
+struct mem_allocator {
+ MemAlloc alloc;
+ MemRealloc realloc;
+ MemFree free;
+};
+
+void *mem_alloc(MemAllocator *self, usize n);
+void *mem_realloc(MemAllocator *self, void *ptr, usize n);
+void mem_free(MemAllocator *self, void *ptr);
+
+#endif \ No newline at end of file