ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
Loading...
Searching...
No Matches
StdContMAOptional< T > Struct Template Reference

Description:

template<typename T>
struct alib::monomem::StdContMAOptional< T >

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

This allocator only optionally uses monotonic allocation - only if an allocator was given with construction. This has a very small performance impact, hence the non-optional sibling, StdContMA is to be used with types that always use monotonic memory.

Template Parameters
TThe type of objects to be allocated.

Definition at line 239 of file stdcontainerma.hpp.

#include <stdcontainerma.hpp>

Inheritance diagram for StdContMAOptional< T >:
[legend]
Collaboration diagram for StdContMAOptional< T >:
[legend]

Public Field Index:

MonoAllocatorallocator
 
bool dbgDeallocationWarning
 

Public Method Index:

constexpr StdContMAOptional ()
 
constexpr StdContMAOptional (const StdContMAOptional &) noexcept=default
 
constexpr StdContMAOptional (MonoAllocator &pAllocator, bool dbgDeallocationWarning=true)
 
constexpr StdContMAOptional (StdContMAOptional &&) noexcept=default
 
template<typename TSibling >
 StdContMAOptional (TSibling &origin)
 
T * allocate (size_t n, const void *=nullptr)
 
void deallocate (T *p, std::size_t n)
 
template<typename U >
bool operator!= (const StdContMAOptional< U > &rhs) const noexcept
 
template<typename U >
bool operator== (const StdContMAOptional< U > &rhs) const noexcept
 
- Public Method Index: inherited from StdContainerMABase< T >
size_t max_size () const noexcept
 

Additional Inherited Members

- Public Type Index: inherited from StdContainerMABase< T >
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 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:

◆ allocator

template<typename T >
MonoAllocator* allocator

The allocator to use.

Definition at line 245 of file stdcontainerma.hpp.

◆ dbgDeallocationWarning

template<typename T >
bool dbgDeallocationWarning

If true warnings about de-allocation of objects are suppressed. this should be set prior to destructing a container that uses this allocator.
Available only in debug builds.

Definition at line 251 of file stdcontainerma.hpp.

Constructor(s) / Destructor Details::

◆ StdContMAOptional() [1/5]

template<typename T >
constexpr StdContMAOptional ( )
inlineconstexpr

Default constructor

Definition at line 258 of file stdcontainerma.hpp.

◆ StdContMAOptional() [2/5]

template<typename T >
constexpr StdContMAOptional ( const StdContMAOptional< T > & )
constexprdefaultnoexcept

Defaulted copy constructor

◆ StdContMAOptional() [3/5]

template<typename T >
constexpr StdContMAOptional ( StdContMAOptional< T > && )
constexprdefaultnoexcept

Defaulted move constructor

◆ StdContMAOptional() [4/5]

template<typename T >
template<typename TSibling >
StdContMAOptional ( TSibling & origin)
inline

Copy constructor using an instance of different template type.

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

Definition at line 275 of file stdcontainerma.hpp.

◆ StdContMAOptional() [5/5]

template<typename T >
constexpr StdContMAOptional ( MonoAllocator & pAllocator,
bool dbgDeallocationWarning = true )
constexpr

Constructor for the initial allocator instantiation.

Parameter dbgDisableDeallocationWarning , which defaults to true might be given after a code is tested to be stict in respect to allocation. (Note: unfortunately, due to the design of std::allocator and its use, this flag can not be changed once a container is constructed. This is why it has to be decided upfront if a warning is to be raised or not).

Parameters
pAllocatorThe recycler for allocations and de-allocations.
dbgDeallocationWarningAs described with this method. Available only in debug builds.

Method Details:

◆ allocate()

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

If allocator is set, passes the allocation request to allocator. Otherwise invokes std::malloc.

Parameters
nThe number of requested objects to allocate storage for.
Returns
Pointer to the first byte of a memory block suitably aligned and sufficient to hold an array of n objects of type T .

Definition at line 343 of file stdcontainerma.hpp.

Here is the call graph for this function:

◆ deallocate()

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

If allocator is not set, invokes std::free(p). Otherwise does nothing.

Parameters
pPointer to the previously allocated memory.
nThe number of objects allocated.

Definition at line 361 of file stdcontainerma.hpp.

◆ operator!=()

template<typename T >
template<typename U >
bool operator!= ( const StdContMAOptional< U > & 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 allocator, true otherwise.

Definition at line 325 of file stdcontainerma.hpp.

◆ operator==()

template<typename T >
template<typename U >
bool operator== ( const StdContMAOptional< U > & 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 allocator, false otherwise.

Definition at line 313 of file stdcontainerma.hpp.


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