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 <memory>
8#include <optional>
9#include <unordered_set>
10#include <utility>
11
12namespace xrpl {
13
20bool
21isFeatureEnabled(uint256 const& feature, bool resultIfNoRules);
22
31bool
32isFeatureEnabled(uint256 const& feature);
33
35
39class Rules
40{
41private:
42 class Impl;
43
44 // Carrying impl by shared_ptr makes Rules comparatively cheap to pass
45 // by value.
47
48public:
49 Rules(Rules const&) = default;
50
51 Rules(Rules&&) = default;
52
53 Rules&
54 operator=(Rules const&) = default;
55
56 Rules&
57 operator=(Rules&&) = default;
58
59 Rules() = delete;
60
68
69private:
70 // Allow a friend function to construct Rules.
71 friend Rules
72 makeRulesGivenLedger(DigestAwareReadView const& ledger, Rules const& current);
73
74 friend Rules
76 DigestAwareReadView const& ledger,
78
79 Rules(
82 STVector256 const& amendments);
83
85 presets() const;
86
87public:
91 [[nodiscard]] bool
92 enabled(uint256 const& feature) const;
93
99 bool
100 operator==(Rules const&) const;
101};
102
105
106void
108
133
135
136bool
137useRulesGuards(Rules const& rules);
138
139void
141 Rules const& rules,
143 std::optional<NumberMantissaScaleGuard>& mantissaScaleGuard);
144
145} // namespace xrpl
std::optional< Rules > saved_
Definition Rules.h:131
CurrentTransactionRulesGuard & operator=(CurrentTransactionRulesGuard const &)=delete
CurrentTransactionRulesGuard(CurrentTransactionRulesGuard const &)=delete
ReadView that associates keys with digests.
Definition ReadView.h:279
Sets the new scale and restores the old scale when it leaves scope.
Definition Number.h:963
Rules controlling protocol behavior.
Definition Rules.h:40
Rules & operator=(Rules const &)=default
bool enabled(uint256 const &feature) const
Returns true if a feature is enabled.
Definition Rules.cpp:180
std::unordered_set< uint256, beast::Uhash<> > const & presets() const
Definition Rules.cpp:174
Rules(Rules const &)=default
Rules()=delete
std::shared_ptr< Impl const > impl_
Definition Rules.h:46
friend Rules makeRulesGivenLedger(DigestAwareReadView const &ledger, Rules const &current)
Definition ReadView.cpp:61
Rules & operator=(Rules &&)=default
Rules(Rules &&)=default
bool operator==(Rules const &) const
Returns true if two rule sets are identical.
Definition Rules.cpp:188
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:197
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:140
bool useRulesGuards(Rules const &rules)
Definition Rules.cpp:77
void createGuards(Rules const &rules, std::optional< CurrentTransactionRulesGuard > &rulesGuard, std::optional< NumberMantissaScaleGuard > &mantissaScaleGuard)
Definition Rules.cpp:91
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:580