Fabcoin Core  0.16.2
P2P Digital Currency
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
dev::FixedHash< N > Class Template Reference

Fixed-size raw-byte array container type, with an API optimised for storing hashes. More...

#include <FixedHash.h>

Inheritance diagram for dev::FixedHash< N >:
[legend]

Classes

struct  hash
 

Public Types

enum  { size = N }
 The size of the container. More...
 
enum  ConstructFromPointerType { ConstructFromPointer }
 A dummy flag to avoid accidental construction from pointer. More...
 
enum  ConstructFromStringType { FromHex, FromBinary }
 Method to convert from a string. More...
 
enum  ConstructFromHashType { AlignLeft, AlignRight, FailIfDifferent }
 Method to convert from a string. More...
 
using Arith = boost::multiprecision::number< boost::multiprecision::cpp_int_backend< N *8, N *8, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void >>
 The corresponding arithmetic type. More...
 

Public Member Functions

 FixedHash ()
 Construct an empty hash. More...
 
template<unsigned M>
 FixedHash (FixedHash< M > const &_h, ConstructFromHashType _t=AlignLeft)
 Construct from another hash, filling with zeroes or cropping as necessary. More...
 
 FixedHash (Arith const &_arith)
 Convert from the corresponding arithmetic type. More...
 
 FixedHash (unsigned _u)
 Convert from unsigned. More...
 
 FixedHash (bytes const &_b, ConstructFromHashType _t=FailIfDifferent)
 Explicitly construct, copying from a byte array. More...
 
 FixedHash (bytesConstRef _b, ConstructFromHashType _t=FailIfDifferent)
 Explicitly construct, copying from a byte array. More...
 
 FixedHash (byte const *_bs, ConstructFromPointerType)
 Explicitly construct, copying from a bytes in memory with given pointer. More...
 
 FixedHash (std::string const &_s, ConstructFromStringType _t=FromHex, ConstructFromHashType _ht=FailIfDifferent)
 Explicitly construct, copying from a string. More...
 
 operator Arith () const
 Convert to arithmetic type. More...
 
 operator bool () const
 
bool operator== (FixedHash const &_c) const
 
bool operator!= (FixedHash const &_c) const
 
bool operator< (FixedHash const &_c) const
 
bool operator>= (FixedHash const &_c) const
 
bool operator<= (FixedHash const &_c) const
 
bool operator> (FixedHash const &_c) const
 
FixedHashoperator^= (FixedHash const &_c)
 
FixedHash operator^ (FixedHash const &_c) const
 
FixedHashoperator|= (FixedHash const &_c)
 
FixedHash operator| (FixedHash const &_c) const
 
FixedHashoperator&= (FixedHash const &_c)
 
FixedHash operator& (FixedHash const &_c) const
 
FixedHash operator~ () const
 
FixedHashoperator++ ()
 
bool contains (FixedHash const &_c) const
 
byteoperator[] (unsigned _i)
 
byte operator[] (unsigned _i) const
 
std::string abridged () const
 
std::string abridgedMiddle () const
 
std::string hex () const
 
bytesRef ref ()
 
bytesConstRef ref () const
 
bytedata ()
 
byte const * data () const
 
bytes asBytes () const
 
std::array< byte, N > & asArray ()
 
std::array< byte, N > const & asArray () const
 
template<class Engine >
void randomize (Engine &_eng)
 Populate with random data. More...
 
template<unsigned P, unsigned M>
FixedHashshiftBloom (FixedHash< M > const &_h)
 
template<unsigned P, unsigned M>
bool containsBloom (FixedHash< M > const &_h)
 
template<unsigned P, unsigned M>
FixedHash< M > bloomPart () const
 
unsigned firstBitSet () const
 Returns the index of the first bit set to one, or size() * 8 if no bits are set. More...
 
void clear ()
 
template<>
bool operator== (FixedHash< 32 > const &_other) const
 Fast equality operator for h256. More...
 

Static Public Member Functions

static FixedHash random ()
 

Private Attributes

std::array< byte, N > m_data
 The binary data. More...
 

Detailed Description

template<unsigned N>
class dev::FixedHash< N >

Fixed-size raw-byte array container type, with an API optimised for storing hashes.

Transparently converts to/from the corresponding arithmetic type; this will assume the data contained in the hash is big-endian.

Definition at line 47 of file FixedHash.h.

Member Typedef Documentation

template<unsigned N>
using dev::FixedHash< N >::Arith = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<N * 8, N * 8, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>

The corresponding arithmetic type.

Definition at line 51 of file FixedHash.h.

Member Enumeration Documentation

template<unsigned N>
anonymous enum

The size of the container.

Enumerator
size 

Definition at line 54 of file FixedHash.h.

template<unsigned N>
enum dev::FixedHash::ConstructFromHashType

Method to convert from a string.

Enumerator
AlignLeft 
AlignRight 
FailIfDifferent 

Definition at line 63 of file FixedHash.h.

template<unsigned N>
enum dev::FixedHash::ConstructFromPointerType

A dummy flag to avoid accidental construction from pointer.

Enumerator
ConstructFromPointer 

Definition at line 57 of file FixedHash.h.

template<unsigned N>
enum dev::FixedHash::ConstructFromStringType

Method to convert from a string.

Enumerator
FromHex 
FromBinary 

Definition at line 60 of file FixedHash.h.

Constructor & Destructor Documentation

template<unsigned N>
dev::FixedHash< N >::FixedHash ( )
inline

Construct an empty hash.

Definition at line 66 of file FixedHash.h.

template<unsigned N>
template<unsigned M>
dev::FixedHash< N >::FixedHash ( FixedHash< M > const &  _h,
ConstructFromHashType  _t = AlignLeft 
)
inlineexplicit

Construct from another hash, filling with zeroes or cropping as necessary.

Definition at line 69 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( Arith const &  _arith)
inline

Convert from the corresponding arithmetic type.

Definition at line 72 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( unsigned  _u)
inlineexplicit

Convert from unsigned.

Definition at line 75 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( bytes const &  _b,
ConstructFromHashType  _t = FailIfDifferent 
)
inlineexplicit

Explicitly construct, copying from a byte array.

Definition at line 78 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( bytesConstRef  _b,
ConstructFromHashType  _t = FailIfDifferent 
)
inlineexplicit

Explicitly construct, copying from a byte array.

Definition at line 81 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( byte const *  _bs,
ConstructFromPointerType   
)
inlineexplicit

Explicitly construct, copying from a bytes in memory with given pointer.

Definition at line 84 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::FixedHash ( std::string const &  _s,
ConstructFromStringType  _t = FromHex,
ConstructFromHashType  _ht = FailIfDifferent 
)
inlineexplicit

Explicitly construct, copying from a string.

Definition at line 87 of file FixedHash.h.

Member Function Documentation

template<unsigned N>
std::string dev::FixedHash< N >::abridged ( ) const
inline
Returns
an abridged version of the hash as a user-readable hex string.

Definition at line 124 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
std::string dev::FixedHash< N >::abridgedMiddle ( ) const
inline
Returns
a version of the hash as a user-readable hex string that leaves out the middle part.

Definition at line 127 of file FixedHash.h.

template<unsigned N>
std::array<byte, N>& dev::FixedHash< N >::asArray ( )
inline
Returns
a mutable reference to the object's data as an STL array.

Definition at line 148 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
std::array<byte, N> const& dev::FixedHash< N >::asArray ( ) const
inline
Returns
a constant reference to the object's data as an STL array.

Definition at line 151 of file FixedHash.h.

template<unsigned N>
bytes dev::FixedHash< N >::asBytes ( ) const
inline
Returns
a copy of the object's data as a byte vector.

Definition at line 145 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
template<unsigned P, unsigned M>
FixedHash<M> dev::FixedHash< N >::bloomPart ( ) const
inline

Definition at line 180 of file FixedHash.h.

template<unsigned N>
void dev::FixedHash< N >::clear ( )
inline

Definition at line 217 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
bool dev::FixedHash< N >::contains ( FixedHash< N > const &  _c) const
inline
Returns
true if all one-bits in _c are set in this object.

Definition at line 116 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
template<unsigned P, unsigned M>
bool dev::FixedHash< N >::containsBloom ( FixedHash< M > const &  _h)
inline

Definition at line 175 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
byte* dev::FixedHash< N >::data ( )
inline
Returns
a mutable byte pointer to the object's data.

Definition at line 139 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
byte const* dev::FixedHash< N >::data ( ) const
inline
Returns
a constant byte pointer to the object's data.

Definition at line 142 of file FixedHash.h.

template<unsigned N>
unsigned dev::FixedHash< N >::firstBitSet ( ) const
inline

Returns the index of the first bit set to one, or size() * 8 if no bits are set.

Definition at line 203 of file FixedHash.h.

template<unsigned N>
std::string dev::FixedHash< N >::hex ( ) const
inline
Returns
the hash as a user-readable hex string.

Definition at line 130 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
dev::FixedHash< N >::operator Arith ( ) const
inline

Convert to arithmetic type.

Definition at line 90 of file FixedHash.h.

template<unsigned N>
dev::FixedHash< N >::operator bool ( ) const
inlineexplicit
Returns
true iff this is the empty hash.

Definition at line 93 of file FixedHash.h.

template<unsigned N>
bool dev::FixedHash< N >::operator!= ( FixedHash< N > const &  _c) const
inline

Definition at line 97 of file FixedHash.h.

template<unsigned N>
FixedHash dev::FixedHash< N >::operator& ( FixedHash< N > const &  _c) const
inline

Definition at line 109 of file FixedHash.h.

template<unsigned N>
FixedHash& dev::FixedHash< N >::operator&= ( FixedHash< N > const &  _c)
inline

Definition at line 108 of file FixedHash.h.

template<unsigned N>
FixedHash& dev::FixedHash< N >::operator++ ( )
inline

Definition at line 113 of file FixedHash.h.

template<unsigned N>
bool dev::FixedHash< N >::operator< ( FixedHash< N > const &  _c) const
inline

Definition at line 98 of file FixedHash.h.

template<unsigned N>
bool dev::FixedHash< N >::operator<= ( FixedHash< N > const &  _c) const
inline

Definition at line 100 of file FixedHash.h.

template<unsigned N>
bool dev::FixedHash< N >::operator== ( FixedHash< N > const &  _c) const
inline

Definition at line 96 of file FixedHash.h.

template<>
bool dev::FixedHash< 32 >::operator== ( FixedHash< 32 > const &  _other) const
inline

Fast equality operator for h256.

Definition at line 302 of file FixedHash.h.

Here is the call graph for this function:

template<unsigned N>
bool dev::FixedHash< N >::operator> ( FixedHash< N > const &  _c) const
inline

Definition at line 101 of file FixedHash.h.

template<unsigned N>
bool dev::FixedHash< N >::operator>= ( FixedHash< N > const &  _c) const
inline

Definition at line 99 of file FixedHash.h.

template<unsigned N>
byte& dev::FixedHash< N >::operator[] ( unsigned  _i)
inline
Returns
a particular byte from the hash.

Definition at line 119 of file FixedHash.h.

template<unsigned N>
byte dev::FixedHash< N >::operator[] ( unsigned  _i) const
inline
Returns
a particular byte from the hash.

Definition at line 121 of file FixedHash.h.

template<unsigned N>
FixedHash dev::FixedHash< N >::operator^ ( FixedHash< N > const &  _c) const
inline

Definition at line 105 of file FixedHash.h.

template<unsigned N>
FixedHash& dev::FixedHash< N >::operator^= ( FixedHash< N > const &  _c)
inline

Definition at line 104 of file FixedHash.h.

template<unsigned N>
FixedHash dev::FixedHash< N >::operator| ( FixedHash< N > const &  _c) const
inline

Definition at line 107 of file FixedHash.h.

template<unsigned N>
FixedHash& dev::FixedHash< N >::operator|= ( FixedHash< N > const &  _c)
inline

Definition at line 106 of file FixedHash.h.

template<unsigned N>
FixedHash dev::FixedHash< N >::operator~ ( ) const
inline

Definition at line 110 of file FixedHash.h.

template<unsigned N>
static FixedHash dev::FixedHash< N >::random ( )
inlinestatic
Returns
a random valued object.

Definition at line 162 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
template<class Engine >
void dev::FixedHash< N >::randomize ( Engine &  _eng)
inline

Populate with random data.

Definition at line 155 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
bytesRef dev::FixedHash< N >::ref ( )
inline
Returns
a mutable byte vector_ref to the object's data.

Definition at line 133 of file FixedHash.h.

Here is the caller graph for this function:

template<unsigned N>
bytesConstRef dev::FixedHash< N >::ref ( ) const
inline
Returns
a constant byte vector_ref to the object's data.

Definition at line 136 of file FixedHash.h.

template<unsigned N>
template<unsigned P, unsigned M>
FixedHash& dev::FixedHash< N >::shiftBloom ( FixedHash< M > const &  _h)
inline

Definition at line 170 of file FixedHash.h.

Here is the caller graph for this function:

Member Data Documentation

template<unsigned N>
std::array<byte, N> dev::FixedHash< N >::m_data
private

The binary data.

Definition at line 220 of file FixedHash.h.


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