24 lines
537 B
C
24 lines
537 B
C
#ifndef ARENA_H
|
|
#define ARENA_H
|
|
|
|
#include <stddef.h>
|
|
|
|
typedef struct arena arena_t;
|
|
|
|
// Arena allocator for request-scoped allocations
|
|
struct arena {
|
|
char *buf; // memory buffer
|
|
size_t size; // total size
|
|
size_t used; // bytes used
|
|
arena_t *next; // for chaining arenas (future)
|
|
};
|
|
|
|
// Arena operations
|
|
arena_t* arena_new(size_t size);
|
|
void arena_free(arena_t *a);
|
|
void* arena_alloc(arena_t *a, size_t size);
|
|
char* arena_strdup(arena_t *a, const char *s, size_t len);
|
|
void arena_reset(arena_t *a);
|
|
|
|
#endif // ARENA_H
|