Files
Arena/include/arena.h
LaEntropiaa 47c0a04166 feat and fix: Made arena_init use malloc and added arena_destroy
Realized that if i want to use malloc and free i either have to make some
sort of interface that lets you use a custom allocator and deallocator
or just use them by default. Maybe later it would be cool to change it
to that but for now is out of the scope of my project.

# Tipos:
# feat, fix, refactor, docs, style, test, chore
2026-03-29 18:00:57 -06:00

49 lines
896 B
C

#ifndef ARENA_H
#define ARENA_H
#include <stdint.h>
#include <stdlib.h>
#include <inttypes.h>
#include <stdbool.h>
typedef struct {
void *data;
size_t size;
size_t offset;
} Arena;
typedef enum {
ARENA_OK,
ARENA_BAD_ALLOC,
ARENA_OUT_OF_SPACE,
ARENA_NULL_ARG,
ARENA_INVALID_SIZE,
} ArenaErr;
typedef struct {
bool is_valid;
union {
ArenaErr err;
void *pointer;
};
} ArenaPointer;
typedef struct {
bool is_valid;
union {
ArenaErr err;
Arena arena;
};
} ArenaResult;
ArenaResult arena_init(size_t size);
void arena_destroy(Arena *arena);
ArenaPointer arena_alloc(Arena *arena, size_t size, size_t alignment);
ArenaErr arena_push(Arena *arena, void *data, size_t size);
ArenaErr arena_realloc(Arena *arena, size_t new_size);
size_t align_arena_offset(Arena *arena, size_t alignment);
#endif // !ARENA_H