rippled
Loading...
Searching...
No Matches
Rules.h
1#ifndef XRPL_LEDGER_RULES_H_INCLUDED
2#define XRPL_LEDGER_RULES_H_INCLUDED
3
4#include <xrpl/basics/base_uint.h>
5#include <xrpl/beast/hash/uhash.h>
6#include <xrpl/protocol/STVector256.h>
7
8#include <unordered_set>
9
10namespace ripple {
11
12bool
13isFeatureEnabled(uint256 const& feature);
14
15class DigestAwareReadView;
16
18class Rules
19{
20private:
21 class Impl;
22
23 // Carrying impl by shared_ptr makes Rules comparatively cheap to pass
24 // by value.
26
27public:
28 Rules(Rules const&) = default;
29
30 Rules(Rules&&) = default;
31
32 Rules&
33 operator=(Rules const&) = default;
34
35 Rules&
36 operator=(Rules&&) = default;
37
38 Rules() = delete;
39
46
47private:
48 // Allow a friend function to construct Rules.
49 friend Rules
51 DigestAwareReadView const& ledger,
52 Rules const& current);
53
54 friend Rules
56 DigestAwareReadView const& ledger,
58
59 Rules(
62 STVector256 const& amendments);
63
65 presets() const;
66
67public:
69 bool
70 enabled(uint256 const& feature) const;
71
76 bool
77 operator==(Rules const&) const;
78
79 bool
80 operator!=(Rules const& other) const;
81};
82
85
86void
88
113
114} // namespace ripple
115#endif
RAII class to set and restore the current transaction rules.
Definition Rules.h:92
std::optional< Rules > saved_
Definition Rules.h:111
CurrentTransactionRulesGuard(CurrentTransactionRulesGuard const &)=delete
CurrentTransactionRulesGuard & operator=(CurrentTransactionRulesGuard const &)=delete
ReadView that associates keys with digests.
Definition ReadView.h:236
Rules controlling protocol behavior.
Definition Rules.h:19
Rules(Rules const &)=default
std::shared_ptr< Impl const > impl_
Definition Rules.h:25
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition Rules.cpp:111
bool operator!=(Rules const &other) const
Definition Rules.cpp:130
friend Rules makeRulesGivenLedger(DigestAwareReadView const &ledger, Rules const &current)
Definition ReadView.cpp:50
bool operator==(Rules const &) const
Returns true if two rule sets are identical.
Definition Rules.cpp:119
Rules & operator=(Rules &&)=default
Rules & operator=(Rules const &)=default
Rules(Rules &&)=default
std::unordered_set< uint256, beast::uhash<> > const & presets() const
Definition Rules.cpp:105
Rules()=delete
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
bool isFeatureEnabled(uint256 const &feature)
Definition Rules.cpp:136
void setCurrentTransactionRules(std::optional< Rules > r)
Definition Rules.cpp:34
base_uint< 256 > uint256
Definition base_uint.h:539
@ current
This was a new validation and was added.
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:138
std::optional< Rules > const & getCurrentTransactionRules()
Definition Rules.cpp:28