xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
basics
SHAMapHash.h
1
#pragma once
2
3
#include <xrpl/basics/base_uint.h>
4
#include <xrpl/basics/partitioned_unordered_map.h>
5
6
#include <
cstddef
>
7
#include <
ostream
>
8
#include <
string
>
9
10
namespace
xrpl
{
11
12
// A SHAMapHash is the hash of a node in a SHAMap, and also the
13
// type of the hash of the entire SHAMap.
14
15
class
SHAMapHash
16
{
17
UInt256
hash_
;
18
19
public
:
20
SHAMapHash
() =
default
;
21
explicit
SHAMapHash
(
UInt256
const
& hash) :
hash_
(hash)
22
{
23
}
24
25
[[nodiscard]]
UInt256
const
&
26
asUInt256
()
const
27
{
28
return
hash_
;
29
}
30
UInt256
&
31
asUInt256
()
32
{
33
return
hash_
;
34
}
35
[[nodiscard]]
bool
36
isZero
()
const
37
{
38
return
hash_
.isZero();
39
}
40
[[nodiscard]]
bool
41
isNonZero
()
const
42
{
43
return
hash_
.isNonZero();
44
}
45
[[nodiscard]]
int
46
signum
()
const
47
{
48
return
hash_
.signum();
49
}
50
void
51
zero
()
52
{
53
hash_
.zero();
54
}
55
56
friend
bool
57
operator==
(
SHAMapHash
const
& x,
SHAMapHash
const
& y)
58
{
59
return
x.
hash_
== y.
hash_
;
60
}
61
62
friend
bool
63
operator<
(
SHAMapHash
const
& x,
SHAMapHash
const
& y)
64
{
65
return
x.
hash_
< y.
hash_
;
66
}
67
68
friend
std::ostream
&
69
operator<<
(
std::ostream
& os,
SHAMapHash
const
& x)
70
{
71
return
os << x.
hash_
;
72
}
73
74
friend
std::string
75
to_string
(
SHAMapHash
const
& x)
76
{
77
return
to_string
(x.
hash_
);
78
}
79
80
template
<
class
H>
81
friend
void
82
hash_append
(H& h,
SHAMapHash
const
& x)
83
{
84
hash_append
(h, x.
hash_
);
85
}
86
};
87
88
template
<>
89
inline
std::size_t
90
extract
(
SHAMapHash
const
& key)
91
{
92
return
*
reinterpret_cast<
std::size_t
const*
>
(key.
asUInt256
().data());
93
}
94
95
}
// namespace xrpl
std::ostream
std::string
xrpl::SHAMapHash
Definition
SHAMapHash.h:16
xrpl::SHAMapHash::signum
int signum() const
Definition
SHAMapHash.h:46
xrpl::SHAMapHash::asUInt256
UInt256 const & asUInt256() const
Definition
SHAMapHash.h:26
xrpl::SHAMapHash::hash_
UInt256 hash_
Definition
SHAMapHash.h:17
xrpl::SHAMapHash::to_string
friend std::string to_string(SHAMapHash const &x)
Definition
SHAMapHash.h:75
xrpl::SHAMapHash::SHAMapHash
SHAMapHash()=default
xrpl::SHAMapHash::operator==
friend bool operator==(SHAMapHash const &x, SHAMapHash const &y)
Definition
SHAMapHash.h:57
xrpl::SHAMapHash::operator<
friend bool operator<(SHAMapHash const &x, SHAMapHash const &y)
Definition
SHAMapHash.h:63
xrpl::SHAMapHash::isNonZero
bool isNonZero() const
Definition
SHAMapHash.h:41
xrpl::SHAMapHash::hash_append
friend void hash_append(H &h, SHAMapHash const &x)
Definition
SHAMapHash.h:82
xrpl::SHAMapHash::operator<<
friend std::ostream & operator<<(std::ostream &os, SHAMapHash const &x)
Definition
SHAMapHash.h:69
xrpl::SHAMapHash::asUInt256
UInt256 & asUInt256()
Definition
SHAMapHash.h:31
xrpl::SHAMapHash::isZero
bool isZero() const
Definition
SHAMapHash.h:36
xrpl::SHAMapHash::zero
void zero()
Definition
SHAMapHash.h:51
xrpl::SHAMapHash::SHAMapHash
SHAMapHash(UInt256 const &hash)
Definition
SHAMapHash.h:21
cstddef
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::UInt256
BaseUInt< 256 > UInt256
Definition
base_uint.h:580
xrpl::extract
std::size_t extract(UInt256 const &key)
Definition
base_uint.h:679
ostream
std::size_t
string
Generated by
1.17.0