xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
protocol
MPTIssue.cpp
1
#include <xrpl/protocol/MPTIssue.h>
2
3
#include <xrpl/basics/base_uint.h>
4
#include <xrpl/basics/contract.h>
5
#include <xrpl/json/json_errors.h>
6
#include <xrpl/json/json_value.h>
7
#include <xrpl/protocol/AccountID.h>
8
#include <xrpl/protocol/Indexes.h>
9
#include <xrpl/protocol/UintTypes.h>
10
#include <xrpl/protocol/jss.h>
11
12
#include <
cstdint
>
13
#include <
ostream
>
14
#include <
stdexcept
>
15
#include <
string
>
16
17
namespace
xrpl
{
18
19
MPTIssue::MPTIssue
(
MPTID
const
& issuanceID) :
mptID_
(issuanceID)
20
{
21
}
22
23
MPTIssue::MPTIssue
(
std::uint32_t
sequence,
AccountID
const
& account)
24
:
MPTIssue
(
xrpl
::
makeMptID
(sequence, account))
25
{
26
}
27
28
AccountID
const
&
29
MPTIssue::getIssuer
()
const
30
{
31
// MPTID is concatenation of sequence + account
32
static_assert
(
sizeof
(
MPTID
) == (
sizeof
(
std::uint32_t
) +
sizeof
(
AccountID
)));
33
// copy from id skipping the sequence
34
auto
const
* account =
reinterpret_cast<
AccountID
const*
>
(
mptID_
.data() +
sizeof
(
std::uint32_t
));
35
36
return
*account;
37
}
38
39
std::string
40
MPTIssue::getText
()
const
41
{
42
return
to_string
(
mptID_
);
43
}
44
45
void
46
MPTIssue::setJson
(
json::Value
& jv)
const
47
{
48
jv[jss::mpt_issuance_id] =
to_string
(
mptID_
);
49
}
50
51
json::Value
52
toJson
(
MPTIssue
const
& mptIssue)
53
{
54
json::Value
jv;
55
mptIssue.
setJson
(jv);
56
return
jv;
57
}
58
59
std::string
60
to_string
(
MPTIssue
const
& mptIssue)
61
{
62
return
to_string
(mptIssue.
getMptID
());
63
}
64
65
MPTIssue
66
mptIssueFromJson
(
json::Value
const
& v)
67
{
68
if
(!v.
isObject
())
69
{
70
Throw<std::runtime_error>
(
71
"mptIssueFromJson can only be specified with an 'object' Json "
72
"value"
);
73
}
74
75
if
(v.
isMember
(jss::currency) || v.
isMember
(jss::issuer))
76
{
77
Throw<std::runtime_error>
(
"mptIssueFromJson, MPTIssue should not have currency or issuer"
);
78
}
79
80
json::Value
const
& idStr = v[jss::mpt_issuance_id];
81
82
if
(!idStr.
isString
())
83
{
84
Throw<json::Error>
(
"mptIssueFromJson MPTID must be a string Json value"
);
85
}
86
87
MPTID
id;
88
if
(!
id
.parseHex(idStr.
asString
()))
89
{
90
Throw<json::Error>
(
"mptIssueFromJson MPTID is invalid"
);
91
}
92
93
return
MPTIssue
{
id
};
94
}
95
96
std::ostream
&
97
operator<<
(
std::ostream
& os,
MPTIssue
const
& x)
98
{
99
os <<
to_string
(x);
100
return
os;
101
}
102
103
}
// namespace xrpl
std::ostream
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
json::Value::isObject
bool isObject() const
Definition
json_value.cpp:1152
json::Value::isString
bool isString() const
Definition
json_value.cpp:1134
json::Value::asString
std::string asString() const
Returns the unquoted string value.
Definition
json_value.cpp:494
json::Value::isMember
bool isMember(char const *key) const
Return true if the object has a member named key.
Definition
json_value.cpp:1049
xrpl::MPTIssue
Definition
MPTIssue.h:23
xrpl::MPTIssue::getMptID
constexpr MPTID const & getMptID() const
Definition
MPTIssue.h:43
xrpl::MPTIssue::mptID_
MPTID mptID_
Definition
MPTIssue.h:25
xrpl::MPTIssue::getIssuer
AccountID const & getIssuer() const
Definition
MPTIssue.cpp:29
xrpl::MPTIssue::setJson
void setJson(json::Value &jv) const
Definition
MPTIssue.cpp:46
xrpl::MPTIssue::MPTIssue
MPTIssue()=default
xrpl::MPTIssue::getText
std::string getText() const
Definition
MPTIssue.cpp:40
cstdint
std::uint32_t
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::mptIssueFromJson
MPTIssue mptIssueFromJson(json::Value const &jv)
Definition
MPTIssue.cpp:66
xrpl::operator<<
std::ostream & operator<<(std::ostream &out, BaseUInt< Bits, Tag > const &u)
Definition
base_uint.h:672
xrpl::to_string
std::string to_string(BaseUInt< Bits, Tag > const &a)
Definition
base_uint.h:657
xrpl::toJson
json::Value toJson(Asset const &asset)
Definition
Asset.h:168
xrpl::MPTID
BaseUInt< 192 > MPTID
MPTID is a 192-bit value representing MPT Issuance ID, which is a concatenation of a 32-bit sequence ...
Definition
UintTypes.h:54
xrpl::makeMptID
MPTID makeMptID(std::uint32_t const sequence, AccountID const &account)
Definition
Indexes.cpp:206
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
xrpl::Throw
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Definition
contract.h:52
ostream
stdexcept
string
Generated by
1.17.0