Files
rippled/src/libxrpl/protocol/Rate2.cpp
Ayaz Salikhov 5f638f5553 chore: Set ColumnLimit to 120 in clang-format (#6288)
This change updates the ColumnLimit from 80 to 120, and applies clang-format to reformat the code.
2026-01-28 18:09:50 +00:00

102 lines
2.3 KiB
C++

#include <xrpl/beast/utility/instrumentation.h>
#include <xrpl/protocol/Asset.h>
#include <xrpl/protocol/Issue.h>
#include <xrpl/protocol/Quality.h>
#include <xrpl/protocol/Rate.h>
#include <xrpl/protocol/STAmount.h>
#include <cstdint>
namespace xrpl {
Rate const parityRate(QUALITY_ONE);
namespace detail {
STAmount
as_amount(Rate const& rate)
{
return {noIssue(), rate.value, -9, false};
}
} // namespace detail
namespace nft {
Rate
transferFeeAsRate(std::uint16_t fee)
{
return Rate{static_cast<std::uint32_t>(fee) * 10000};
}
} // namespace nft
STAmount
multiply(STAmount const& amount, Rate const& rate)
{
XRPL_ASSERT(rate.value, "xrpl::nft::multiply : nonzero rate input");
if (rate == parityRate)
return amount;
return multiply(amount, detail::as_amount(rate), amount.asset());
}
STAmount
multiplyRound(STAmount const& amount, Rate const& rate, bool roundUp)
{
XRPL_ASSERT(rate.value, "xrpl::nft::multiplyRound : nonzero rate input");
if (rate == parityRate)
return amount;
return mulRound(amount, detail::as_amount(rate), amount.asset(), roundUp);
}
STAmount
multiplyRound(STAmount const& amount, Rate const& rate, Asset const& asset, bool roundUp)
{
XRPL_ASSERT(rate.value, "xrpl::nft::multiplyRound(Issue) : nonzero rate input");
if (rate == parityRate)
{
return amount;
}
return mulRound(amount, detail::as_amount(rate), asset, roundUp);
}
STAmount
divide(STAmount const& amount, Rate const& rate)
{
XRPL_ASSERT(rate.value, "xrpl::nft::divide : nonzero rate input");
if (rate == parityRate)
return amount;
return divide(amount, detail::as_amount(rate), amount.asset());
}
STAmount
divideRound(STAmount const& amount, Rate const& rate, bool roundUp)
{
XRPL_ASSERT(rate.value, "xrpl::nft::divideRound : nonzero rate input");
if (rate == parityRate)
return amount;
return divRound(amount, detail::as_amount(rate), amount.asset(), roundUp);
}
STAmount
divideRound(STAmount const& amount, Rate const& rate, Asset const& asset, bool roundUp)
{
XRPL_ASSERT(rate.value, "xrpl::nft::divideRound(Issue) : nonzero rate input");
if (rate == parityRate)
return amount;
return divRound(amount, detail::as_amount(rate), asset, roundUp);
}
} // namespace xrpl