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
 |