sourcemod/knight/shared/KnightAllocator.h

38 lines
798 B
C
Raw Normal View History

#ifndef _INCLUDE_KNIGHT_ALLOCATOR_H_
#define _INCLUDE_KNIGHT_ALLOCATOR_H_
#include <stddef.h>
#include <stdlib.h>
struct ke_allocator_s;
typedef struct ke_allocator_s ke_allocator_t;
typedef void *(*KEFN_ALLOCATOR)(ke_allocator_t *, size_t);
typedef void (*KEFN_DEALLOCATOR)(ke_allocator_t *, void *);
struct ke_allocator_s
{
KEFN_ALLOCATOR alloc;
KEFN_DEALLOCATOR dealloc;
void *user;
};
inline void *operator new(size_t size, ke_allocator_t *alloc)
{
return alloc->alloc(alloc, size);
}
inline void *operator new [](size_t size, ke_allocator_t *alloc)
{
return alloc->alloc(alloc, size);
}
template <typename T>
void ke_destroy(ke_allocator_t *alloc, T * data)
{
data->~T();
alloc->dealloc(alloc, data);
}
#endif //_INCLUDE_KNIGHT_ALLOCATOR_H_