#ifndef MEM_ALLOCATOR_H #define MEM_ALLOCATOR_H #include typedef struct mem_allocator MemAllocator; typedef void *(*MemAlloc)(MemAllocator *, usize); typedef void *(*MemRealloc)(MemAllocator *, void *, usize); typedef void (*MemFree)(MemAllocator *, void *); /* Abstract object representing an allocator */ struct mem_allocator { MemAlloc alloc; MemRealloc realloc; MemFree free; }; void *mem_alloc(MemAllocator *self, usize n); void *mem_realloc(MemAllocator *self, void *ptr, usize n); void mem_free(MemAllocator *self, void *ptr); #endif