/** * @file internal.h * @brief This header contains the definition of the internal allocator * implementation and function pointers for the allocator virtual * function table. * @author John Christman (sorakatadzuma@gmail.com) * @copyright Malunal Studios, LLC. */ #include "malunal/allocators.h" #ifndef MALUNAL_ALLOCATORS_INTERNAL_HEADER #define MALUNAL_ALLOCATORS_INTERNAL_HEADER typedef allocation_error_t (*allocator_initialize_pfn_t)( allocator_mptr_t allocator, allocator_mptr_t upstream, malunal_size_t capacity ); typedef allocation_error_t (*allocator_finalize_pfn_t)( allocator_mptr_t allocator ); typedef allocation_result_t (*allocator_acquire_pfn_t)( allocator_mptr_t allocator, malunal_size_t size ); typedef allocation_result_t (*allocator_reacquire_pfn_t)( allocator_mptr_t allocator, malunal_mptr_t address, malunal_size_t oldsize, malunal_size_t newsize ); typedef allocation_error_t (*allocator_release_pfn_t)( allocator_mptr_t allocator, malunal_mptr_t address, malunal_size_t size ); typedef struct { allocator_initialize_pfn_t const initialize; allocator_finalize_pfn_t const finalize; allocator_acquire_pfn_t const acquire; allocator_reacquire_pfn_t const reacquire; allocator_release_pfn_t const release; } virtual_table_t; typedef virtual_table_t* vtable_mptr_t; typedef const virtual_table_t* vtable_iptr_t; typedef struct { vtable_iptr_t const vtable; allocator_mptr_t upstream; malunal_mptr_t context; malunal_size_t allocated; malunal_size_t reserved; malunal_size_t acquires; malunal_size_t releases; } implementation_t; typedef implementation_t* impl_mptr_t; typedef const implementation_t* impl_iptr_t; #endif /* MALUNAL_ALLOCATORS_INTERNAL_HEADER */