NullAllocator< T > Class Template Reference

NULL allocator. More...

Inheritance diagram for NullAllocator< T >:
AllocatorBase< T >

List of all members.

Public Types

typedef AllocatorBase< T >
::value_type 
value_type
typedef AllocatorBase< T >
::size_type 
size_type
typedef AllocatorBase< T >
::difference_type 
difference_type
typedef AllocatorBase< T >::pointer pointer
typedef AllocatorBase< T >
::const_pointer 
const_pointer
typedef AllocatorBase< T >
::reference 
reference
typedef AllocatorBase< T >
::const_reference 
const_reference

Public Member Functions

pointer allocate (size_type n, const void *unused=NULL)
void deallocate (void *p, size_type n)
size_type max_size () const
 Returns the maximum number of elements the allocator can provide.
pointer address (reference r) const
const_pointer address (const_reference r) const
void construct (pointer p, const T &val)
template<typename U , typename... Args>
void construct (U *ptr, Args &&...args)
 Constructs a new U using variadic arguments.
void destroy (pointer p)
template<typename U >
void destroy (U *ptr)
 Destroys an U constructed with variadic arguments.

Detailed Description

template<class T>
class NullAllocator< T >

NULL allocator.

Template Parameters:
T class or type

A NullAllocator is useful for fixed-size, stack based allocations (i.e., static arrays used by FixedSizeAllocatorWithCleanup).

A NullAllocator always returns 0 for max_size(), and always returns NULL for allocation requests. Though the allocator does not allocate at runtime, it does perform a secure wipe or zeroization during cleanup.

Definition at line 253 of file secblock.h.


Member Function Documentation

template<class T>
size_type NullAllocator< T >::max_size (  )  const [inline]

Returns the maximum number of elements the allocator can provide.

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 from AllocatorBase< T >.

Definition at line 273 of file secblock.h.

template<class T>
template<typename U , typename... Args>
void AllocatorBase< T >::construct ( U *  ptr,
Args &&...  args 
) [inline, inherited]

Constructs a new U using variadic arguments.

Template Parameters:
U the type to be forwarded
Args the arguments to be forwarded
Parameters:
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.

template<class T>
template<typename U >
void AllocatorBase< T >::destroy ( U *  ptr  )  [inline, inherited]

Destroys an U constructed with variadic arguments.

Template Parameters:
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.


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

Generated on 24 Mar 2016 for Crypto++ by  doxygen 1.6.1