xrpld
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
16bool
17isFeatureEnabled(uint256 const& feature, bool resultIfNoRules);
18
26bool
27isFeatureEnabled(uint256 const& feature);
28
30
32class Rules
33{
34private:
35 class Impl;
36
37 // Carrying impl by shared_ptr makes Rules comparatively cheap to pass
38 // by value.
40
41public:
42 Rules(Rules const&) = default;
43
44 Rules(Rules&&) = default;
45
46 Rules&
47 operator=(Rules const&) = default;
48
49 Rules&
50 operator=(Rules&&) = default;
51
52 Rules() = delete;
53
60
61private:
62 // Allow a friend function to construct Rules.
63 friend Rules
64 makeRulesGivenLedger(DigestAwareReadView const& ledger, Rules const& current);
65
66 friend Rules
68 DigestAwareReadView const& ledger,
70
71 Rules(
74 STVector256 const& amendments);
75
77 presets() const;
78
79public:
81 [[nodiscard]] bool
82 enabled(uint256 const& feature) const;
83
88 bool
89 operator==(Rules const&) const;
90
91 bool
92 operator!=(Rules const& other) const;
93};
94
97
98void
100
124
126
127bool
128useRulesGuards(Rules const& rules);
129
130void
132 Rules const& rules,
134 std::optional<NumberMantissaScaleGuard>& mantissaScaleGuard);
135
136} // namespace xrpl
std::optional< Rules > saved_
Definition Rules.h:122
CurrentTransactionRulesGuard & operator=(CurrentTransactionRulesGuard const &)=delete
CurrentTransactionRulesGuard(CurrentTransactionRulesGuard const &)=delete
ReadView that associates keys with digests.
Definition ReadView.h:249
Sets the new scale and restores the old scale when it leaves scope.
Definition Number.h:920
Rules controlling protocol behavior.
Definition Rules.h:33
Rules & operator=(Rules const &)=default
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition Rules.cpp:171
std::unordered_set< uint256, beast::Uhash<> > const & presets() const
Definition Rules.cpp:165
Rules(Rules const &)=default
Rules()=delete
std::shared_ptr< Impl const > impl_
Definition Rules.h:39
friend Rules makeRulesGivenLedger(DigestAwareReadView const &ledger, Rules const &current)
Definition ReadView.cpp:61
bool operator!=(Rules const &other) const
Definition Rules.cpp:188
Rules & operator=(Rules &&)=default
Rules(Rules &&)=default
bool operator==(Rules const &) const
Returns true if two rule sets are identical.
Definition Rules.cpp:179
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
bool isFeatureEnabled(uint256 const &feature, bool resultIfNoRules)
Check whether a feature is enabled in the current ledger rules.
Definition Rules.cpp:194
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:139
bool useRulesGuards(Rules const &rules)
Definition Rules.cpp:69
void createGuards(Rules const &rules, std::optional< CurrentTransactionRulesGuard > &rulesGuard, std::optional< NumberMantissaScaleGuard > &mantissaScaleGuard)
Definition Rules.cpp:83
std::optional< Rules > const & getCurrentTransactionRules()
Definition Rules.cpp:30
void setCurrentTransactionRules(std::optional< Rules > r)
Definition Rules.cpp:36
BaseUInt< 256 > uint256
Definition base_uint.h:562