xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
protocol
Rate2.cpp
1
#include <xrpl/beast/utility/instrumentation.h>
2
#include <xrpl/protocol/Asset.h>
3
#include <xrpl/protocol/Issue.h>
4
#include <xrpl/protocol/Quality.h>
5
#include <xrpl/protocol/Rate.h>
6
#include <xrpl/protocol/STAmount.h>
7
8
#include <
cstdint
>
9
10
namespace
xrpl
{
11
12
Rate
const
kParityRate
(QUALITY_ONE);
13
14
namespace
detail
{
15
16
STAmount
17
asAmount
(
Rate
const
& rate)
18
{
19
return
{
noIssue
(), rate.
value
, -9,
false
};
20
}
21
22
}
// namespace detail
23
24
namespace
nft {
25
Rate
26
transferFeeAsRate
(
std::uint16_t
fee)
27
{
28
return
Rate
{
static_cast<
std::uint32_t
>
(fee) * 10000};
29
}
30
31
}
// namespace nft
32
33
STAmount
34
multiply
(
STAmount
const
& amount,
Rate
const
& rate)
35
{
36
XRPL_ASSERT(rate.
value
,
"xrpl::nft::multiply : nonzero rate input"
);
37
38
if
(rate ==
kParityRate
)
39
return
amount;
40
41
return
multiply
(amount,
detail::asAmount
(rate), amount.
asset
());
42
}
43
44
STAmount
45
multiplyRound
(
STAmount
const
& amount,
Rate
const
& rate,
bool
roundUp)
46
{
47
XRPL_ASSERT(rate.
value
,
"xrpl::nft::multiplyRound : nonzero rate input"
);
48
49
if
(rate ==
kParityRate
)
50
return
amount;
51
52
return
mulRound
(amount,
detail::asAmount
(rate), amount.
asset
(), roundUp);
53
}
54
55
STAmount
56
multiplyRound
(
STAmount
const
& amount,
Rate
const
& rate,
Asset
const
& asset,
bool
roundUp)
57
{
58
XRPL_ASSERT(rate.
value
,
"xrpl::nft::multiplyRound(Issue) : nonzero rate input"
);
59
60
if
(rate ==
kParityRate
)
61
{
62
return
amount;
63
}
64
65
return
mulRound
(amount,
detail::asAmount
(rate), asset, roundUp);
66
}
67
68
STAmount
69
divide
(
STAmount
const
& amount,
Rate
const
& rate)
70
{
71
XRPL_ASSERT(rate.
value
,
"xrpl::nft::divide : nonzero rate input"
);
72
73
if
(rate ==
kParityRate
)
74
return
amount;
75
76
return
divide
(amount,
detail::asAmount
(rate), amount.
asset
());
77
}
78
79
STAmount
80
divideRound
(
STAmount
const
& amount,
Rate
const
& rate,
bool
roundUp)
81
{
82
XRPL_ASSERT(rate.
value
,
"xrpl::nft::divideRound : nonzero rate input"
);
83
84
if
(rate ==
kParityRate
)
85
return
amount;
86
87
return
divRound
(amount,
detail::asAmount
(rate), amount.
asset
(), roundUp);
88
}
89
90
STAmount
91
divideRound
(
STAmount
const
& amount,
Rate
const
& rate,
Asset
const
& asset,
bool
roundUp)
92
{
93
XRPL_ASSERT(rate.
value
,
"xrpl::nft::divideRound(Issue) : nonzero rate input"
);
94
95
if
(rate ==
kParityRate
)
96
return
amount;
97
98
return
divRound
(amount,
detail::asAmount
(rate), asset, roundUp);
99
}
100
101
}
// namespace xrpl
xrpl::Asset
Definition
Asset.h:52
xrpl::STAmount
Definition
STAmount.h:46
xrpl::STAmount::asset
Asset const & asset() const
Definition
STAmount.h:496
cstdint
std::uint16_t
xrpl::detail
Definition
base_uint.h:37
xrpl::detail::asAmount
STAmount asAmount(Rate const &rate)
Definition
Rate2.cpp:17
xrpl::nft::transferFeeAsRate
Rate transferFeeAsRate(std::uint16_t fee)
Given a transfer fee (in basis points) convert it to a transfer rate.
Definition
Rate2.cpp:26
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::divide
STAmount divide(STAmount const &amount, Rate const &rate)
Definition
Rate2.cpp:69
xrpl::divRound
STAmount divRound(STAmount const &v1, STAmount const &v2, Asset const &asset, bool roundUp)
Definition
STAmount.cpp:1725
xrpl::multiplyRound
STAmount multiplyRound(STAmount const &amount, Rate const &rate, bool roundUp)
Definition
Rate2.cpp:45
xrpl::kParityRate
Rate const kParityRate
A transfer rate signifying a 1:1 exchange.
xrpl::mulRound
STAmount mulRound(STAmount const &v1, STAmount const &v2, Asset const &asset, bool roundUp)
Definition
STAmount.cpp:1620
xrpl::noIssue
Issue const & noIssue()
Returns an asset specifier that represents no account and currency.
Definition
Issue.h:118
xrpl::multiply
STAmount multiply(STAmount const &amount, Number const &frac, Number::RoundingMode rm)
Definition
AMMHelpers.cpp:293
xrpl::divideRound
STAmount divideRound(STAmount const &amount, Rate const &rate, bool roundUp)
Definition
Rate2.cpp:80
xrpl::Rate
Represents a transfer rate.
Definition
Rate.h:21
xrpl::Rate::value
std::uint32_t value
Definition
Rate.h:22
Generated by
1.17.0