// retoor #ifndef R_MEMORY_H #define R_MEMORY_H #include 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