memory
allocator_traits< memory_pool< PoolType, ImplRawAllocator > > Class Template Reference

Detailed Description

template<typename PoolType, class ImplRawAllocator>
class foonathan::memory::allocator_traits< memory_pool< PoolType, ImplRawAllocator > >

Specialization of the allocator_traits for memory_pool classes.

Note
It is not allowed to mix calls through the specialization and through the member functions, i.e. allocate_node() and this allocate_node().

Typedefs

using allocator_type
 
using is_stateful
 
using allocator_type
 
using is_stateful
 

Static Functions

static void * allocate_node (allocator_type &state, std::size_t size, std::size_t alignment)
 
static void * allocate_array (allocator_type &state, std::size_t count, std::size_t size, std::size_t alignment)
 
static void deallocate_node (allocator_type &state, void *node, std::size_t size, std::size_t) noexcept
 
static void deallocate_array (allocator_type &state, void *array, std::size_t count, std::size_t size, std::size_t) noexcept
 
static std::size_t max_node_size (const allocator_type &state) noexcept
 
static std::size_t max_array_size (const allocator_type &state) noexcept
 
static std::size_t max_alignment (const allocator_type &state) noexcept
 
static void * allocate_node (allocator_type &state, std::size_t size, std::size_t alignment)
 
static void * allocate_array (allocator_type &state, std::size_t count, std::size_t size, std::size_t alignment)
 
static void deallocate_node (allocator_type &state, void *node, std::size_t size, std::size_t alignment) noexcept
 
static void deallocate_array (allocator_type &state, void *array, std::size_t count, std::size_t size, std::size_t alignment) noexcept
 
static std::size_t max_node_size (const allocator_type &state)
 
static std::size_t max_array_size (const allocator_type &state)
 
static std::size_t max_alignment (const allocator_type &state)
 

Member Functions

◆ allocate_node()

template<typename PoolType, class ImplRawAllocator>
static void * allocate_node ( allocator_type & state,
std::size_t size,
std::size_t alignment )
static
Returns:
The result of allocate_node().
Throws:
Anything thrown by the pool allocation function or a bad_allocation_size exception.

◆ allocate_array()

template<typename PoolType, class ImplRawAllocator>
static void * allocate_array ( allocator_type & state,
std::size_t count,
std::size_t size,
std::size_t alignment )
static
Effects:
Forwards to allocate_array() with the number of nodes adjusted to be the minimum, i.e. when the size is less than the node_size().
Returns:
A array with specified properties.
Requires:
The memory_pool has to support array allocations.
Throws:
Anything thrown by the pool allocation function.

◆ deallocate_node()

template<typename PoolType, class ImplRawAllocator>
static void deallocate_node ( allocator_type & state,
void * node,
std::size_t size,
std::size_t  )
staticnoexcept
Effects:
Just forwards to deallocate_node().

◆ deallocate_array()

template<typename PoolType, class ImplRawAllocator>
static void deallocate_array ( allocator_type & state,
void * array,
std::size_t count,
std::size_t size,
std::size_t  )
staticnoexcept
Effects:
Forwards to deallocate_array() with the same size adjustment.

◆ max_node_size()

template<typename PoolType, class ImplRawAllocator>
static std::size_t max_node_size ( const allocator_type & state)
staticnoexcept
Returns:
The maximum size of each node which is node_size().

◆ max_array_size()

template<typename PoolType, class ImplRawAllocator>
static std::size_t max_array_size ( const allocator_type & state)
staticnoexcept
Returns:
An upper bound on the maximum array size which is next_capacity().

◆ max_alignment()

template<typename PoolType, class ImplRawAllocator>
static std::size_t max_alignment ( const allocator_type & state)
staticnoexcept
Returns:
The maximum alignment which is the next bigger power of two if less than alignof(std::max_align_t) or the maximum alignment itself otherwise.