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
 |