rippled
Loading...
Searching...
No Matches
Rules.h
1#pragma once
2
3#include <xrpl/basics/base_uint.h>
4#include <xrpl/beast/hash/uhash.h>
5#include <xrpl/protocol/STVector256.h>
6
7#include <unordered_set>
8
9namespace xrpl {
10
11bool
12isFeatureEnabled(uint256 const& feature);
13
14class DigestAwareReadView;
15
17class Rules
18{
19private:
20 class Impl;
21
22 // Carrying impl by shared_ptr makes Rules comparatively cheap to pass
23 // by value.
25
26public:
27 Rules(Rules const&) = default;
28
29 Rules(Rules&&) = default;
30
31 Rules&
32 operator=(Rules const&) = default;
33
34 Rules&
35 operator=(Rules&&) = default;
36
37 Rules() = delete;
38
45
46private:
47 // Allow a friend function to construct Rules.
48 friend Rules
50
51 friend Rules
53
54 Rules(
57 STVector256 const& amendments);
58
60 presets() const;
61
62public:
64 bool
65 enabled(uint256 const& feature) const;
66
71 bool
72 operator==(Rules const&) const;
73
74 bool
75 operator!=(Rules const& other) const;
76};
77
80
81void
83
107
108} // namespace xrpl
RAII class to set and restore the current transaction rules.
Definition Rules.h:87
std::optional< Rules > saved_
Definition Rules.h:105
CurrentTransactionRulesGuard & operator=(CurrentTransactionRulesGuard const &)=delete
CurrentTransactionRulesGuard(CurrentTransactionRulesGuard const &)=delete
ReadView that associates keys with digests.
Definition ReadView.h:229
Rules controlling protocol behavior.
Definition Rules.h:18
Rules & operator=(Rules const &)=default
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition Rules.cpp:118
Rules(Rules const &)=default
std::unordered_set< uint256, beast::uhash<> > const & presets() const
Definition Rules.cpp:112
Rules()=delete
std::shared_ptr< Impl const > impl_
Definition Rules.h:24
friend Rules makeRulesGivenLedger(DigestAwareReadView const &ledger, Rules const &current)
Definition ReadView.cpp:50
bool operator!=(Rules const &other) const
Definition Rules.cpp:135
Rules & operator=(Rules &&)=default
Rules(Rules &&)=default
bool operator==(Rules const &) const
Returns true if two rule sets are identical.
Definition Rules.cpp:126
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:137
std::optional< Rules > const & getCurrentTransactionRules()
Definition Rules.cpp:31
@ current
This was a new validation and was added.
base_uint< 256 > uint256
Definition base_uint.h:526
void setCurrentTransactionRules(std::optional< Rules > r)
Definition Rules.cpp:37
bool isFeatureEnabled(uint256 const &feature)
Definition Rules.cpp:141