Mirai's Miscellaneous Misadventures
M35 / include / mimimi / allocators.h
#ifndef MIMIMI_ALLOCATORS_H
#define MIMIMI_ALLOCATORS_H
struct mimimi_allocator
{
void *(*allocate)(void *data, unsigned int size);
void *(*reallocate)(void *data, void *value, unsigned int size);
void (*deallocate)(void *data, void *value);
void *data;
void *null;
};
static inline void *mimimi_allocate(struct mimimi_allocator *allocator, unsigned int size)
{
return (*allocator->allocate)(allocator->data, size);
}
static inline void *mimimi_reallocate(struct mimimi_allocator *allocator, void *value, unsigned int size)
{
return (*allocator->reallocate)(allocator->data, value, size);
}
static inline void mimimi_deallocate(struct mimimi_allocator *allocator, void *value)
{
(*allocator->deallocate)(allocator->data, value);
}
struct mimimi_allocator *mimimi_temporary_allocator(struct mimimi_allocator *allocator);
void mimimi_finish_temporary_allocator(struct mimimi_allocator *allocator);
#endif