Base class for all allocators used by SecBlock. More...
Public Types | |
typedef T | value_type |
typedef size_t | size_type |
typedef std::ptrdiff_t | difference_type |
typedef T * | pointer |
typedef const T * | const_pointer |
typedef T & | reference |
typedef const T & | const_reference |
Public Member Functions | |
pointer | address (reference r) const |
const_pointer | address (const_reference r) const |
void | construct (pointer p, const T &val) |
void | destroy (pointer p) |
size_type | max_size () const |
Returns the maximum number of elements the allocator can provide. | |
template<typename U , typename... Args> | |
void | construct (U *ptr, Args &&...args) |
Constructs a new U using variadic arguments. | |
template<typename U > | |
void | destroy (U *ptr) |
Destroys an U constructed with variadic arguments. |
Base class for all allocators used by SecBlock.
T | the class or type |
Definition at line 29 of file secblock.h.
size_type AllocatorBase< T >::max_size | ( | ) | const [inline] |
Returns the maximum number of elements the allocator can provide.
Internally, preprocessor macros are used rather than std::numeric_limits because the latter is not a constexpr. Some compilers, like Clang, do not optimize it well under all circumstances. Compilers like GCC, ICC and MSVC appear to optimize it well in either form.
Reimplemented in NullAllocator< T >, FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >, NullAllocator< unsigned int >, NullAllocator< word16 >, NullAllocator< byte >, NullAllocator< T_HashWordType >, NullAllocator< Word >, NullAllocator< word64 >, NullAllocator< word32 >, FixedSizeAllocatorWithCleanup< word32, S >, FixedSizeAllocatorWithCleanup< Word, S >, FixedSizeAllocatorWithCleanup< T, S, NullAllocator< T >, T_Align16 >, FixedSizeAllocatorWithCleanup< word64, S >, FixedSizeAllocatorWithCleanup< T_HashWordType, S >, FixedSizeAllocatorWithCleanup< word64, S, NullAllocator< word64 >, T_Align16 >, FixedSizeAllocatorWithCleanup< word32, S, NullAllocator< word32 >, true >, FixedSizeAllocatorWithCleanup< word16, S >, FixedSizeAllocatorWithCleanup< byte, S >, FixedSizeAllocatorWithCleanup< word32, S, NullAllocator< word32 >, T_Align16 >, FixedSizeAllocatorWithCleanup< T_HashWordType, S, NullAllocator< T_HashWordType >, T_Align16 >, and FixedSizeAllocatorWithCleanup< unsigned int, S >.
Definition at line 55 of file secblock.h.
void AllocatorBase< T >::construct | ( | U * | ptr, | |
Args &&... | args | |||
) | [inline] |
Constructs a new U using variadic arguments.
U | the type to be forwarded | |
Args | the arguments to be forwarded |
ptr | pointer to type U | |
args | variadic arguments |
This is a C++11 feature. It is available when CRYPTOPP_CXX11_VARIADIC_TEMPLATES is defined. The define is controlled by compiler versions detected in config.h.
Definition at line 67 of file secblock.h.
Destroys an U constructed with variadic arguments.
U | the type to be forwarded |
This is a C++11 feature. It is available when CRYPTOPP_CXX11_VARIADIC_TEMPLATES is defined. The define is controlled by compiler versions detected in config.h.
Definition at line 74 of file secblock.h.