xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
protocol
Asset.cpp
1
#include <xrpl/protocol/Asset.h>
2
3
#include <xrpl/basics/Number.h>
4
#include <xrpl/basics/contract.h>
5
#include <xrpl/json/json_value.h>
6
#include <xrpl/protocol/AccountID.h>
7
#include <xrpl/protocol/Concepts.h>
8
#include <xrpl/protocol/Issue.h>
9
#include <xrpl/protocol/MPTIssue.h>
10
#include <xrpl/protocol/STAmount.h>
11
#include <xrpl/protocol/jss.h>
12
13
#include <
ostream
>
14
#include <
stdexcept
>
15
#include <
string
>
16
#include <
variant
>
17
18
namespace
xrpl
{
19
20
AccountID
const
&
21
Asset::getIssuer
()
const
22
{
23
return
std::visit
([&](
auto
&& issue) ->
AccountID
const
& {
return
issue.getIssuer(); },
issue_
);
24
}
25
26
std::string
27
Asset::getText
()
const
28
{
29
return
std::visit
([&](
auto
&& issue) {
return
issue.getText(); },
issue_
);
30
}
31
32
void
33
Asset::setJson
(
json::Value
& jv)
const
34
{
35
std::visit
([&](
auto
&& issue) { issue.setJson(jv); },
issue_
);
36
}
37
38
STAmount
39
Asset::operator()
(
Number
const
& number)
const
40
{
41
return
STAmount
{*
this
, number};
42
}
43
44
std::string
45
to_string
(
Asset
const
& asset)
46
{
47
return
std::visit
([&](
auto
const
& issue) {
return
to_string
(issue); }, asset.
value
());
48
}
49
50
bool
51
validJSONAsset
(
json::Value
const
& jv)
52
{
53
if
(jv.
isMember
(jss::mpt_issuance_id))
54
return
!(jv.
isMember
(jss::currency) || jv.
isMember
(jss::issuer));
55
return
jv.
isMember
(jss::currency);
56
}
57
58
Asset
59
assetFromJson
(
json::Value
const
& v)
60
{
61
if
(!v.
isMember
(jss::currency) && !v.
isMember
(jss::mpt_issuance_id))
62
Throw<std::runtime_error>
(
"assetFromJson must contain currency or mpt_issuance_id"
);
63
64
if
(v.
isMember
(jss::currency))
65
return
issueFromJson
(v);
66
return
mptIssueFromJson
(v);
67
}
68
69
std::ostream
&
70
operator<<
(
std::ostream
& os,
Asset
const
& x)
71
{
72
std::visit
([&]<
ValidIssueType
TIss>(TIss
const
& issue) { os << issue; }, x.
value
());
73
return
os;
74
}
75
76
}
// namespace xrpl
std::ostream
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
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::Asset
Definition
Asset.h:52
xrpl::Asset::setJson
void setJson(json::Value &jv) const
Definition
Asset.cpp:33
xrpl::Asset::operator()
STAmount operator()(Number const &) const
Definition
Asset.cpp:39
xrpl::Asset::getText
std::string getText() const
Definition
Asset.cpp:27
xrpl::Asset::issue_
value_type issue_
Definition
Asset.h:60
xrpl::Asset::getIssuer
AccountID const & getIssuer() const
Definition
Asset.cpp:21
xrpl::Asset::value
constexpr value_type const & value() const
Definition
Asset.h:201
xrpl::Number
Number is a floating point type that can represent a wide range of values.
Definition
Number.h:351
xrpl::STAmount
Definition
STAmount.h:46
xrpl::ValidIssueType
Definition
Concepts.h:22
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::issueFromJson
Issue issueFromJson(json::Value const &v)
Definition
Issue.cpp:89
xrpl::validJSONAsset
bool validJSONAsset(json::Value const &jv)
Definition
Asset.cpp:51
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::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
xrpl::assetFromJson
Asset assetFromJson(json::Value const &jv)
Definition
Asset.cpp:59
xrpl::Throw
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Definition
contract.h:52
ostream
stdexcept
string
variant
std::visit
T visit(T... args)
Generated by
1.17.0