/************************************************************/ /** * * @file: platform_memory.h * @author: Martin Fouilleul * @date: 10/09/2021 * @revision: * *****************************************************************/ #ifndef __PLATFORM_MEMORY_H_ #define __PLATFORM_MEMORY_H_ #include "platform.h" #include "util/typedefs.h" #ifdef __cplusplus extern "C" { #endif //-------------------------------------------------------------------------------- //NOTE(martin): base allocator //-------------------------------------------------------------------------------- typedef struct oc_base_allocator oc_base_allocator; typedef void* (*oc_mem_reserve_function)(oc_base_allocator* context, u64 size); typedef void (*oc_mem_modify_function)(oc_base_allocator* context, void* ptr, u64 size); typedef struct oc_base_allocator { oc_mem_reserve_function reserve; oc_mem_modify_function commit; oc_mem_modify_function decommit; oc_mem_modify_function release; } oc_base_allocator; ORCA_API oc_base_allocator* oc_base_allocator_default(); #define oc_base_reserve(base, size) base->reserve(base, size) #define oc_base_commit(base, ptr, size) base->commit(base, ptr, size) #define oc_base_decommit(base, ptr, size) base->decommit(base, ptr, size) #define oc_base_release(base, ptr, size) base->release(base, ptr, size) //-------------------------------------------------------------------------------- //NOTE(martin): malloc/free //-------------------------------------------------------------------------------- #include #define oc_malloc_type(type) ((type*)malloc(sizeof(type))) #define oc_malloc_array(type, count) ((type*)malloc(sizeof(type) * count)) //-------------------------------------------------------------------------------- //NOTE(martin): memset / memcpy //-------------------------------------------------------------------------------- #include #ifdef __cplusplus } // extern "C" #endif #endif //__PLATFORM_MEMORY_H_