summaryrefslogtreecommitdiff
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..23dc664
--- /dev/null
+++ b/src/arena.h
@@ -0,0 +1,23 @@
1#ifndef __VXGG_REWRITE___ARENA_H___25077218513438___
2#define __VXGG_REWRITE___ARENA_H___25077218513438___
3
4#include <stddef.h>
5
6typedef struct arena arena;
7typedef arena simplearena;
8
9#define ISPOWOF2(x) (((x) & ((x) - 1)) == 0)
10const size_t MEM_ALIGN_BYTES = (2 * sizeof(void*));
11#define MEM_ALIGN(x) ((x) + (((x) & (MEM_ALIGN_BYTES - 1)) != 0) * (MEM_ALIGN_BYTES - ((x) & (MEM_ALIGN_BYTES - 1))))
12
13int arena_init(arena **a, size_t bytes);
14void* arena_alloc(arena * const arena, size_t bytes);
15int arena_free(arena **arena);
16int arena_clear(arena **arena);
17
18int simplearena_init(simplearena **a, size_t bytes);
19void* simplearena_alloc(simplearena * const a, size_t bytes);
20int simplearena_free(simplearena **a);
21int simplearena_free(simplearena **a);
22
23#endif \ No newline at end of file