blob: fa1674b206bd969561270a293c83e2575b91de80 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#ifndef VL_ARENA_H_INCLUDED
#define VL_ARENA_H_INCLUDED
/* implements a basic arena allocator */
#include <stddef.h>
#include <stdarg.h>
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 */
|