ALib C++ Library
Library Version: 2412 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
StdContainerAllocatorRecycling< T, TAllocator > Struct Template Reference

Description:

template<typename T, typename TAllocator>
struct alib::lang::StdContainerAllocatorRecycling< T, TAllocator >

Implementation of std::allocator to be used with container types provided by the C++ standard library.

As the C+++ library's specification does not include details of the container class's implementation, this allocator uses type RTTRAllocator which detects node types automatically.

Attention
It cannot be guaranteed that a certain, uncommon implementation of the C++ library allocates memory in a way that this allocator truly recycles objects, and - even if the authors of ALib are optimistic hat this type works with any implementation - it is recommended to use the alternative container types found in this ALib Module.
See also
For background information about monotonic memory allocation, recycling, and the issues of C++ standard container types, see the Programmer's Manual of ALib Modules Containers and Monomem.
Template Parameters
TThe type of objects to be allocated.
TAllocatorThe allocator type, as prototyped with Allocator.

Definition at line 216 of file stdcontainerallocator.hpp.

#include <stdcontainerallocator.hpp>

Inheritance diagram for StdContainerAllocatorRecycling< T, TAllocator >:
[legend]
Collaboration diagram for StdContainerAllocatorRecycling< T, TAllocator >:
[legend]

Public Field Index:

RTTRAllocator< TAllocator > & recycler
 The only member of this allocator type used to perform all duties.
 

Public Method Index:

constexpr StdContainerAllocatorRecycling (const StdContainerAllocatorRecycling &) noexcept=default
 Defaulted copy constructor.
 
constexpr StdContainerAllocatorRecycling (RTTRAllocator< TAllocator > &pRecycler)
 
constexpr StdContainerAllocatorRecycling (StdContainerAllocatorRecycling &&) noexcept=default
 Defaulted move constructor.
 
template<typename TSibling >
 StdContainerAllocatorRecycling (TSibling &StdContainerAllocatorRecycling)
 
T * allocate (size_t n, const void *=nullptr)
 
void deallocate (T *p, std::size_t n)
 
template<typename U >
bool operator!= (const StdContainerAllocatorRecycling< U, TAllocator > &rhs) const noexcept
 
template<typename U >
bool operator== (const StdContainerAllocatorRecycling< U, TAllocator > &rhs) const noexcept
 
- Public Method Index: inherited from StdContainerAllocatorBase< T, TAllocator >
size_t max_size () const noexcept
 

Additional Inherited Members

- Public Type Index: inherited from StdContainerAllocatorBase< T, TAllocator >
using AllocatorType = TAllocator
 The allocator type that TAllocator specifies.
 
using const_reference = const T&
 Type definition as required by C++ library standards.
 
using difference_type = ptrdiff_t
 Type definition as required by C++ library standards.
 
using is_always_equal = std::false_type
 Type definition as required by C++ library standards.
 
using reference = T&
 Type definition as required by C++ library standards.
 
using size_type = size_t
 Type definition as required by C++ library standards.
 
using value_type = T
 Type definition as required by C++ library standards.
 

Field Details:

◆ recycler

template<typename T , typename TAllocator >
RTTRAllocator<TAllocator>& recycler

The only member of this allocator type used to perform all duties.

Definition at line 222 of file stdcontainerallocator.hpp.

Constructor(s) / Destructor Details:

◆ StdContainerAllocatorRecycling() [1/2]

template<typename T , typename TAllocator >
template<typename TSibling >
StdContainerAllocatorRecycling ( TSibling & StdContainerAllocatorRecycling)
inline

Copy constructor using an instance of different template type.

Template Parameters
TSiblingThe originating allocator's type (StdContainerAllocatorRecycling<X>).
Parameters
StdContainerAllocatorRecyclingThe originating allocator of type TSibling .

Definition at line 237 of file stdcontainerallocator.hpp.

◆ StdContainerAllocatorRecycling() [2/2]

template<typename T , typename TAllocator >
StdContainerAllocatorRecycling ( RTTRAllocator< TAllocator > & pRecycler)
inlineconstexpr

Constructor for the initial allocator instantiation.

Parameters
pRecyclerThe recycler to for allocations and de-allocations.

Definition at line 242 of file stdcontainerallocator.hpp.

Method Details:

◆ allocate()

template<typename T , typename TAllocator >
T * allocate ( size_t n,
const void * = nullptr )
inlinenodiscard

Implementation of std::allocator interface. Dependent on whether a single or multiple objects are requested, this method invokes either RTTRAllocator::Get or RTTRAllocator::AllocUnrelated on field recycler.

Parameters
nThe number of requested objects to allocate storage for.
Returns
Pointer to the start of the array of n objects of type T.

Definition at line 278 of file stdcontainerallocator.hpp.

◆ deallocate()

template<typename T , typename TAllocator >
void deallocate ( T * p,
std::size_t n )
inline

Implementation of std::allocator interface. Dependent on whether a single or multiple objects are de-allocated (parameter n), this method invokes either RTTRAllocator::Recycle or RTTRAllocator::RecycleChunk on field recycler.

Parameters
pPointer to the object to deallocate.
nThe number of objects to de-allocate.

Definition at line 299 of file stdcontainerallocator.hpp.

◆ operator!=()

template<typename T , typename TAllocator >
template<typename U >
bool operator!= ( const StdContainerAllocatorRecycling< U, TAllocator > & rhs) const
inlinenoexcept

Comparison operator.

Template Parameters
UThe allocation type of the other allocator.
Parameters
rhsThe right hand side allocator.
Returns
false if this and rhs use the same recycler, true otherwise.

Definition at line 262 of file stdcontainerallocator.hpp.

◆ operator==()

template<typename T , typename TAllocator >
template<typename U >
bool operator== ( const StdContainerAllocatorRecycling< U, TAllocator > & rhs) const
inlinenoexcept

Comparison operator.

Template Parameters
UThe allocation type of the other allocator.
Parameters
rhsThe right hand side allocator.
Returns
true if this and rhs use the same recycler, false otherwise.

Definition at line 254 of file stdcontainerallocator.hpp.


The documentation for this struct was generated from the following file: