Files
r/src/core/memory.h
T

32 lines
757 B
C
Raw Normal View History

// retoor <retoor@molodetz.nl>
#ifndef R_MEMORY_H
#define R_MEMORY_H
#include <stddef.h>
typedef struct arena_t {
char *current_block;
size_t block_size;
size_t block_used;
size_t block_count;
struct arena_block *blocks;
} arena_t;
typedef struct arena_block {
char *data;
size_t size;
struct arena_block *next;
} arena_block_t;
arena_t *arena_create(size_t chunk_size);
void *arena_alloc(arena_t *arena, size_t size);
char *arena_strdup(arena_t *arena, const char *str);
void arena_reset(arena_t *arena);
void arena_destroy(arena_t *arena);
#define ARENA_ALLOC(arena, type) ((type *)arena_alloc(arena, sizeof(type)))
#define ARENA_ARRAY(arena, type, count) ((type *)arena_alloc(arena, sizeof(type) * (count)))
#endif