Merge branch 'ximinez/number-round-maxrep-down' into ximinez/number-round-maxrep

This commit is contained in:
Ed Hennis
2026-06-25 19:12:17 -04:00
committed by GitHub
3 changed files with 8 additions and 4 deletions

View File

@@ -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);

View File

@@ -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:

View File

@@ -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;