rippled
|
Integers of any length that is a multiple of 32-bits. More...
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 |
constexpr | base_uint () |
constexpr | base_uint (beast::Zero) |
base_uint (std::uint64_t b) | |
constexpr | base_uint (std::string_view sv) noexcept(false) |
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) |
constexpr int | signum () const |
bool | operator! () const |
constexpr base_uint | operator~ () const |
base_uint & | operator= (std::uint64_t uHost) |
base_uint & | operator^= (const base_uint &b) |
base_uint & | operator&= (const base_uint &b) |
base_uint & | operator|= (const base_uint &b) |
base_uint & | operator++ () |
const base_uint | operator++ (int) |
base_uint & | operator-- () |
const base_uint | operator-- (int) |
base_uint | next () const |
base_uint | prev () const |
base_uint & | operator+= (const base_uint &b) |
constexpr bool | parseHex (std::string_view sv) |
Parse a hex string into a base_uint. More... | |
constexpr bool | parseHex (const char *str) |
bool | parseHex (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) |
template<class T > | |
static std::optional< base_uint > | fromVoidChecked (T const &from) |
constexpr static std::size_t | size () |
Static Public Attributes | |
static constexpr std::size_t | bytes = Bits / 8 |
Private Types | |
enum | ParseResult { ParseResult::okay, ParseResult::badLength, ParseResult::badChar } |
Private Member Functions | |
base_uint (void const *data, VoidHelper) | |
constexpr Expected< decltype(data_), ParseResult > | parseFromStringView (std::string_view sv) noexcept |
constexpr decltype(data_) | parseFromStringViewThrows (std::string_view sv) noexcept(false) |
Private Attributes | |
std::array< std::uint32_t, WIDTH > | data_ |
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 |
Integers of any length that is a multiple of 32-bits.
Bits | The number of bits this integer should have; must be at least 64 and a multiple of 32. |
Tag | An arbitrary type that functions as a tag and allows the instantiation of "distinct" types that the same number of bits. |
Definition at line 82 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::size_type = std::size_t |
Definition at line 108 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::difference_type = std::ptrdiff_t |
Definition at line 109 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::value_type = unsigned char |
Definition at line 110 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::pointer = value_type* |
Definition at line 111 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::reference = value_type& |
Definition at line 112 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::const_pointer = value_type const* |
Definition at line 113 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::const_reference = value_type const& |
Definition at line 114 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::iterator = pointer |
Definition at line 115 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::const_iterator = const_pointer |
Definition at line 116 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::reverse_iterator = std::reverse_iterator<iterator> |
Definition at line 117 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::const_reverse_iterator = std::reverse_iterator<const_iterator> |
Definition at line 118 of file base_uint.h.
using ripple::base_uint< Bits, Tag >::tag_type = Tag |
Definition at line 119 of file base_uint.h.
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 167 of file base_uint.h.
|
strongprivate |
Enumerator | |
---|---|
okay | |
badLength | |
badChar |
Definition at line 190 of file base_uint.h.
|
explicitprivate |
Definition at line 184 of file base_uint.h.
|
constexpr |
Definition at line 264 of file base_uint.h.
|
constexpr |
Definition at line 268 of file base_uint.h.
|
explicit |
Definition at line 272 of file base_uint.h.
|
explicitconstexprnoexcept |
Definition at line 280 of file base_uint.h.
|
explicit |
Definition at line 290 of file base_uint.h.
pointer ripple::base_uint< Bits, Tag >::data | ( | ) |
Definition at line 122 of file base_uint.h.
const_pointer ripple::base_uint< Bits, Tag >::data | ( | ) | const |
Definition at line 127 of file base_uint.h.
iterator ripple::base_uint< Bits, Tag >::begin | ( | ) |
Definition at line 133 of file base_uint.h.
iterator ripple::base_uint< Bits, Tag >::end | ( | ) |
Definition at line 138 of file base_uint.h.
const_iterator ripple::base_uint< Bits, Tag >::begin | ( | ) | const |
Definition at line 143 of file base_uint.h.
const_iterator ripple::base_uint< Bits, Tag >::end | ( | ) | const |
Definition at line 148 of file base_uint.h.
const_iterator ripple::base_uint< Bits, Tag >::cbegin | ( | ) | const |
Definition at line 153 of file base_uint.h.
const_iterator ripple::base_uint< Bits, Tag >::cend | ( | ) | const |
Definition at line 158 of file base_uint.h.
|
constexprprivatenoexcept |
Definition at line 197 of file base_uint.h.
|
constexprprivatenoexcept |
Definition at line 250 of file base_uint.h.
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 301 of file base_uint.h.
|
static |
Definition at line 312 of file base_uint.h.
|
static |
Definition at line 319 of file base_uint.h.
|
constexpr |
Definition at line 327 of file base_uint.h.
bool ripple::base_uint< Bits, Tag >::operator! | ( | ) | const |
Definition at line 337 of file base_uint.h.
|
constexpr |
Definition at line 343 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator= | ( | std::uint64_t | uHost | ) |
Definition at line 354 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator^= | ( | const base_uint< Bits, Tag > & | b | ) |
Definition at line 370 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator&= | ( | const base_uint< Bits, Tag > & | b | ) |
Definition at line 379 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator|= | ( | const base_uint< Bits, Tag > & | b | ) |
Definition at line 388 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator++ | ( | ) |
Definition at line 397 of file base_uint.h.
const base_uint ripple::base_uint< Bits, Tag >::operator++ | ( | int | ) |
Definition at line 412 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator-- | ( | ) |
Definition at line 422 of file base_uint.h.
const base_uint ripple::base_uint< Bits, Tag >::operator-- | ( | int | ) |
Definition at line 438 of file base_uint.h.
base_uint ripple::base_uint< Bits, Tag >::next | ( | ) | const |
Definition at line 448 of file base_uint.h.
base_uint ripple::base_uint< Bits, Tag >::prev | ( | ) | const |
Definition at line 455 of file base_uint.h.
base_uint& ripple::base_uint< Bits, Tag >::operator+= | ( | const base_uint< Bits, Tag > & | b | ) |
Definition at line 462 of file base_uint.h.
|
constexpr |
Parse a hex string into a base_uint.
The input must be precisely 2 * bytes
hexadecimal characters long, with one exception: the value '0'.
sv | A null-terminated string of hexadecimal characters |
Definition at line 496 of file base_uint.h.
|
constexpr |
Definition at line 507 of file base_uint.h.
bool ripple::base_uint< Bits, Tag >::parseHex | ( | std::string const & | str | ) |
Definition at line 513 of file base_uint.h.
|
staticconstexpr |
Definition at line 519 of file base_uint.h.
base_uint<Bits, Tag>& ripple::base_uint< Bits, Tag >::operator= | ( | beast::Zero | ) |
Definition at line 524 of file base_uint.h.
bool ripple::base_uint< Bits, Tag >::isZero | ( | ) | const |
Definition at line 532 of file base_uint.h.
bool ripple::base_uint< Bits, Tag >::isNonZero | ( | ) | const |
Definition at line 537 of file base_uint.h.
void ripple::base_uint< Bits, Tag >::zero | ( | ) |
Definition at line 542 of file base_uint.h.
|
friend |
Definition at line 481 of file base_uint.h.
|
staticconstexprprivate |
Definition at line 92 of file base_uint.h.
|
private |
Definition at line 97 of file base_uint.h.
|
staticconstexpr |
Definition at line 105 of file base_uint.h.