rippled
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
ripple::base_uint< Bits, Tag > Class Template Reference
Collaboration diagram for ripple::base_uint< Bits, Tag >:
Collaboration graph
[legend]

Classes

struct  VoidHelper
 Construct from a raw pointer. More...
 

Public Types

using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 
using value_type = unsigned char
 
using pointer = value_type *
 
using reference = value_type &
 
using const_pointer = value_type const *
 
using const_reference = value_type const &
 
using iterator = pointer
 
using const_iterator = const_pointer
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using tag_type = Tag
 
using hasher = hardened_hash<>
 Value hashing function. More...
 

Public Member Functions

pointer data ()
 
const_pointer data () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
 base_uint ()
 
 base_uint (beast::Zero)
 
 base_uint (std::uint64_t b)
 
template<class Container , class = std::enable_if_t< detail::is_contiguous_container<Container>::value && std::is_trivially_copyable<typename Container::value_type>::value>>
 base_uint (Container const &c)
 
template<class Container >
std::enable_if_t< detail::is_contiguous_container< Container >::value &&std::is_trivially_copyable< typename Container::value_type >::value, base_uint & > operator= (Container const &c)
 
int signum () const
 
bool operator! () const
 
const base_uint operator~ () const
 
base_uintoperator= (std::uint64_t uHost)
 
base_uintoperator^= (const base_uint &b)
 
base_uintoperator&= (const base_uint &b)
 
base_uintoperator|= (const base_uint &b)
 
base_uintoperator++ ()
 
const base_uint operator++ (int)
 
base_uintoperator-- ()
 
const base_uint operator-- (int)
 
base_uintoperator+= (const base_uint &b)
 
bool SetHexExact (const char *psz)
 Parse a hex string into a base_uint The string must contain exactly bytes * 2 hex characters and must not have any leading or trailing whitespace. More...
 
bool SetHex (const char *psz, bool bStrict=false)
 Parse a hex string into a base_uint The input can be: More...
 
bool SetHex (std::string const &str, bool bStrict=false)
 
bool SetHexExact (std::string const &str)
 
base_uint< Bits, Tag > & operator= (beast::Zero)
 
bool isZero () const
 
bool isNonZero () const
 
void zero ()
 

Static Public Member Functions

static base_uint fromVoid (void const *data)
 
constexpr static std::size_t size ()
 

Static Public Attributes

static constexpr std::size_t bytes = Bits / 8
 

Private Member Functions

 base_uint (void const *data, VoidHelper)
 

Private Attributes

std::array< std::uint32_t, WIDTHdata_
 

Static Private Attributes

static constexpr std::size_t WIDTH = Bits / 32
 

Friends

template<class Hasher >
void hash_append (Hasher &h, base_uint const &a) noexcept
 

Detailed Description

template<std::size_t Bits, class Tag = void>
class ripple::base_uint< Bits, Tag >

Definition at line 63 of file base_uint.h.

Member Typedef Documentation

◆ size_type

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::size_type = std::size_t

Definition at line 89 of file base_uint.h.

◆ difference_type

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::difference_type = std::ptrdiff_t

Definition at line 90 of file base_uint.h.

◆ value_type

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::value_type = unsigned char

Definition at line 91 of file base_uint.h.

◆ pointer

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::pointer = value_type*

Definition at line 92 of file base_uint.h.

◆ reference

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::reference = value_type&

Definition at line 93 of file base_uint.h.

◆ const_pointer

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::const_pointer = value_type const*

Definition at line 94 of file base_uint.h.

◆ const_reference

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::const_reference = value_type const&

Definition at line 95 of file base_uint.h.

◆ iterator

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::iterator = pointer

Definition at line 96 of file base_uint.h.

◆ const_iterator

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::const_iterator = const_pointer

Definition at line 97 of file base_uint.h.

◆ reverse_iterator

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 98 of file base_uint.h.

◆ const_reverse_iterator

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 99 of file base_uint.h.

◆ tag_type

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::tag_type = Tag

Definition at line 100 of file base_uint.h.

◆ hasher

template<std::size_t Bits, class Tag = void>
using ripple::base_uint< Bits, Tag >::hasher = hardened_hash<>

Value hashing function.

The seed prevents crafted inputs from causing degenerate parent containers.

Definition at line 148 of file base_uint.h.

Constructor & Destructor Documentation

◆ base_uint() [1/5]

template<std::size_t Bits, class Tag = void>
ripple::base_uint< Bits, Tag >::base_uint ( void const *  data,
VoidHelper   
)
explicitprivate

Definition at line 165 of file base_uint.h.

◆ base_uint() [2/5]

template<std::size_t Bits, class Tag = void>
ripple::base_uint< Bits, Tag >::base_uint ( )

Definition at line 171 of file base_uint.h.

◆ base_uint() [3/5]

template<std::size_t Bits, class Tag = void>
ripple::base_uint< Bits, Tag >::base_uint ( beast::Zero  )

Definition at line 176 of file base_uint.h.

◆ base_uint() [4/5]

template<std::size_t Bits, class Tag = void>
ripple::base_uint< Bits, Tag >::base_uint ( std::uint64_t  b)
explicit

Definition at line 181 of file base_uint.h.

◆ base_uint() [5/5]

template<std::size_t Bits, class Tag = void>
template<class Container , class = std::enable_if_t< detail::is_contiguous_container<Container>::value && std::is_trivially_copyable<typename Container::value_type>::value>>
ripple::base_uint< Bits, Tag >::base_uint ( Container const &  c)
explicit

Definition at line 191 of file base_uint.h.

Member Function Documentation

◆ data() [1/2]

template<std::size_t Bits, class Tag = void>
pointer ripple::base_uint< Bits, Tag >::data ( )

Definition at line 103 of file base_uint.h.

◆ data() [2/2]

template<std::size_t Bits, class Tag = void>
const_pointer ripple::base_uint< Bits, Tag >::data ( ) const

Definition at line 108 of file base_uint.h.

◆ begin() [1/2]

template<std::size_t Bits, class Tag = void>
iterator ripple::base_uint< Bits, Tag >::begin ( )

Definition at line 114 of file base_uint.h.

◆ end() [1/2]

template<std::size_t Bits, class Tag = void>
iterator ripple::base_uint< Bits, Tag >::end ( )

Definition at line 119 of file base_uint.h.

◆ begin() [2/2]

template<std::size_t Bits, class Tag = void>
const_iterator ripple::base_uint< Bits, Tag >::begin ( ) const

Definition at line 124 of file base_uint.h.

◆ end() [2/2]

template<std::size_t Bits, class Tag = void>
const_iterator ripple::base_uint< Bits, Tag >::end ( ) const

Definition at line 129 of file base_uint.h.

◆ cbegin()

template<std::size_t Bits, class Tag = void>
const_iterator ripple::base_uint< Bits, Tag >::cbegin ( ) const

Definition at line 134 of file base_uint.h.

◆ cend()

template<std::size_t Bits, class Tag = void>
const_iterator ripple::base_uint< Bits, Tag >::cend ( ) const

Definition at line 139 of file base_uint.h.

◆ operator=() [1/3]

template<std::size_t Bits, class Tag = void>
template<class Container >
std::enable_if_t< detail::is_contiguous_container<Container>::value && std::is_trivially_copyable<typename Container::value_type>::value, base_uint&> ripple::base_uint< Bits, Tag >::operator= ( Container const &  c)

Definition at line 202 of file base_uint.h.

◆ fromVoid()

template<std::size_t Bits, class Tag = void>
static base_uint ripple::base_uint< Bits, Tag >::fromVoid ( void const *  data)
static

Definition at line 213 of file base_uint.h.

◆ signum()

template<std::size_t Bits, class Tag = void>
int ripple::base_uint< Bits, Tag >::signum ( ) const

Definition at line 219 of file base_uint.h.

◆ operator!()

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::operator! ( ) const

Definition at line 229 of file base_uint.h.

◆ operator~()

template<std::size_t Bits, class Tag = void>
const base_uint ripple::base_uint< Bits, Tag >::operator~ ( ) const

Definition at line 235 of file base_uint.h.

◆ operator=() [2/3]

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator= ( std::uint64_t  uHost)

Definition at line 246 of file base_uint.h.

◆ operator^=()

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator^= ( const base_uint< Bits, Tag > &  b)

Definition at line 262 of file base_uint.h.

◆ operator&=()

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator&= ( const base_uint< Bits, Tag > &  b)

Definition at line 271 of file base_uint.h.

◆ operator|=()

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator|= ( const base_uint< Bits, Tag > &  b)

Definition at line 280 of file base_uint.h.

◆ operator++() [1/2]

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator++ ( )

Definition at line 289 of file base_uint.h.

◆ operator++() [2/2]

template<std::size_t Bits, class Tag = void>
const base_uint ripple::base_uint< Bits, Tag >::operator++ ( int  )

Definition at line 304 of file base_uint.h.

◆ operator--() [1/2]

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator-- ( )

Definition at line 314 of file base_uint.h.

◆ operator--() [2/2]

template<std::size_t Bits, class Tag = void>
const base_uint ripple::base_uint< Bits, Tag >::operator-- ( int  )

Definition at line 330 of file base_uint.h.

◆ operator+=()

template<std::size_t Bits, class Tag = void>
base_uint& ripple::base_uint< Bits, Tag >::operator+= ( const base_uint< Bits, Tag > &  b)

Definition at line 340 of file base_uint.h.

◆ SetHexExact() [1/2]

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::SetHexExact ( const char *  psz)

Parse a hex string into a base_uint The string must contain exactly bytes * 2 hex characters and must not have any leading or trailing whitespace.

Definition at line 370 of file base_uint.h.

◆ SetHex() [1/2]

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::SetHex ( const char *  psz,
bool  bStrict = false 
)

Parse a hex string into a base_uint The input can be:

  • shorter than the full hex representation by not including leading zeroes.
  • longer than the full hex representation in which case leading bytes are discarded.

When finished parsing, the string must be fully consumed with only a null terminator remaining.

When bStrict is false, the parsing is done in non-strict mode, and, if present, leading whitespace and the 0x prefix will be skipped.

Definition at line 406 of file base_uint.h.

◆ SetHex() [2/2]

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::SetHex ( std::string const &  str,
bool  bStrict = false 
)

Definition at line 450 of file base_uint.h.

◆ SetHexExact() [2/2]

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::SetHexExact ( std::string const &  str)

Definition at line 456 of file base_uint.h.

◆ size()

template<std::size_t Bits, class Tag = void>
constexpr static std::size_t ripple::base_uint< Bits, Tag >::size ( )
staticconstexpr

Definition at line 462 of file base_uint.h.

◆ operator=() [3/3]

template<std::size_t Bits, class Tag = void>
base_uint<Bits, Tag>& ripple::base_uint< Bits, Tag >::operator= ( beast::Zero  )

Definition at line 467 of file base_uint.h.

◆ isZero()

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::isZero ( ) const

Definition at line 475 of file base_uint.h.

◆ isNonZero()

template<std::size_t Bits, class Tag = void>
bool ripple::base_uint< Bits, Tag >::isNonZero ( ) const

Definition at line 480 of file base_uint.h.

◆ zero()

template<std::size_t Bits, class Tag = void>
void ripple::base_uint< Bits, Tag >::zero ( )

Definition at line 485 of file base_uint.h.

Friends And Related Function Documentation

◆ hash_append

template<std::size_t Bits, class Tag = void>
template<class Hasher >
void hash_append ( Hasher &  h,
base_uint< Bits, Tag > const &  a 
)
friend

Definition at line 359 of file base_uint.h.

Member Data Documentation

◆ WIDTH

template<std::size_t Bits, class Tag = void>
constexpr std::size_t ripple::base_uint< Bits, Tag >::WIDTH = Bits / 32
staticconstexprprivate

Definition at line 73 of file base_uint.h.

◆ data_

template<std::size_t Bits, class Tag = void>
std::array<std::uint32_t, WIDTH> ripple::base_uint< Bits, Tag >::data_
private

Definition at line 78 of file base_uint.h.

◆ bytes

template<std::size_t Bits, class Tag = void>
constexpr std::size_t ripple::base_uint< Bits, Tag >::bytes = Bits / 8
staticconstexpr

Definition at line 86 of file base_uint.h.