mirror of https://github.com/flysand7/ciabatta.git
33 lines
978 B
C
33 lines
978 B
C
|
|
||
|
#pragma once
|
||
|
|
||
|
void *cia_ptr_alignf(void *ptr, u64 alignment);
|
||
|
void *cia_ptr_alignb(void *ptr, u64 alignment);
|
||
|
|
||
|
struct Cia_Allocator typedef Cia_Allocator;
|
||
|
struct Cia_Allocator {
|
||
|
void *ctx;
|
||
|
void *(*alloc)(void *ctx, u64 size);
|
||
|
void *(*alloc_a)(void *ctx, u64 size, u64 alignment);
|
||
|
void (*free)(void *ctx, void *ptr);
|
||
|
void (*free_all)(void *ctx, void *ptr);
|
||
|
void *(*realloc)(void *ctx, void *ptr, u64 new_size);
|
||
|
};
|
||
|
|
||
|
Cia_Allocator cia_allocator_null();
|
||
|
Cia_Allocator cia_allocator_pages();
|
||
|
|
||
|
struct Cia_Arena typedef Cia_Arena;
|
||
|
struct Cia_Arena {
|
||
|
Cia_Allocator allocator;
|
||
|
u64 buffer_size;
|
||
|
u64 used;
|
||
|
u8* buffer;
|
||
|
};
|
||
|
|
||
|
void cia_arena_create(Cia_Arena *arena, Cia_Allocator backing_allocator, u64 max_size);
|
||
|
void *cia_arena_alloc(Cia_Arena *arena, u64 size);
|
||
|
void *cia_arena_alloc_aligned(Cia_Arena *arena, u64 size, u64 align);
|
||
|
void cia_arena_free_all(Cia_Arena *arena);
|
||
|
void cia_arena_destroy(Cia_Arena *arena);
|