xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
jtx
multisign.h
1
#pragma once
2
3
#include <test/jtx/Account.h>
4
#include <test/jtx/Env.h>
5
#include <test/jtx/JTx.h>
6
#include <test/jtx/SignerUtils.h>
7
#include <test/jtx/owners.h>
8
#include <test/jtx/tags.h>
9
10
#include <xrpl/basics/base_uint.h>
11
#include <xrpl/json/json_value.h>
12
#include <xrpl/protocol/LedgerFormats.h>
13
#include <xrpl/protocol/SField.h>
14
15
#include <
concepts
>
16
#include <
cstdint
>
17
#include <
optional
>
18
#include <
utility
>
19
#include <
vector
>
20
21
namespace
xrpl::test::jtx
{
22
26
struct
Signer
27
{
28
std::uint32_t
weight
;
29
Account
account
;
30
std::optional<UInt256>
tag
;
31
32
Signer
(
Account
account
,
std::uint32_t
weight
= 1,
std::optional<UInt256>
tag
= std::nullopt)
33
:
weight
(
weight
),
account
(
std
::move(
account
)),
tag
(
tag
)
34
{
35
}
36
};
37
38
json::Value
39
signers
(
Account
const
& account,
std::uint32_t
quorum,
std::vector<Signer>
const
& v);
40
44
json::Value
45
signers
(
Account
const
& account,
NoneT
);
46
47
//------------------------------------------------------------------------------
48
52
class
Msig
53
{
54
public
:
55
std::vector<Reg>
signers
;
61
SField
const
*
const
subField
=
nullptr
;
66
static
constexpr
SField
const
*
kTopLevel
=
nullptr
;
67
68
Msig
(
SField
const
*
subField
,
std::vector<Reg>
signers
)
69
:
signers
(
std
::move(
signers
)),
subField
(
subField
)
70
{
71
sortSigners
(this->signers);
72
}
73
74
Msig
(
SField
const
&
subField
,
std::vector<Reg>
signers
) :
Msig
{&
subField
,
signers
}
75
{
76
}
77
78
Msig
(
std::vector<Reg>
signers
) :
Msig
(
kTopLevel
,
signers
)
79
{
80
}
81
82
template
<
class
AccountType,
class
... Accounts>
83
requires
std::convertible_to<AccountType, Reg>
84
explicit
Msig
(
SField
const
*
subField
, AccountType&& a0, Accounts&&... aN)
85
:
Msig
{
86
subField
,
87
std
::vector<
Reg
>{
std::forward<AccountType>
(a0),
std::forward<Accounts>
(aN)...}}
88
{
89
}
90
91
template
<
class
AccountType,
class
... Accounts>
92
requires
std::convertible_to<AccountType, Reg>
93
explicit
Msig
(
SField
const
&
subField
, AccountType&& a0, Accounts&&... aN)
94
:
Msig
{
95
&
subField
,
96
std
::vector<
Reg
>{
std::forward<AccountType>
(a0),
std::forward<Accounts>
(aN)...}}
97
{
98
}
99
100
template
<
class
AccountType,
class
... Accounts>
101
requires
(std::convertible_to<AccountType, Reg> && !
std::is_same_v<AccountType, SField*>
)
102
explicit
Msig
(AccountType&& a0, Accounts&&... aN)
103
:
Msig
{
104
kTopLevel
,
105
std::vector<Reg>
{
std::forward<AccountType>
(a0),
std::forward<Accounts>
(aN)...}}
106
{
107
}
108
109
void
110
operator()(
Env
&,
JTx
& jt)
const
;
111
};
112
113
//------------------------------------------------------------------------------
114
118
using
SigLists
=
OwnerCount<ltSIGNER_LIST>
;
119
120
}
// namespace xrpl::test::jtx
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::SField
Identifies fields.
Definition
SField.h:132
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::Msig::kTopLevel
static constexpr SField const * kTopLevel
Used solely as a convenience placeholder for ctors that do not specify a subfield.
Definition
multisign.h:66
xrpl::test::jtx::Msig::Msig
Msig(std::vector< Reg > signers)
Definition
multisign.h:78
xrpl::test::jtx::Msig::Msig
Msig(SField const &subField, AccountType &&a0, Accounts &&... aN)
Definition
multisign.h:93
xrpl::test::jtx::Msig::signers
std::vector< Reg > signers
Definition
multisign.h:55
xrpl::test::jtx::Msig::Msig
Msig(AccountType &&a0, Accounts &&... aN)
Definition
multisign.h:102
xrpl::test::jtx::Msig::Msig
Msig(SField const *subField, std::vector< Reg > signers)
Definition
multisign.h:68
xrpl::test::jtx::Msig::Msig
Msig(SField const &subField, std::vector< Reg > signers)
Definition
multisign.h:74
xrpl::test::jtx::Msig::subField
SField const *const subField
Alternative transaction object field in which to place the signer list.
Definition
multisign.h:61
xrpl::test::jtx::Msig::Msig
Msig(SField const *subField, AccountType &&a0, Accounts &&... aN)
Definition
multisign.h:84
xrpl::test::jtx::OwnerCount
Definition
owners.h:34
concepts
cstdint
std::forward
T forward(T... args)
std::uint32_t
std::is_same_v
T is_same_v
std
STL namespace.
xrpl::test::jtx
Definition
Oracle_test.cpp:34
xrpl::test::jtx::SigLists
OwnerCount< ltSIGNER_LIST > SigLists
The number of signer lists matches.
Definition
multisign.h:118
xrpl::test::jtx::signers
json::Value signers(Account const &account, std::uint32_t quorum, std::vector< Signer > const &v)
Definition
multisign.cpp:31
xrpl::test::jtx::sortSigners
void sortSigners(std::vector< Reg > &signers)
Definition
SignerUtils.h:41
optional
xrpl::test::jtx::JTx
Execution context for applying a JSON transaction.
Definition
JTx.h:27
xrpl::test::jtx::NoneT
Definition
tags.h:6
xrpl::test::jtx::Reg
Definition
SignerUtils.h:12
xrpl::test::jtx::Signer::Signer
Signer(Account account, std::uint32_t weight=1, std::optional< UInt256 > tag=std::nullopt)
Definition
multisign.h:32
xrpl::test::jtx::Signer::weight
std::uint32_t weight
Definition
multisign.h:28
xrpl::test::jtx::Signer::tag
std::optional< UInt256 > tag
Definition
multisign.h:30
xrpl::test::jtx::Signer::account
Account account
Definition
multisign.h:29
utility
vector
Generated by
1.17.0