#ifndef VL_ARENA_H_INCLUDED #define VL_ARENA_H_INCLUDED /* implements a basic arena allocator */ #include #include typedef struct vl__arena_tag vl_arena; /* returns NULL if an arena could not be allocated */ vl_arena *vl_arena_new(size_t cap); /* aborts if the arena is overflowing */ void *vl_arena_push(vl_arena *parena, size_t len); /* resets the arena (but does not free it) */ void vl_arena_reset(vl_arena *parena); /* frees the arena */ void vl_arena_free(vl_arena *parena); char *vl_arena_strdup(vl_arena *parena, const char *str); char *vl_arena_sprintf(vl_arena *parena, const char *fmt, ...); char *vl_arena_vsprintf(vl_arena *parena, const char *fmt, va_list ap); #endif /* include guard */