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