#ifndef memory_h #define memory_h int aligned(void* p, int a); int align_size(int s, int a); typedef struct Arena { char* buf; int size, ptr; } Arena; void init_arena( Arena* a, void* mem, int size ); void clear_arena(Arena* a); void* arena_alloc( Arena* a, int size ); void* arena_alloc_aligned( Arena* a, int size, int align ); typedef struct Heap { char* buf; int size, blocks; } Heap; void init_heap( Heap* h, void* mem, int size ); void* heap_alloc( Heap* h, int size ); void* heap_alloc_aligned( Heap* h, int size, int align ); void heap_free_aligned( Heap* h, void* p ); void heap_free( Heap* h, void* p ); void heap_defrag(Heap* h); #endif