Initial commit
This commit is contained in:
20
include/arena.h
Normal file
20
include/arena.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user