mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-25 16:10:57 +00:00
Merge branch 'ximinez/number-round-maxrep-down' into ximinez/number-round-maxrep
This commit is contained in:
@@ -127,6 +127,7 @@ struct MantissaRange final
|
||||
using rep = std::uint64_t;
|
||||
|
||||
enum class MantissaScale {
|
||||
// NOLINTBEGIN(readability-enum-initial-value) - The values don't matter, except for Large
|
||||
// Small can be removed when either featureSingleAssetVault or featureLendingProtocol are
|
||||
// retired
|
||||
Small,
|
||||
@@ -140,6 +141,7 @@ struct MantissaRange final
|
||||
// in the extremely unlikely case that a downstream project made use of it. Note that
|
||||
// because the behavior changed, this may still be a breaking change.
|
||||
Large = Large330,
|
||||
// NOLINTEND(readability-enum-initial-value)
|
||||
};
|
||||
|
||||
// This entire enum can be removed when the last relevant amendment is retired
|
||||
@@ -178,7 +180,7 @@ struct MantissaRange final
|
||||
return kScales;
|
||||
}
|
||||
|
||||
class Get
|
||||
class Access
|
||||
{
|
||||
static constexpr MantissaRange const&
|
||||
mantissaRange(MantissaScale scale);
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace xrpl {
|
||||
|
||||
thread_local Number::RoundingMode Number::mode = Number::RoundingMode::ToNearest;
|
||||
thread_local std::reference_wrapper<MantissaRange const> Number::kRange =
|
||||
MantissaRange::Get::mantissaRange(MantissaRange::MantissaScale::Large330);
|
||||
MantissaRange::Access::mantissaRange(MantissaRange::MantissaScale::Large330);
|
||||
|
||||
std::string
|
||||
to_string(MantissaRange::MantissaScale const& scale)
|
||||
@@ -69,7 +69,7 @@ to_string(Number::RoundingMode const& round)
|
||||
}
|
||||
|
||||
constexpr MantissaRange const&
|
||||
MantissaRange::Get::mantissaRange(MantissaScale scale)
|
||||
MantissaRange::Access::mantissaRange(MantissaScale scale)
|
||||
{
|
||||
static constexpr MantissaRange kSmall{MantissaScale::Small};
|
||||
static constexpr MantissaRange kLegacy{MantissaScale::LargeLegacy};
|
||||
@@ -152,7 +152,7 @@ Number::setMantissaScale(MantissaRange::MantissaScale scale)
|
||||
{
|
||||
if (!MantissaRange::getAllScales().contains(scale))
|
||||
logicError("Unknown mantissa scale");
|
||||
kRange = MantissaRange::Get::mantissaRange(scale);
|
||||
kRange = MantissaRange::Access::mantissaRange(scale);
|
||||
}
|
||||
|
||||
// Optimization equivalent to:
|
||||
|
||||
@@ -54,6 +54,8 @@ setCurrentTransactionRules(std::optional<Rules> r)
|
||||
|
||||
if (enableLargeNumbers)
|
||||
{
|
||||
static_assert(
|
||||
MantissaRange::MantissaScale::Large == MantissaRange::MantissaScale::Large330);
|
||||
if (!r || r->enabled(fixCleanup3_3_0))
|
||||
{
|
||||
return MantissaRange::MantissaScale::Large330;
|
||||
|
||||
Reference in New Issue
Block a user