Fabcoin Core  0.16.2
P2P Digital Currency
Public Member Functions | Private Member Functions | Private Attributes | List of all members
FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 > Class Template Reference

Static secure memory block with cleanup. More...

#include <secblock.h>

Inheritance diagram for FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >:
[legend]
Collaboration diagram for FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >:
[legend]

Public Member Functions

CRYPTOPP_INHERIT_ALLOCATOR_TYPES FixedSizeAllocatorWithCleanup ()
 Constructs a FixedSizeAllocatorWithCleanup. More...
 
pointer allocate (size_type size)
 Allocates a block of memory. More...
 
pointer allocate (size_type size, const void *hint)
 Allocates a block of memory. More...
 
void deallocate (void *ptr, size_type size)
 Deallocates a block of memory. More...
 
pointer reallocate (pointer oldPtr, size_type oldSize, size_type newSize, bool preserve)
 Reallocates a block of memory. More...
 
CRYPTOPP_CONSTEXPR size_type max_size () const
 
- Public Member Functions inherited from AllocatorBase< T >
pointer address (reference r) const
 
const_pointer address (const_reference r) const
 
void construct (pointer p, const T &val)
 
void destroy (pointer p)
 
CRYPTOPP_CONSTEXPR size_type max_size () const
 Returns the maximum number of elements the allocator can provide. More...
 

Private Member Functions

TGetAlignedArray ()
 

Private Attributes

CRYPTOPP_ALIGN_DATA(8) T m_array[(CRYPTOPP_BOOL_ALIGN16 &&T_Align16)?S+8/sizeof(T) A m_fallbackAllocator
 
bool m_allocated
 

Additional Inherited Members

- Public Types inherited from AllocatorBase< T >
typedef T value_type
 
typedef size_t size_type
 
typedef std::ptrdiff_t difference_type
 
typedef Tpointer
 
typedef const Tconst_pointer
 
typedef Treference
 
typedef const Tconst_reference
 
- Static Protected Member Functions inherited from AllocatorBase< T >
static void CheckSize (size_t size)
 Verifies the allocator can satisfy a request based on size. More...
 

Detailed Description

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
class FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >

Static secure memory block with cleanup.

Template Parameters
Tclass or type
Sfixed-size of the stack-based memory block, in elements
AAllocatorBase derived class for allocation and cleanup

FixedSizeAllocatorWithCleanup provides a fixed-size, stack- based allocation at compile time. The class can grow its memory block at runtime if a suitable allocator is available. If size grows beyond S and a suitable allocator is available, then the statically allocated array is obsoleted.

Note
This allocator can't be used with standard collections because they require that all objects of the same allocator type are equivalent.

Definition at line 301 of file secblock.h.

Constructor & Destructor Documentation

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
CRYPTOPP_INHERIT_ALLOCATOR_TYPES FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::FixedSizeAllocatorWithCleanup ( )
inline

Constructs a FixedSizeAllocatorWithCleanup.

Definition at line 307 of file secblock.h.

Member Function Documentation

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
pointer FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::allocate ( size_type  size)
inline

Allocates a block of memory.

Parameters
sizesize of the memory block, in elements

FixedSizeAllocatorWithCleanup provides a fixed-size, stack-based allocation at compile time. If size is less than or equal to S, then a pointer to the static array is returned.

The class can grow its memory block at runtime if a suitable allocator is available. If size grows beyond S and a suitable allocator is available, then the statically allocated array is obsoleted. If a suitable allocator is not available, as with a NullAllocator, then the function returns NULL and a runtime error eventually occurs.

See also
reallocate(), SecBlockWithHint

Definition at line 321 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
pointer FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::allocate ( size_type  size,
const void *  hint 
)
inline

Allocates a block of memory.

Parameters
sizesize of the memory block, in elements
hintan unused hint

FixedSizeAllocatorWithCleanup provides a fixed-size, stack- based allocation at compile time. If size is less than or equal to S, then a pointer to the static array is returned.

The class can grow its memory block at runtime if a suitable allocator is available. If size grows beyond S and a suitable allocator is available, then the statically allocated array is obsoleted. If a suitable allocator is not available, as with a NullAllocator, then the function returns NULL and a runtime error eventually occurs.

See also
reallocate(), SecBlockWithHint

Definition at line 347 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
void FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::deallocate ( void *  ptr,
size_type  size 
)
inline

Deallocates a block of memory.

Parameters
ptra pointer to the memory block to deallocate
sizesize of the memory block, in elements

The memory block is wiped or zeroized before deallocation. If the statically allocated memory block is active, then no additional actions are taken after the wipe.

If a dynamic memory block is active, then the pointer and size are passed to the allocator for deallocation.

Definition at line 366 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
T* FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::GetAlignedArray ( )
inlineprivate

Definition at line 424 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
CRYPTOPP_CONSTEXPR size_type FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::max_size ( ) const
inline

Definition at line 416 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
pointer FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::reallocate ( pointer  oldPtr,
size_type  oldSize,
size_type  newSize,
bool  preserve 
)
inline

Reallocates a block of memory.

Parameters
oldPtrthe previous allocation
oldSizethe size of the previous allocation
newSizethe new, requested size
preserveflag that indicates if the old allocation should be preserved
Returns
pointer to the new memory block

FixedSizeAllocatorWithCleanup provides a fixed-size, stack- based allocation at compile time. If size is less than or equal to S, then a pointer to the static array is returned.

The class can grow its memory block at runtime if a suitable allocator is available. If size grows beyond S and a suitable allocator is available, then the statically allocated array is obsoleted. If a suitable allocator is not available, as with a NullAllocator, then the function returns NULL and a runtime error eventually occurs.

Note
size is the count of elements, and not the number of bytes.
See also
reallocate(), SecBlockWithHint

Definition at line 396 of file secblock.h.

Member Data Documentation

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
bool FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::m_allocated
private

Definition at line 429 of file secblock.h.

template<class T, size_t S, class A = NullAllocator<T>, bool T_Align16 = false>
CRYPTOPP_ALIGN_DATA (8) T m_array[(CRYPTOPP_BOOL_ALIGN16 && T_Align16) ? S+8/sizeof(T) A FixedSizeAllocatorWithCleanup< T, S, A, T_Align16 >::m_fallbackAllocator
private

Definition at line 425 of file secblock.h.


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