Mirai's Miscellaneous Misadventures
M31 / include / mimimi / allocators.h
1
2
3
4#ifndef MIMIMI_ALLOCATORS_H
5#define MIMIMI_ALLOCATORS_H
6
7struct mimimi_allocator
8{
9 void *(*allocate)(void *data, unsigned int size);
10 void *(*reallocate)(void *data, void *value, unsigned int size);
11 void (*deallocate)(void *data, void *value);
12 void *data;
13 void *null;
14};
15
16static inline void *mimimi_allocate(struct mimimi_allocator *allocator, unsigned int size)
17{
18 return (*allocator->allocate)(allocator->data, size);
19}
20
21static inline void *mimimi_reallocate(struct mimimi_allocator *allocator, void *value, unsigned int size)
22{
23 return (*allocator->reallocate)(allocator->data, value, size);
24}
25
26static inline void mimimi_deallocate(struct mimimi_allocator *allocator, void *value)
27{
28 (*allocator->deallocate)(allocator->data, value);
29}
30
31struct mimimi_allocator *mimimi_temporary_allocator(struct mimimi_allocator *allocator);
32void mimimi_finish_temporary_allocator(struct mimimi_allocator *allocator);
33
34#endif