xrpld
Loading...
Searching...
No Matches
flags.h
1#pragma once
2
3#include <test/jtx/Env.h>
4
5#include <xrpl/basics/contract.h>
6#include <xrpl/protocol/LedgerFormats.h>
7#include <xrpl/protocol/TxFlags.h>
8
9#include <utility>
10
11namespace xrpl {
12namespace detail {
13
15{
16protected:
18
19private:
20 void
22 {
23 switch (flag)
24 {
25 case asfRequireDest:
26 mask_ |= lsfRequireDestTag;
27 break;
28 case asfRequireAuth:
29 mask_ |= lsfRequireAuth;
30 break;
31 case asfDisallowXRP:
32 mask_ |= lsfDisallowXRP;
33 break;
34 case asfDisableMaster:
35 mask_ |= lsfDisableMaster;
36 break;
37 // case asfAccountTxnID: // ???
38 case asfNoFreeze:
39 mask_ |= lsfNoFreeze;
40 break;
41 case asfGlobalFreeze:
42 mask_ |= lsfGlobalFreeze;
43 break;
44 case asfDefaultRipple:
45 mask_ |= lsfDefaultRipple;
46 break;
47 case asfDepositAuth:
48 mask_ |= lsfDepositAuth;
49 break;
50 case asfAllowTrustLineClawback:
51 mask_ |= lsfAllowTrustLineClawback;
52 break;
53 case asfDisallowIncomingCheck:
54 mask_ |= lsfDisallowIncomingCheck;
55 break;
56 case asfDisallowIncomingNFTokenOffer:
57 mask_ |= lsfDisallowIncomingNFTokenOffer;
58 break;
59 case asfDisallowIncomingPayChan:
60 mask_ |= lsfDisallowIncomingPayChan;
61 break;
62 case asfDisallowIncomingTrustline:
63 mask_ |= lsfDisallowIncomingTrustline;
64 break;
65 case asfAllowTrustLineLocking:
66 mask_ |= lsfAllowTrustLineLocking;
67 break;
68 default:
69 Throw<std::runtime_error>("unknown flag");
70 }
71 }
72
73 template <class Flag, class... Args>
74 void
75 setArgs(std::uint32_t flag, Args... args)
76 {
77 setArgs(flag);
78 if constexpr (sizeof...(args))
79 setArgs(args...);
80 }
81
82protected:
83 template <class... Args>
84 FlagsHelper(Args... args)
85 {
86 setArgs(args...);
87 }
88};
89
90} // namespace detail
91
92namespace test::jtx {
93
94// JSON generators
95
98fset(Account const& account, std::uint32_t on, std::uint32_t off = 0);
99
101inline json::Value
102fclear(Account const& account, std::uint32_t off)
103{
104 return fset(account, 0, off);
105}
106
109{
110private:
112
113public:
114 template <class... Args>
115 Flags(Account account, Args... args) : FlagsHelper(args...), account_(std::move(account))
116 {
117 }
118
119 void
120 operator()(Env& env) const;
121};
122
125{
126private:
128
129public:
130 template <class... Args>
131 Nflags(Account account, Args... args) : FlagsHelper(args...), account_(std::move(account))
132 {
133 }
134
135 void
136 operator()(Env& env) const;
137};
138
139} // namespace test::jtx
140
141} // namespace xrpl
Represents a JSON value.
Definition json_value.h:130
void setArgs(std::uint32_t flag, Args... args)
Definition flags.h:75
FlagsHelper(Args... args)
Definition flags.h:84
std::uint32_t mask_
Definition flags.h:17
void setArgs(std::uint32_t flag)
Definition flags.h:21
Immutable cryptographic account descriptor.
Definition jtx/Account.h:17
A transaction testing environment.
Definition Env.h:143
Flags(Account account, Args... args)
Definition flags.h:115
void operator()(Env &env) const
Definition flags.cpp:28
Nflags(Account account, Args... args)
Definition flags.h:131
void operator()(Env &env) const
Definition flags.cpp:46
STL namespace.
json::Value fclear(Account const &account, std::uint32_t off)
Remove account flag.
Definition flags.h:102
json::Value fset(Account const &account, std::uint32_t on, std::uint32_t off=0)
Add and/or remove flag.
Definition flags.cpp:15
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Definition contract.h:49