diff options
| author | 0x221e <x221e@0xinfinity.dev> | 2026-06-22 13:18:43 +0300 |
|---|---|---|
| committer | 0x221e <x221e@0xinfinity.dev> | 2026-06-22 13:22:10 +0300 |
| commit | ad5d641ad41f415cca3cc01c88bc063319aba937 (patch) | |
| tree | f03b2c0116bb41535e2fe7aa11294948b66e99c8 /include/lib | |
| parent | 45f4a6afd2a5683fa53f9d6787e3c5b0f70229fd (diff) | |
| download | metalc-master.tar.gz | |
lex: add bang
passes: add initial debug pass
Diffstat (limited to 'include/lib')
| -rw-r--r-- | include/lib/arena.h | 31 | ||||
| -rw-r--r-- | include/lib/vector.h | 2 |
2 files changed, 32 insertions, 1 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 diff --git a/include/lib/vector.h b/include/lib/vector.h index 33e5b97..e0cc523 100644 --- a/include/lib/vector.h +++ b/include/lib/vector.h @@ -16,6 +16,6 @@ struct vector { int vector_init(struct vector *v); int vector_resize(struct vector *v, size_t nc); int vector_emplace_back(struct vector *v, void *p); -int vector_deinit(struct vector *v); +int vector_free(struct vector *v); #endif |
