xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
jtx
impl
amount.cpp
1
#include <test/jtx/amount.h>
2
3
#include <test/jtx/Account.h>
4
5
#include <xrpl/basics/base_uint.h>
6
#include <xrpl/basics/safe_cast.h>
7
#include <xrpl/protocol/Issue.h>
8
#include <xrpl/protocol/MPTIssue.h>
9
#include <xrpl/protocol/UintTypes.h>
10
11
#include <
cassert
>
12
#include <
cstdint
>
13
#include <
iomanip
>
14
#include <
ios
>
15
#include <
limits
>
// IWYU pragma: keep
16
#include <
ostream
>
17
#include <
sstream
>
18
#include <
string
>
19
20
namespace
xrpl::test::jtx
{
21
22
PrettyAmount::
23
operator
AnyAmount
()
const
24
{
25
return
{
amount_
};
26
}
27
28
template
<
typename
T>
29
static
std::string
30
toPlaces
(T
const
d,
std::uint8_t
places)
31
{
32
assert(places <=
std::numeric_limits<T>::digits10
);
33
34
std::ostringstream
oss;
35
oss <<
std::setprecision
(places) <<
std::fixed
<< d;
36
37
std::string
out = oss.
str
();
38
out.
erase
(out.
find_last_not_of
(
'0'
) + 1, std::string::npos);
39
if
(out.
back
() ==
'.'
)
40
out.
pop_back
();
41
42
return
out;
43
}
44
45
std::ostream
&
46
operator<<
(
std::ostream
& os,
PrettyAmount
const
& amount)
47
{
48
amount.
value
().
asset
().
visit
(
49
[&](
Issue
const
& issue) {
50
if
(issue.
native
())
51
{
52
// measure in hundredths
53
auto
const
c =
kJtxDropsPerXrp
.drops() / 100;
54
auto
const
n = amount.
value
().
mantissa
();
55
if
(n < c)
56
{
57
if
(amount.
value
().
negative
())
58
{
59
os <<
"-"
<< n <<
" drops"
;
60
}
61
else
62
{
63
os << n <<
" drops"
;
64
}
65
}
66
else
67
{
68
auto
const
d = double(n) /
kJtxDropsPerXrp
.drops();
69
if
(amount.
value
().
negative
())
70
{
71
os <<
"-"
;
72
}
73
74
os <<
toPlaces
(d, 6) <<
" XRP"
;
75
}
76
}
77
else
78
{
79
os << amount.
value
().
getText
() <<
"/"
<<
to_string
(issue.
currency
) <<
"("
80
<< amount.
name
() <<
")"
;
81
}
82
},
83
[&](
MPTIssue
const
& issue) {
84
os << amount.
value
().
getText
() <<
"/"
<<
to_string
(issue) <<
"("
<< amount.
name
()
85
<<
")"
;
86
});
87
return
os;
88
}
89
90
//------------------------------------------------------------------------------
91
92
XrpT
const
XRP
{};
93
94
PrettyAmount
95
IOU::operator()
(
EpsilonT
)
const
96
{
97
return
{
STAmount
(
issue
(), 1, -81),
account
.name()};
98
}
99
100
PrettyAmount
101
IOU::operator()
(
xrpl::detail::EpsilonMultiple
m)
const
102
{
103
return
{
STAmount
(
issue
(),
safeCast<std::uint64_t>
(m.
n
), -81),
account
.name()};
104
}
105
106
std::ostream
&
107
operator<<
(
std::ostream
& os,
IOU
const
& iou)
108
{
109
os <<
to_string
(iou.
currency
) <<
"("
<< iou.
account
.
name
() <<
")"
;
110
return
os;
111
}
112
113
std::ostream
&
114
operator<<
(
std::ostream
& os,
MPT
const
& mpt)
115
{
116
os <<
to_string
(mpt.
issuanceID
);
117
return
os;
118
}
119
120
AnyT
const
kAny
{};
121
122
}
// namespace xrpl::test::jtx
std::string::back
T back(T... args)
std::ostream
std::ostringstream
std::string
cassert
xrpl::Asset::visit
constexpr auto visit(Visitors &&... visitors) const -> decltype(auto)
Definition
Asset.h:117
xrpl::Issue
A currency issued by an account.
Definition
Issue.h:18
xrpl::Issue::currency
Currency currency
Definition
Issue.h:20
xrpl::Issue::native
bool native() const
Definition
Issue.cpp:54
xrpl::MPTIssue
Definition
MPTIssue.h:23
xrpl::STAmount
Definition
STAmount.h:46
xrpl::STAmount::mantissa
std::uint64_t mantissa() const noexcept
Definition
STAmount.h:490
xrpl::STAmount::getText
std::string getText() const override
Definition
STAmount.cpp:647
xrpl::STAmount::negative
bool negative() const noexcept
Definition
STAmount.h:484
xrpl::STAmount::asset
Asset const & asset() const
Definition
STAmount.h:496
xrpl::test::jtx::Account::name
std::string const & name() const
Return the name.
Definition
jtx/Account.h:75
xrpl::test::jtx::IOU
Converts to IOU Issue or STAmount.
Definition
src/test/jtx/amount.h:404
xrpl::test::jtx::IOU::operator()
PrettyAmount operator()(T v) const
Definition
src/test/jtx/amount.h:451
xrpl::test::jtx::IOU::account
Account account
Definition
src/test/jtx/amount.h:406
xrpl::test::jtx::IOU::currency
xrpl::Currency currency
Definition
src/test/jtx/amount.h:407
xrpl::test::jtx::IOU::issue
Issue issue() const
Definition
src/test/jtx/amount.h:415
xrpl::test::jtx::MPT
Converts to MPT Issue or STAmount.
Definition
src/test/jtx/amount.h:497
xrpl::test::jtx::MPT::issuanceID
xrpl::MPTID issuanceID
Definition
src/test/jtx/amount.h:500
cstdint
std::string::erase
T erase(T... args)
std::string::find_last_not_of
T find_last_not_of(T... args)
std::fixed
T fixed(T... args)
std::uint8_t
iomanip
ios
limits
xrpl::test::jtx
Definition
Oracle_test.cpp:34
xrpl::test::jtx::kJtxDropsPerXrp
constexpr XRPAmount kJtxDropsPerXrp
Definition
src/test/jtx/amount.h:70
xrpl::test::jtx::XRP
XrpT const XRP
Converts to XRP Issue or STAmount.
Definition
amount.cpp:92
xrpl::test::jtx::operator<<
std::ostream & operator<<(std::ostream &os, PrettyAmount const &amount)
Definition
amount.cpp:46
xrpl::test::jtx::kAny
AnyT const kAny
Returns an amount representing "any issuer".
Definition
amount.cpp:120
xrpl::test::jtx::toPlaces
static std::string toPlaces(T const d, std::uint8_t places)
Definition
amount.cpp:30
xrpl::safeCast
constexpr Dest safeCast(Src s) noexcept
Definition
safe_cast.h:21
xrpl::to_string
std::string to_string(BaseUInt< Bits, Tag > const &a)
Definition
base_uint.h:657
std::numeric_limits
ostream
std::string::pop_back
T pop_back(T... args)
std::setprecision
T setprecision(T... args)
sstream
std::ostringstream::str
T str(T... args)
string
xrpl::detail::EpsilonMultiple
Definition
src/test/jtx/amount.h:34
xrpl::detail::EpsilonMultiple::n
std::size_t n
Definition
src/test/jtx/amount.h:35
xrpl::test::jtx::AnyAmount
Amount specifier with an option for any issuer.
Definition
src/test/jtx/amount.h:608
xrpl::test::jtx::AnyT
Definition
src/test/jtx/amount.h:599
xrpl::test::jtx::EpsilonT
Definition
src/test/jtx/amount.h:383
xrpl::test::jtx::PrettyAmount
Represents an XRP, IOU, or MPT quantity This customizes the string conversion and supports XRP conver...
Definition
src/test/jtx/amount.h:78
xrpl::test::jtx::PrettyAmount::name
std::string const & name() const
Definition
src/test/jtx/amount.h:123
xrpl::test::jtx::PrettyAmount::amount_
STAmount amount_
Definition
src/test/jtx/amount.h:81
xrpl::test::jtx::PrettyAmount::value
STAmount const & value() const
Definition
src/test/jtx/amount.h:129
xrpl::test::jtx::XrpT
Definition
src/test/jtx/amount.h:256
Generated by
1.17.0