Fabcoin Core  0.16.2
P2P Digital Currency
Public Types | Public Member Functions | Public Attributes | List of all members
SecBlock< T, A > Class Template Reference

Secure memory block with allocator and cleanup. More...

#include <secblock.h>

Inheritance diagram for SecBlock< T, A >:
[legend]
Collaboration diagram for SecBlock< T, A >:
[legend]

Public Types

typedef A::value_type value_type
 
typedef A::pointer iterator
 
typedef A::const_pointer const_iterator
 
typedef A::size_type size_type
 

Public Member Functions

 SecBlock (size_type size=0)
 Construct a SecBlock with space for size elements. More...
 
 SecBlock (const SecBlock< T, A > &t)
 Copy construct a SecBlock from another SecBlock. More...
 
 SecBlock (const T *ptr, size_type len)
 Construct a SecBlock from an array of elements. More...
 
 ~SecBlock ()
 
 operator const void * () const
 
 operator void * ()
 
 operator const T * () const
 
 operator T * ()
 
iterator begin ()
 Provides an iterator pointing to the first element in the memory block. More...
 
const_iterator begin () const
 Provides a constant iterator pointing to the first element in the memory block. More...
 
iterator end ()
 Provides an iterator pointing beyond the last element in the memory block. More...
 
const_iterator end () const
 Provides a constant iterator pointing beyond the last element in the memory block. More...
 
A::pointer data ()
 Provides a pointer to the first element in the memory block. More...
 
A::const_pointer data () const
 Provides a pointer to the first element in the memory block. More...
 
size_type size () const
 Provides the count of elements in the SecBlock. More...
 
bool empty () const
 Determines if the SecBlock is empty. More...
 
byteBytePtr ()
 Provides a byte pointer to the first element in the memory block. More...
 
const byteBytePtr () const
 Return a byte pointer to the first element in the memory block. More...
 
size_type SizeInBytes () const
 Provides the number of bytes in the SecBlock. More...
 
void Assign (const T *ptr, size_type len)
 Set contents and size from an array. More...
 
void Assign (const SecBlock< T, A > &t)
 Copy contents from another SecBlock. More...
 
SecBlock< T, A > & operator= (const SecBlock< T, A > &t)
 Assign contents from another SecBlock. More...
 
SecBlock< T, A > & operator+= (const SecBlock< T, A > &t)
 Append contents from another SecBlock. More...
 
SecBlock< T, A > operator+ (const SecBlock< T, A > &t)
 Construct a SecBlock from this and another SecBlock. More...
 
bool operator== (const SecBlock< T, A > &t) const
 Bitwise compare two SecBlocks. More...
 
bool operator!= (const SecBlock< T, A > &t) const
 Bitwise compare two SecBlocks. More...
 
void New (size_type newSize)
 Change size without preserving contents. More...
 
void CleanNew (size_type newSize)
 Change size without preserving contents. More...
 
void Grow (size_type newSize)
 Change size and preserve contents. More...
 
void CleanGrow (size_type newSize)
 Change size and preserve contents. More...
 
void resize (size_type newSize)
 Change size and preserve contents. More...
 
void swap (SecBlock< T, A > &b)
 Swap contents with another SecBlock. More...
 

Public Attributes

m_alloc
 
size_type m_size
 
Tm_ptr
 

Detailed Description

template<class T, class A = AllocatorWithCleanup<T>>
class SecBlock< T, A >

Secure memory block with allocator and cleanup.

Template Parameters
Ta class or type
AAllocatorWithCleanup derived class for allocation and cleanup

Definition at line 437 of file secblock.h.

Member Typedef Documentation

template<class T, class A = AllocatorWithCleanup<T>>
typedef A::const_pointer SecBlock< T, A >::const_iterator

Definition at line 442 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
typedef A::pointer SecBlock< T, A >::iterator

Definition at line 441 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
typedef A::size_type SecBlock< T, A >::size_type

Definition at line 443 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
typedef A::value_type SecBlock< T, A >::value_type

Definition at line 440 of file secblock.h.

Constructor & Destructor Documentation

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::SecBlock ( size_type  size = 0)
inlineexplicit

Construct a SecBlock with space for size elements.

Parameters
sizethe size of the allocation, in elements
Exceptions
std::bad_alloc

The elements are not initialized.

Note
size is the count of elements, and not the number of bytes

Definition at line 450 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::SecBlock ( const SecBlock< T, A > &  t)
inline

Copy construct a SecBlock from another SecBlock.

Parameters
tthe other SecBlock
Exceptions
std::bad_alloc

Definition at line 456 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::SecBlock ( const T ptr,
size_type  len 
)
inline

Construct a SecBlock from an array of elements.

Parameters
ptra pointer to an array of T
lenthe number of elements in the memory block
Exceptions
std::bad_alloc

If ptr!=NULL and len!=0, then the block is initialized from the pointer ptr. If ptr==NULL and len!=0, then the block is initialized to 0. Otherwise, the block is empty and not initialized.

Note
size is the count of elements, and not the number of bytes

Definition at line 470 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::~SecBlock ( )
inline

Definition at line 479 of file secblock.h.

Member Function Documentation

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::Assign ( const T ptr,
size_type  len 
)
inline

Set contents and size from an array.

Parameters
ptra pointer to an array of T
lenthe number of elements in the memory block

If the memory block is reduced in size, then the reclaimed memory is set to 0.

Definition at line 544 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::Assign ( const SecBlock< T, A > &  t)
inline

Copy contents from another SecBlock.

Parameters
tthe other SecBlock

Assign checks for self assignment.

If the memory block is reduced in size, then the reclaimed memory is set to 0.

Definition at line 555 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
iterator SecBlock< T, A >::begin ( )
inline

Provides an iterator pointing to the first element in the memory block.

Returns
iterator pointing to the first element in the memory block

Definition at line 499 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
const_iterator SecBlock< T, A >::begin ( ) const
inline

Provides a constant iterator pointing to the first element in the memory block.

Returns
constant iterator pointing to the first element in the memory block

Definition at line 503 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
byte* SecBlock< T, A >::BytePtr ( )
inline

Provides a byte pointer to the first element in the memory block.

Returns
byte pointer to the first element in the memory block

Definition at line 531 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
const byte* SecBlock< T, A >::BytePtr ( ) const
inline

Return a byte pointer to the first element in the memory block.

Returns
constant byte pointer to the first element in the memory block

Definition at line 534 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::CleanGrow ( size_type  newSize)
inline

Change size and preserve contents.

Parameters
newSizethe new size of the memory block

Old content is preserved. New content is initialized to 0.

Internally, this SecBlock calls reallocate() when size must increase. If the size does not increase, then CleanGrow() does not take action. If the size must change, then use resize().

See also
New(), CleanNew(), Grow(), CleanGrow(), resize()

Definition at line 689 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::CleanNew ( size_type  newSize)
inline

Change size without preserving contents.

Parameters
newSizethe new size of the memory block

Old content is not preserved. If the memory block is reduced in size, then the reclaimed content is set to 0. If the memory block grows in size, then the new memory is initialized to 0.

Internally, this SecBlock calls New().

See also
New(), CleanNew(), Grow(), CleanGrow(), resize()

Definition at line 660 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
A::pointer SecBlock< T, A >::data ( )
inline

Provides a pointer to the first element in the memory block.

Returns
pointer to the first element in the memory block

Definition at line 516 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
A::const_pointer SecBlock< T, A >::data ( ) const
inline

Provides a pointer to the first element in the memory block.

Returns
constant pointer to the first element in the memory block

Definition at line 519 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
bool SecBlock< T, A >::empty ( ) const
inline

Determines if the SecBlock is empty.

Returns
true if number of elements in the memory block is 0, false otherwise

Definition at line 527 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
iterator SecBlock< T, A >::end ( )
inline

Provides an iterator pointing beyond the last element in the memory block.

Returns
iterator pointing beyond the last element in the memory block

Definition at line 507 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
const_iterator SecBlock< T, A >::end ( ) const
inline

Provides a constant iterator pointing beyond the last element in the memory block.

Returns
constant iterator pointing beyond the last element in the memory block

Definition at line 511 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::Grow ( size_type  newSize)
inline

Change size and preserve contents.

Parameters
newSizethe new size of the memory block

Old content is preserved. New content is not initialized.

Internally, this SecBlock calls reallocate() when size must increase. If the size does not increase, then Grow() does not take action. If the size must change, then use resize().

See also
New(), CleanNew(), Grow(), CleanGrow(), resize()

Definition at line 673 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::New ( size_type  newSize)
inline

Change size without preserving contents.

Parameters
newSizethe new size of the memory block

Old content is not preserved. If the memory block is reduced in size, then the reclaimed memory is set to 0. If the memory block grows in size, then the new memory is not initialized.

Internally, this SecBlock calls reallocate().

See also
New(), CleanNew(), Grow(), CleanGrow(), resize()

Definition at line 647 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::operator const T * ( ) const
inline

Definition at line 491 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::operator const void * ( ) const
inline

Definition at line 486 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::operator T * ( )
inline

Definition at line 493 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock< T, A >::operator void * ( )
inline

Definition at line 488 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
bool SecBlock< T, A >::operator!= ( const SecBlock< T, A > &  t) const
inline

Bitwise compare two SecBlocks.

Parameters
tthe other SecBlock
Returns
true if the size and bits are equal, false otherwise

Uses a constant time compare if the arrays are equal size. The constant time compare is VerifyBufsEqual() found in misc.h.

Internally, operator!=() returns the inverse of operator==().

See also
operator==()

Definition at line 635 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock<T, A> SecBlock< T, A >::operator+ ( const SecBlock< T, A > &  t)
inline

Construct a SecBlock from this and another SecBlock.

Parameters
tthe other SecBlock
Returns
a newly constructed SecBlock that is a conacentation of this and t

Internally, a new SecBlock is created from this and a concatenation of t.

Definition at line 604 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock<T, A>& SecBlock< T, A >::operator+= ( const SecBlock< T, A > &  t)
inline

Append contents from another SecBlock.

Parameters
tthe other SecBlock

Internally, this SecBlock calls Grow and then appends t.

Definition at line 579 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
SecBlock<T, A>& SecBlock< T, A >::operator= ( const SecBlock< T, A > &  t)
inline

Assign contents from another SecBlock.

Parameters
tthe other SecBlock

Internally, operator=() calls Assign().

If the memory block is reduced in size, then the reclaimed memory is set to 0.

Definition at line 569 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
bool SecBlock< T, A >::operator== ( const SecBlock< T, A > &  t) const
inline

Bitwise compare two SecBlocks.

Parameters
tthe other SecBlock
Returns
true if the size and bits are equal, false otherwise

Uses a constant time compare if the arrays are equal size. The constant time compare is VerifyBufsEqual() found in misc.h.

See also
operator!=()

Definition at line 622 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::resize ( size_type  newSize)
inline

Change size and preserve contents.

Parameters
newSizethe new size of the memory block

Old content is preserved. If the memory block grows in size, then new memory is not initialized.

Internally, this SecBlock calls reallocate().

See also
New(), CleanNew(), Grow(), CleanGrow(), resize()

Definition at line 705 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
size_type SecBlock< T, A >::size ( ) const
inline

Provides the count of elements in the SecBlock.

Returns
number of elements in the memory block
Note
the return value is the count of elements, and not the number of bytes

Definition at line 524 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
size_type SecBlock< T, A >::SizeInBytes ( ) const
inline

Provides the number of bytes in the SecBlock.

Returns
the number of bytes in the memory block
Note
the return value is the number of bytes, and not count of elements.

Definition at line 538 of file secblock.h.

Here is the caller graph for this function:

template<class T, class A = AllocatorWithCleanup<T>>
void SecBlock< T, A >::swap ( SecBlock< T, A > &  b)
inline

Swap contents with another SecBlock.

Parameters
bthe other SecBlock

Internally, std::swap() is called on m_alloc, m_size and m_ptr.

Definition at line 714 of file secblock.h.

Here is the caller graph for this function:

Member Data Documentation

template<class T, class A = AllocatorWithCleanup<T>>
A SecBlock< T, A >::m_alloc

Definition at line 723 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
T* SecBlock< T, A >::m_ptr

Definition at line 725 of file secblock.h.

template<class T, class A = AllocatorWithCleanup<T>>
size_type SecBlock< T, A >::m_size

Definition at line 724 of file secblock.h.


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