#ifndef KIT_ALLOCATOR_H #define KIT_ALLOCATOR_H #include "types.h" #ifdef __cplusplus extern "C" { #endif enum { KIT_ALLOC_TYPE_NONE, KIT_ALLOC_TYPE_DEFAULT, KIT_ALLOC_TYPE_BUFFER }; enum { KIT_ALLOCATE, KIT_ALLOCATE_ZERO, KIT_DEALLOCATE, KIT_REALLOCATE, KIT_REALLOCATE_ZERO, KIT_DEALLOCATE_ALL }; typedef struct { i32 type; i64 size; union { u8 *bytes; void *data; }; } kit_allocator_t; // Application should implement this function if custom allocator // dispatch is enabled. // // See KIT_ENABLE_CUSTOM_ALLOC_DISPATCH macro. // void *kit_alloc_dispatch(kit_allocator_t *alloc, i32 request, i64 size, i64 previous_size, void *pointer); kit_allocator_t kit_alloc_default(void); kit_allocator_t kit_alloc_buffer(i64 size, void *buffer); #ifdef __cplusplus } #endif #endif