#include <stddef.h>
#include <stdint.h>
#include <stdarg.h>
#include <stdio.h>
#include <assert.h>
Go to the source code of this file.
|
Region * | new_region (size_t capacity) |
void | free_region (Region *r) |
void * | arena_alloc (Arena *a, size_t size_bytes) |
void * | arena_realloc (Arena *a, void *oldptr, size_t oldsz, size_t newsz) |
char * | arena_strdup (Arena *a, const char *cstr) |
void * | arena_memdup (Arena *a, void *data, size_t size) |
void * | arena_memcpy (void *dest, const void *src, size_t n) |
char * | arena_sprintf (Arena *a, const char *format,...) |
char * | arena_vsprintf (Arena *a, const char *format, va_list args) |
Arena_Mark | arena_snapshot (Arena *a) |
void | arena_reset (Arena *a) |
void | arena_rewind (Arena *a, Arena_Mark m) |
void | arena_free (Arena *a) |
void | arena_trim (Arena *a) |
◆ ARENA_ASSERT
#define ARENA_ASSERT assert |
◆ ARENA_BACKEND
◆ ARENA_BACKEND_LIBC_MALLOC
#define ARENA_BACKEND_LIBC_MALLOC 0 |
◆ ARENA_BACKEND_LINUX_MMAP
#define ARENA_BACKEND_LINUX_MMAP 1 |
◆ ARENA_BACKEND_WASM_HEAPBASE
#define ARENA_BACKEND_WASM_HEAPBASE 3 |
◆ ARENA_BACKEND_WIN32_VIRTUALALLOC
#define ARENA_BACKEND_WIN32_VIRTUALALLOC 2 |
◆ arena_da_append
#define arena_da_append |
( |
| a, |
|
|
| da, |
|
|
| item ) |
Value: do { \
if ((da)->count >= (da)->capacity) { \
(a), (da)->items, \
(da)->capacity*sizeof(*(da)->items), \
new_capacity*sizeof(*(da)->items)); \
(da)->capacity = new_capacity; \
} \
\
(da)->items[(da)->count++] = (item); \
} while (0)
#define cast_ptr(...)
Definition arena.h:95
#define ARENA_DA_INIT_CAP
Definition arena.h:89
void * arena_realloc(Arena *a, void *oldptr, size_t oldsz, size_t newsz)
◆ arena_da_append_many
#define arena_da_append_many |
( |
| a, |
|
|
| da, |
|
|
| new_items, |
|
|
| new_items_count ) |
Value: do { \
if ((da)->count + (new_items_count) > (da)->capacity) { \
size_t new_capacity = (da)->capacity; \
while ((da)->count + (new_items_count) > new_capacity) new_capacity *= 2; \
(a), (da)->items, \
(da)->capacity*sizeof(*(da)->items), \
new_capacity*sizeof(*(da)->items)); \
(da)->capacity = new_capacity; \
} \
arena_memcpy((da)->items + (da)->count, (new_items), (new_items_count)*sizeof(*(da)->items)); \
(da)->count += (new_items_count); \
} while (0)
void * arena_memcpy(void *dest, const void *src, size_t n)
◆ ARENA_DA_INIT_CAP
#define ARENA_DA_INIT_CAP 256 |
◆ ARENA_REGION_DEFAULT_CAPACITY
#define ARENA_REGION_DEFAULT_CAPACITY (8*1024) |
◆ arena_sb_append_buf
◆ arena_sb_append_cstr
#define arena_sb_append_cstr |
( |
| a, |
|
|
| sb, |
|
|
| cstr ) |
Value: do { \
const char *s = (cstr); \
size_t n = arena_strlen(s); \
arena_da_append_many(a, sb, s, n); \
} while (0)
◆ arena_sb_append_null
#define arena_sb_append_null |
( |
| a, |
|
|
| sb ) |
Value:
#define arena_da_append(a, da, item)
Definition arena.h:98
◆ cast_ptr
◆ Region
typedef struct Region Region |
◆ arena_alloc()
void * arena_alloc |
( |
Arena * | a, |
|
|
size_t | size_bytes ) |
◆ arena_free()
void arena_free |
( |
Arena * | a | ) |
|
◆ arena_memcpy()
void * arena_memcpy |
( |
void * | dest, |
|
|
const void * | src, |
|
|
size_t | n ) |
◆ arena_memdup()
void * arena_memdup |
( |
Arena * | a, |
|
|
void * | data, |
|
|
size_t | size ) |
◆ arena_realloc()
void * arena_realloc |
( |
Arena * | a, |
|
|
void * | oldptr, |
|
|
size_t | oldsz, |
|
|
size_t | newsz ) |
◆ arena_reset()
void arena_reset |
( |
Arena * | a | ) |
|
◆ arena_rewind()
◆ arena_snapshot()
◆ arena_sprintf()
char * arena_sprintf |
( |
Arena * | a, |
|
|
const char * | format, |
|
|
| ... ) |
◆ arena_strdup()
char * arena_strdup |
( |
Arena * | a, |
|
|
const char * | cstr ) |
◆ arena_trim()
void arena_trim |
( |
Arena * | a | ) |
|
◆ arena_vsprintf()
char * arena_vsprintf |
( |
Arena * | a, |
|
|
const char * | format, |
|
|
va_list | args ) |
◆ free_region()
void free_region |
( |
Region * | r | ) |
|
◆ new_region()
Region * new_region |
( |
size_t | capacity | ) |
|