xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
jtx
require.h
1
#pragma once
2
3
#include <test/jtx/JTx.h>
4
#include <test/jtx/requires.h>
5
6
#include <
functional
>
7
#include <
vector
>
8
9
namespace
xrpl
{
10
11
namespace
detail
{
12
13
template
<
class
Cond,
class
... Args>
14
inline
void
15
requireArgs
(
test::jtx::RequiresT
& vec, Cond
const
& cond, Args
const
&... args)
16
{
17
vec.
push_back
(cond);
18
if
constexpr
(
sizeof
...(args) > 0)
19
requireArgs
(vec, args...);
20
}
21
22
}
// namespace detail
23
24
namespace
test::jtx {
25
29
template
<
class
... Args>
30
RequireT
31
required
(Args
const
&... args)
32
{
33
RequiresT
vec;
34
detail::requireArgs
(vec, args...);
35
return
[vec](
Env
& env) {
36
for
(
auto
const
& f : vec)
37
f(env);
38
};
39
}
40
48
class
Require
49
{
50
private
:
51
RequireT
cond_
;
52
53
public
:
54
template
<
class
... Args>
55
Require
(Args
const
&... args) :
cond_
(
required
(args...))
56
{
57
}
58
59
void
60
operator()
(
Env
&,
JTx
& jt)
const
61
{
62
jt.
require
.
emplace_back
(
cond_
);
63
}
64
};
65
66
}
// namespace test::jtx
67
68
}
// namespace xrpl
xrpl::test::jtx::Env
A transaction testing environment.
Definition
Env.h:161
xrpl::test::jtx::Require::operator()
void operator()(Env &, JTx &jt) const
Definition
require.h:60
xrpl::test::jtx::Require::Require
Require(Args const &... args)
Definition
require.h:55
xrpl::test::jtx::Require::cond_
RequireT cond_
Definition
require.h:51
std::vector::emplace_back
T emplace_back(T... args)
functional
xrpl::detail
Definition
base_uint.h:37
xrpl::detail::requireArgs
void requireArgs(test::jtx::RequiresT &vec, Cond const &cond, Args const &... args)
Definition
require.h:15
xrpl::test::jtx::RequiresT
std::vector< RequireT > RequiresT
Definition
requires.h:11
xrpl::test::jtx::required
RequireT required(Args const &... args)
Compose many condition functors into one.
Definition
require.h:31
xrpl::test::jtx::RequireT
std::function< void(Env &)> RequireT
Definition
requires.h:10
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
std::vector::push_back
T push_back(T... args)
xrpl::test::jtx::JTx
Execution context for applying a JSON transaction.
Definition
JTx.h:27
xrpl::test::jtx::JTx::require
RequiresT require
Definition
JTx.h:29
vector
Generated by
1.17.0