#ifndef __HEV_MEMORY_ALLOCATOR_H__
#define __HEV_MEMORY_ALLOCATOR_H__
#include <stddef.h>
typedef struct _HevMemoryAllocator HevMemoryAllocator;
typedef void *(*HevMemoryAllocatorAlloc) (HevMemoryAllocator *self,
size_t size);
typedef void *(*HevMemoryAllocatorRealloc) (HevMemoryAllocator *self, void *ptr,
size_t size);
typedef void (*HevMemoryAllocatorFree) (HevMemoryAllocator *self, void *ptr);
typedef void (*HevMemoryAllocatorDestroy) (HevMemoryAllocator *self);
struct _HevMemoryAllocator
{
HevMemoryAllocatorAlloc alloc;
HevMemoryAllocatorRealloc realloc;
HevMemoryAllocatorFree free;
HevMemoryAllocatorDestroy destroy;
unsigned int ref_count;
};
HevMemoryAllocator *hev_memory_allocator_default (void);
HevMemoryAllocator *
hev_memory_allocator_set_default (HevMemoryAllocator *allocator);
HevMemoryAllocator *hev_memory_allocator_ref (HevMemoryAllocator *self);
void hev_memory_allocator_unref (HevMemoryAllocator *self);
void *hev_memory_allocator_alloc (HevMemoryAllocator *self, size_t size);
void *hev_memory_allocator_realloc (HevMemoryAllocator *self, void *ptr,
size_t size);
void hev_memory_allocator_free (HevMemoryAllocator *self, void *ptr);
#endif