21 lines
697 B
C
21 lines
697 B
C
#ifndef ARENA_INCLUDED
|
|
#define ARENA_INCLUDED
|
|
|
|
struct Arena {
|
|
unsigned char *beg;
|
|
unsigned char *end;
|
|
};
|
|
typedef struct Arena Arena;
|
|
|
|
extern void *arena_alloc(int flags, struct Arena *a, size_t nbytes,
|
|
size_t align, size_t count, const char *file, int line);
|
|
|
|
extern struct Arena arena_new(int flags, size_t cap, const char *file, int line);
|
|
extern void arena_back(struct Arena *a, void *buf, size_t len);
|
|
|
|
#define ARENA(flags, cap) arena_new((flags), (cap), __FILE__, __LINE__)
|
|
#define ARENA_BACK(a, buf, len) arena_back((a), (buf), (len))
|
|
#define ARENA_ALLOC(flags, a, nbytes, align, count) \
|
|
arena_alloc((flags), (a), (nbytes), (align), (count), __FILE__, __LINE__)
|
|
#endif
|