rippled
Loading...
Searching...
No Matches
Permissions.h
1#pragma once
2
3#include <xrpl/protocol/Rules.h>
4#include <xrpl/protocol/TER.h>
5#include <xrpl/protocol/TxFormats.h>
6
7#include <optional>
8#include <string>
9#include <unordered_map>
10
11namespace xrpl {
20#pragma push_macro("PERMISSION")
21#undef PERMISSION
22
23#define PERMISSION(type, txType, value) type = value,
24
25#include <xrpl/protocol/detail/permissions.macro>
26
27#undef PERMISSION
28#pragma pop_macro("PERMISSION")
29};
30
32
34{
35private:
36 Permission();
37
39
41
43
45
47
48public:
49 static Permission const&
51
52 Permission(Permission const&) = delete;
54 operator=(Permission const&) = delete;
55
57 getPermissionName(std::uint32_t const value) const;
58
60 getGranularValue(std::string const& name) const;
61
63 getGranularName(GranularPermissionType const& value) const;
64
66 getGranularTxType(GranularPermissionType const& gpType) const;
67
69 getTxFeature(TxType txType) const;
70
71 bool
72 isDelegable(std::uint32_t const& permissionValue, Rules const& rules) const;
73
74 // for tx level permission, permission value is equal to tx type plus one
75 uint32_t
76 txToPermissionType(TxType const& type) const;
77
78 // tx type value is permission value minus one
79 TxType
80 permissionToTxType(uint32_t const& value) const;
81};
82
83} // namespace xrpl
std::optional< std::string > getGranularName(GranularPermissionType const &value) const
std::unordered_map< std::uint16_t, Delegation > delegableTx_
Definition Permissions.h:40
std::optional< std::uint32_t > getGranularValue(std::string const &name) const
TxType permissionToTxType(uint32_t const &value) const
std::optional< TxType > getGranularTxType(GranularPermissionType const &gpType) const
std::optional< std::string > getPermissionName(std::uint32_t const value) const
uint32_t txToPermissionType(TxType const &type) const
bool isDelegable(std::uint32_t const &permissionValue, Rules const &rules) const
std::optional< std::reference_wrapper< uint256 const > > const getTxFeature(TxType txType) const
std::unordered_map< GranularPermissionType, std::string > granularNameMap_
Definition Permissions.h:44
Permission(Permission const &)=delete
std::unordered_map< std::uint16_t, uint256 > txFeatureMap_
Definition Permissions.h:38
Permission & operator=(Permission const &)=delete
std::unordered_map< std::string, GranularPermissionType > granularPermissionMap_
Definition Permissions.h:42
std::unordered_map< GranularPermissionType, TxType > granularTxTypeMap_
Definition Permissions.h:46
static Permission const & getInstance()
Rules controlling protocol behavior.
Definition Rules.h:18
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
TxType
Transaction type identifiers.
Definition TxFormats.h:37
GranularPermissionType
We have both transaction type permissions and granular type permissions.
Definition Permissions.h:19
@ notDelegable
Definition Permissions.h:31
@ delegable
Definition Permissions.h:31