srp
software rendering pipeline
Loading...
Searching...
No Matches
arena_p.h
Go to the documentation of this file.
1// Software Rendering Pipeline (SRP) library
2// Licensed under GNU GPLv3
3
8#pragma once
9
10#include <stddef.h>
11#include "srp/context.h"
12
17#define SRP_DEFAULT_ARENA_CAPACITY (1024 * 1024) // 1 MiB
18
20typedef struct SRPArenaBlock {
22 size_t capacity;
23 size_t used;
24 unsigned char data[];
26
33
37SRPArena* newArena(size_t capacity);
38
41void freeArena(SRPArena* this);
42
47void* arenaAlloc(SRPArena* this, size_t size);
48
53void* arenaCalloc(SRPArena* this, size_t size);
54
57void arenaReset(SRPArena* this);
58
59// Macros to manipulate context-stored arena
60#define ARENA_ALLOC(size) (arenaAlloc(srpContext.arena, (size)))
61#define ARENA_CALLOC(size) (arenaCalloc(srpContext.arena, (size)))
62#define ARENA_RESET() (arenaReset(srpContext.arena))
63
// ingroup Memory_allocation
void * arenaCalloc(SRPArena *this, size_t size)
Definition arena.c:88
void arenaReset(SRPArena *this)
Definition arena.c:95
SRPArena * newArena(size_t capacity)
Definition arena.c:40
void * arenaAlloc(SRPArena *this, size_t size)
Definition arena.c:69
void freeArena(SRPArena *this)
Definition arena.c:49
Definition arena_p.h:20
size_t capacity
Definition arena_p.h:22
unsigned char data[]
Definition arena_p.h:24
size_t used
Definition arena_p.h:23
struct SRPArenaBlock * next
Definition arena_p.h:21
Definition arena_p.h:28
SRPArenaBlock * head
Definition arena_p.h:29
SRPArenaBlock * current
Definition arena_p.h:30
size_t pageSize
Definition arena_p.h:31