Files
allocators/sources/internal.h
T

76 lines
1.8 KiB
C

/**
* @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 */