76 lines
1.8 KiB
C
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 */
|