From ea023121f5fcc9c8fcb7d2dbf664402880648661 Mon Sep 17 00:00:00 2001 From: Alex Kremer Date: Tue, 21 Apr 2026 13:14:07 +0100 Subject: [PATCH 1/4] fix: Add rounding to Vault invariants (#6217) (#6955) Co-authored-by: Vito Tumas <5780819+Tapanito@users.noreply.github.com> Co-authored-by: Ed Hennis --- include/xrpl/protocol/STAmount.h | 19 +- include/xrpl/tx/invariants/VaultInvariant.h | 19 +- .../tx/transactors/lending/LendingHelpers.h | 2 +- src/libxrpl/tx/invariants/VaultInvariant.cpp | 264 +++++++++++++----- .../lending/LoanBrokerCoverWithdraw.cpp | 2 +- src/test/app/Invariants_test.cpp | 125 +++++++++ src/test/app/Loan_test.cpp | 137 ++++++++- 7 files changed, 495 insertions(+), 73 deletions(-) diff --git a/include/xrpl/protocol/STAmount.h b/include/xrpl/protocol/STAmount.h index 55ffc81098..695bd3c0b1 100644 --- a/include/xrpl/protocol/STAmount.h +++ b/include/xrpl/protocol/STAmount.h @@ -42,8 +42,8 @@ private: public: using value_type = STAmount; - static int const cMinOffset = -96; - static int const cMaxOffset = 80; + constexpr static int cMinOffset = -96; + constexpr static int cMaxOffset = 80; // Maximum native value supported by the code constexpr static std::uint64_t cMinValue = 1'000'000'000'000'000ull; @@ -734,6 +734,21 @@ canAdd(STAmount const& amt1, STAmount const& amt2); bool canSubtract(STAmount const& amt1, STAmount const& amt2); +/** Get the scale of a Number for a given asset. + * + * "scale" is similar to "exponent", but from the perspective of STAmount, which has different rules + * and mantissa ranges for determining the exponent than Number. + * + * @param number The Number to get the scale of. + * @param asset The asset to use for determining the scale. + * @return The scale of this Number for the given asset. + */ +inline int +scale(Number const& number, Asset const& asset) +{ + return STAmount{asset, number}.exponent(); +} + } // namespace xrpl //------------------------------------------------------------------------------ diff --git a/include/xrpl/tx/invariants/VaultInvariant.h b/include/xrpl/tx/invariants/VaultInvariant.h index 9a466b2e33..b9b3bf746f 100644 --- a/include/xrpl/tx/invariants/VaultInvariant.h +++ b/include/xrpl/tx/invariants/VaultInvariant.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -60,11 +61,23 @@ class ValidVault Shares static make(SLE const&); }; +public: + struct DeltaInfo final + { + Number delta = numZero; + std::optional scale; + + // Compute the delta between two Numbers, taking the coarsest scale + [[nodiscard]] static DeltaInfo + makeDelta(Number const& before, Number const& after, Asset const& asset); + }; + +private: std::vector afterVault_; std::vector afterMPTs_; std::vector beforeVault_; std::vector beforeMPTs_; - std::unordered_map deltas_; + std::unordered_map deltas_; public: void @@ -72,6 +85,10 @@ public: bool finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&); + + // Compute the coarsest scale required to represent all numbers + [[nodiscard]] static std::int32_t + computeCoarsestScale(std::vector const& numbers); }; } // namespace xrpl diff --git a/include/xrpl/tx/transactors/lending/LendingHelpers.h b/include/xrpl/tx/transactors/lending/LendingHelpers.h index 897ca3995b..1c938bbc8a 100644 --- a/include/xrpl/tx/transactors/lending/LendingHelpers.h +++ b/include/xrpl/tx/transactors/lending/LendingHelpers.h @@ -171,7 +171,7 @@ getAssetsTotalScale(SLE::const_ref vaultSle) { if (!vaultSle) return Number::minExponent - 1; // LCOV_EXCL_LINE - return STAmount{vaultSle->at(sfAsset), vaultSle->at(sfAssetsTotal)}.exponent(); + return scale(vaultSle->at(sfAssetsTotal), vaultSle->at(sfAsset)); } TER diff --git a/src/libxrpl/tx/invariants/VaultInvariant.cpp b/src/libxrpl/tx/invariants/VaultInvariant.cpp index b20176b319..37a908c067 100644 --- a/src/libxrpl/tx/invariants/VaultInvariant.cpp +++ b/src/libxrpl/tx/invariants/VaultInvariant.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include // IWYU pragma: keep #include @@ -20,10 +21,12 @@ #include #include +#include #include #include #include #include +#include namespace xrpl { @@ -73,10 +76,12 @@ ValidVault::visitEntry( "xrpl::ValidVault::visitEntry : some object is available"); // Number balanceDelta will capture the difference (delta) between "before" - // state (zero if created) and "after" state (zero if destroyed), so the - // invariants can validate that the change in account balances matches the - // change in vault balances, stored to deltas_ at the end of this function. - Number balanceDelta{}; + // state (zero if created) and "after" state (zero if destroyed), and + // preserves value scale (exponent) to round values to the same scale during + // validation. It is used to validate that the change in account + // balances matches the change in vault balances, stored to deltas_ at the + // end of this function. + DeltaInfo balanceDelta{numZero, std::nullopt}; std::int8_t sign = 0; if (before) @@ -90,18 +95,34 @@ ValidVault::visitEntry( // At this moment we have no way of telling if this object holds // vault shares or something else. Save it for finalize. beforeMPTs_.push_back(Shares::make(*before)); - balanceDelta = static_cast(before->getFieldU64(sfOutstandingAmount)); + balanceDelta.delta = + static_cast(before->getFieldU64(sfOutstandingAmount)); + // MPTs are ints, so the scale is always 0. + balanceDelta.scale = 0; sign = 1; break; case ltMPTOKEN: - balanceDelta = static_cast(before->getFieldU64(sfMPTAmount)); + balanceDelta.delta = static_cast(before->getFieldU64(sfMPTAmount)); + // MPTs are ints, so the scale is always 0. + balanceDelta.scale = 0; sign = -1; break; case ltACCOUNT_ROOT: - case ltRIPPLE_STATE: - balanceDelta = before->getFieldAmount(sfBalance); + balanceDelta.delta = before->getFieldAmount(sfBalance); + // Account balance is XRP, which is an int, so the scale is + // always 0. + balanceDelta.scale = 0; sign = -1; break; + case ltRIPPLE_STATE: { + auto const amount = before->getFieldAmount(sfBalance); + balanceDelta.delta = amount; + // Trust Line balances are STAmounts, so we can use the exponent + // directly to get the scale. + balanceDelta.scale = amount.exponent(); + sign = -1; + break; + } default:; } } @@ -117,19 +138,36 @@ ValidVault::visitEntry( // At this moment we have no way of telling if this object holds // vault shares or something else. Save it for finalize. afterMPTs_.push_back(Shares::make(*after)); - balanceDelta -= + balanceDelta.delta -= Number(static_cast(after->getFieldU64(sfOutstandingAmount))); + // MPTs are ints, so the scale is always 0. + balanceDelta.scale = 0; sign = 1; break; case ltMPTOKEN: - balanceDelta -= Number(static_cast(after->getFieldU64(sfMPTAmount))); + balanceDelta.delta -= + Number(static_cast(after->getFieldU64(sfMPTAmount))); + // MPTs are ints, so the scale is always 0. + balanceDelta.scale = 0; sign = -1; break; case ltACCOUNT_ROOT: - case ltRIPPLE_STATE: - balanceDelta -= Number(after->getFieldAmount(sfBalance)); + balanceDelta.delta -= Number(after->getFieldAmount(sfBalance)); + // Account balance is XRP, which is an int, so the scale is + // always 0. + balanceDelta.scale = 0; sign = -1; break; + case ltRIPPLE_STATE: { + auto const amount = after->getFieldAmount(sfBalance); + balanceDelta.delta -= Number(amount); + // Trust Line balances are STAmounts, so we can use the exponent + // directly to get the scale. + if (amount.exponent() > balanceDelta.scale) + balanceDelta.scale = amount.exponent(); + sign = -1; + break; + } default:; } } @@ -141,7 +179,11 @@ ValidVault::visitEntry( // transferred to the account. We intentionally do not compare balanceDelta // against zero, to avoid missing such updates. if (sign != 0) - deltas_[key] = balanceDelta * sign; + { + XRPL_ASSERT_PARTS(balanceDelta.scale, "xrpl::ValidVault::visitEntry", "scale initialized"); + balanceDelta.delta *= sign; + deltas_[key] = balanceDelta; + } } bool @@ -403,13 +445,13 @@ ValidVault::finalize( } auto const& vaultAsset = afterVault.asset; - auto const deltaAssets = [&](AccountID const& id) -> std::optional { + auto const deltaAssets = [&](AccountID const& id) -> std::optional { auto const get = // - [&](auto const& it, std::int8_t sign = 1) -> std::optional { + [&](auto const& it, std::int8_t sign = 1) -> std::optional { if (it == deltas_.end()) return std::nullopt; - return it->second * sign; + return DeltaInfo{it->second.delta * sign, it->second.scale}; }; return std::visit( @@ -428,7 +470,7 @@ ValidVault::finalize( }, vaultAsset.value()); }; - auto const deltaAssetsTxAccount = [&]() -> std::optional { + auto const deltaAssetsTxAccount = [&]() -> std::optional { auto ret = deltaAssets(tx[sfAccount]); // Nothing returned or not XRP transaction if (!ret.has_value() || !vaultAsset.native()) @@ -439,20 +481,20 @@ ValidVault::finalize( delegate.has_value() && *delegate != tx[sfAccount]) return ret; - *ret += fee.drops(); - if (*ret == zero) + ret->delta += fee.drops(); + if (ret->delta == zero) return std::nullopt; return ret; }; - auto const deltaShares = [&](AccountID const& id) -> std::optional { + auto const deltaShares = [&](AccountID const& id) -> std::optional { auto const it = [&]() { if (id == afterVault.pseudoId) return deltas_.find(keylet::mptIssuance(afterVault.shareMPTID).key); return deltas_.find(keylet::mptoken(afterVault.shareMPTID, id).key); }(); - return it != deltas_.end() ? std::optional(it->second) : std::nullopt; + return it != deltas_.end() ? std::optional(it->second) : std::nullopt; }; auto const vaultHoldsNoAssets = [&](Vault const& vault) { @@ -579,16 +621,30 @@ ValidVault::finalize( !beforeVault_.empty(), "xrpl::ValidVault::finalize : deposit updated a vault"); auto const& beforeVault = beforeVault_[0]; - auto const vaultDeltaAssets = deltaAssets(afterVault.pseudoId); - - if (!vaultDeltaAssets) + auto const maybeVaultDeltaAssets = deltaAssets(afterVault.pseudoId); + if (!maybeVaultDeltaAssets) { JLOG(j.fatal()) << // "Invariant failed: deposit must change vault balance"; return false; // That's all we can do } - if (*vaultDeltaAssets > tx[sfAmount]) + // Get the coarsest scale to round calculations to + auto const totalDelta = DeltaInfo::makeDelta( + beforeVault.assetsTotal, afterVault.assetsTotal, vaultAsset); + auto const availableDelta = DeltaInfo::makeDelta( + beforeVault.assetsAvailable, afterVault.assetsAvailable, vaultAsset); + auto const minScale = computeCoarsestScale({ + *maybeVaultDeltaAssets, + totalDelta, + availableDelta, + }); + + auto const vaultDeltaAssets = + roundToAsset(vaultAsset, maybeVaultDeltaAssets->delta, minScale); + auto const txAmount = roundToAsset(vaultAsset, tx[sfAmount], minScale); + + if (vaultDeltaAssets > txAmount) { JLOG(j.fatal()) << // "Invariant failed: deposit must not change vault " @@ -596,7 +652,7 @@ ValidVault::finalize( result = false; } - if (*vaultDeltaAssets <= zero) + if (vaultDeltaAssets <= zero) { JLOG(j.fatal()) << // "Invariant failed: deposit must increase vault balance"; @@ -613,16 +669,23 @@ ValidVault::finalize( if (!issuerDeposit) { - auto const accountDeltaAssets = deltaAssetsTxAccount(); - if (!accountDeltaAssets) + auto const maybeAccDeltaAssets = deltaAssetsTxAccount(); + if (!maybeAccDeltaAssets) { JLOG(j.fatal()) << // "Invariant failed: deposit must change depositor " "balance"; return false; } + auto const localMinScale = + std::max(minScale, computeCoarsestScale({*maybeAccDeltaAssets})); - if (*accountDeltaAssets >= zero) + auto const accountDeltaAssets = + roundToAsset(vaultAsset, maybeAccDeltaAssets->delta, localMinScale); + auto const localVaultDeltaAssets = + roundToAsset(vaultAsset, vaultDeltaAssets, localMinScale); + + if (accountDeltaAssets >= zero) { JLOG(j.fatal()) << // "Invariant failed: deposit must decrease depositor " @@ -630,7 +693,7 @@ ValidVault::finalize( result = false; } - if (*accountDeltaAssets * -1 != *vaultDeltaAssets) + if (localVaultDeltaAssets * -1 != accountDeltaAssets) { JLOG(j.fatal()) << // "Invariant failed: deposit must change vault and " @@ -648,16 +711,17 @@ ValidVault::finalize( result = false; } - auto const accountDeltaShares = deltaShares(tx[sfAccount]); - if (!accountDeltaShares) + auto const maybeAccDeltaShares = deltaShares(tx[sfAccount]); + if (!maybeAccDeltaShares) { JLOG(j.fatal()) << // "Invariant failed: deposit must change depositor " "shares"; return false; // That's all we can do } - - if (*accountDeltaShares <= zero) + // We don't need to round shares, they are integral MPT + auto const& accountDeltaShares = *maybeAccDeltaShares; + if (accountDeltaShares.delta <= zero) { JLOG(j.fatal()) << // "Invariant failed: deposit must increase depositor " @@ -665,15 +729,17 @@ ValidVault::finalize( result = false; } - auto const vaultDeltaShares = deltaShares(afterVault.pseudoId); - if (!vaultDeltaShares || *vaultDeltaShares == zero) + auto const maybeVaultDeltaShares = deltaShares(afterVault.pseudoId); + if (!maybeVaultDeltaShares || maybeVaultDeltaShares->delta == zero) { JLOG(j.fatal()) << // "Invariant failed: deposit must change vault shares"; return false; // That's all we can do } - if (*vaultDeltaShares * -1 != *accountDeltaShares) + // We don't need to round shares, they are integral MPT + auto const& vaultDeltaShares = *maybeVaultDeltaShares; + if (vaultDeltaShares.delta * -1 != accountDeltaShares.delta) { JLOG(j.fatal()) << // "Invariant failed: deposit must change depositor and " @@ -681,13 +747,18 @@ ValidVault::finalize( result = false; } - if (beforeVault.assetsTotal + *vaultDeltaAssets != afterVault.assetsTotal) + auto const assetTotalDelta = roundToAsset( + vaultAsset, afterVault.assetsTotal - beforeVault.assetsTotal, minScale); + if (assetTotalDelta != vaultDeltaAssets) { JLOG(j.fatal()) << "Invariant failed: deposit and assets " "outstanding must add up"; result = false; } - if (beforeVault.assetsAvailable + *vaultDeltaAssets != afterVault.assetsAvailable) + + auto const assetAvailableDelta = roundToAsset( + vaultAsset, afterVault.assetsAvailable - beforeVault.assetsAvailable, minScale); + if (assetAvailableDelta != vaultDeltaAssets) { JLOG(j.fatal()) << "Invariant failed: deposit and assets " "available must add up"; @@ -705,16 +776,27 @@ ValidVault::finalize( "vault"); auto const& beforeVault = beforeVault_[0]; - auto const vaultDeltaAssets = deltaAssets(afterVault.pseudoId); + auto const maybeVaultDeltaAssets = deltaAssets(afterVault.pseudoId); - if (!vaultDeltaAssets) + if (!maybeVaultDeltaAssets) { JLOG(j.fatal()) << "Invariant failed: withdrawal must " "change vault balance"; return false; // That's all we can do } - if (*vaultDeltaAssets >= zero) + // Get the most coarse scale to round calculations to + auto const totalDelta = DeltaInfo::makeDelta( + beforeVault.assetsTotal, afterVault.assetsTotal, vaultAsset); + auto const availableDelta = DeltaInfo::makeDelta( + beforeVault.assetsAvailable, afterVault.assetsAvailable, vaultAsset); + auto const minScale = + computeCoarsestScale({*maybeVaultDeltaAssets, totalDelta, availableDelta}); + + auto const vaultPseudoDeltaAssets = + roundToAsset(vaultAsset, maybeVaultDeltaAssets->delta, minScale); + + if (vaultPseudoDeltaAssets >= zero) { JLOG(j.fatal()) << "Invariant failed: withdrawal must " "decrease vault balance"; @@ -732,15 +814,15 @@ ValidVault::finalize( if (!issuerWithdrawal) { - auto const accountDeltaAssets = deltaAssetsTxAccount(); - auto const otherAccountDelta = [&]() -> std::optional { + auto const maybeAccDelta = deltaAssetsTxAccount(); + auto const maybeOtherAccDelta = [&]() -> std::optional { if (auto const destination = tx[~sfDestination]; destination && *destination != tx[sfAccount]) return deltaAssets(*destination); return std::nullopt; }(); - if (accountDeltaAssets.has_value() == otherAccountDelta.has_value()) + if (maybeAccDelta.has_value() == maybeOtherAccDelta.has_value()) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must change one " @@ -749,9 +831,17 @@ ValidVault::finalize( } auto const destinationDelta = // - accountDeltaAssets ? *accountDeltaAssets : *otherAccountDelta; + maybeAccDelta ? *maybeAccDelta : *maybeOtherAccDelta; - if (destinationDelta <= zero) + // the scale of destinationDelta can be coarser than + // minScale, so we take that into account when rounding + auto const localMinScale = + std::max(minScale, computeCoarsestScale({destinationDelta})); + + auto const roundedDestinationDelta = + roundToAsset(vaultAsset, destinationDelta.delta, localMinScale); + + if (roundedDestinationDelta <= zero) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must increase " @@ -759,7 +849,9 @@ ValidVault::finalize( result = false; } - if (*vaultDeltaAssets * -1 != destinationDelta) + auto const localPseudoDeltaAssets = + roundToAsset(vaultAsset, vaultPseudoDeltaAssets, localMinScale); + if (localPseudoDeltaAssets * -1 != roundedDestinationDelta) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must change vault " @@ -768,6 +860,7 @@ ValidVault::finalize( } } + // We don't need to round shares, they are integral MPT auto const accountDeltaShares = deltaShares(tx[sfAccount]); if (!accountDeltaShares) { @@ -777,7 +870,7 @@ ValidVault::finalize( return false; } - if (*accountDeltaShares >= zero) + if (accountDeltaShares->delta >= zero) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must decrease depositor " @@ -785,15 +878,16 @@ ValidVault::finalize( result = false; } + // We don't need to round shares, they are integral MPT auto const vaultDeltaShares = deltaShares(afterVault.pseudoId); - if (!vaultDeltaShares || *vaultDeltaShares == zero) + if (!vaultDeltaShares || vaultDeltaShares->delta == zero) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must change vault shares"; return false; // That's all we can do } - if (*vaultDeltaShares * -1 != *accountDeltaShares) + if (vaultDeltaShares->delta * -1 != accountDeltaShares->delta) { JLOG(j.fatal()) << // "Invariant failed: withdrawal must change depositor " @@ -801,15 +895,20 @@ ValidVault::finalize( result = false; } + auto const assetTotalDelta = roundToAsset( + vaultAsset, afterVault.assetsTotal - beforeVault.assetsTotal, minScale); // Note, vaultBalance is negative (see check above) - if (beforeVault.assetsTotal + *vaultDeltaAssets != afterVault.assetsTotal) + if (assetTotalDelta != vaultPseudoDeltaAssets) { JLOG(j.fatal()) << "Invariant failed: withdrawal and " "assets outstanding must add up"; result = false; } - if (beforeVault.assetsAvailable + *vaultDeltaAssets != afterVault.assetsAvailable) + auto const assetAvailableDelta = roundToAsset( + vaultAsset, afterVault.assetsAvailable - beforeVault.assetsAvailable, minScale); + + if (assetAvailableDelta != vaultPseudoDeltaAssets) { JLOG(j.fatal()) << "Invariant failed: withdrawal and " "assets available must add up"; @@ -840,10 +939,18 @@ ValidVault::finalize( } } - auto const vaultDeltaAssets = deltaAssets(afterVault.pseudoId); - if (vaultDeltaAssets) + auto const maybeVaultDeltaAssets = deltaAssets(afterVault.pseudoId); + if (maybeVaultDeltaAssets) { - if (*vaultDeltaAssets >= zero) + auto const totalDelta = DeltaInfo::makeDelta( + beforeVault.assetsTotal, afterVault.assetsTotal, vaultAsset); + auto const availableDelta = DeltaInfo::makeDelta( + beforeVault.assetsAvailable, afterVault.assetsAvailable, vaultAsset); + auto const minScale = + computeCoarsestScale({*maybeVaultDeltaAssets, totalDelta, availableDelta}); + auto const vaultDeltaAssets = + roundToAsset(vaultAsset, maybeVaultDeltaAssets->delta, minScale); + if (vaultDeltaAssets >= zero) { JLOG(j.fatal()) << // "Invariant failed: clawback must decrease vault " @@ -851,7 +958,9 @@ ValidVault::finalize( result = false; } - if (beforeVault.assetsTotal + *vaultDeltaAssets != afterVault.assetsTotal) + auto const assetsTotalDelta = roundToAsset( + vaultAsset, afterVault.assetsTotal - beforeVault.assetsTotal, minScale); + if (assetsTotalDelta != vaultDeltaAssets) { JLOG(j.fatal()) << // "Invariant failed: clawback and assets outstanding " @@ -859,8 +968,11 @@ ValidVault::finalize( result = false; } - if (beforeVault.assetsAvailable + *vaultDeltaAssets != - afterVault.assetsAvailable) + auto const assetAvailableDelta = roundToAsset( + vaultAsset, + afterVault.assetsAvailable - beforeVault.assetsAvailable, + minScale); + if (assetAvailableDelta != vaultDeltaAssets) { JLOG(j.fatal()) << // "Invariant failed: clawback and assets available " @@ -875,15 +987,15 @@ ValidVault::finalize( return false; // That's all we can do } - auto const accountDeltaShares = deltaShares(tx[sfHolder]); - if (!accountDeltaShares) + // We don't need to round shares, they are integral MPT + auto const maybeAccountDeltaShares = deltaShares(tx[sfHolder]); + if (!maybeAccountDeltaShares) { JLOG(j.fatal()) << // "Invariant failed: clawback must change holder shares"; return false; // That's all we can do } - - if (*accountDeltaShares >= zero) + if (maybeAccountDeltaShares->delta >= zero) { JLOG(j.fatal()) << // "Invariant failed: clawback must decrease holder " @@ -891,15 +1003,16 @@ ValidVault::finalize( result = false; } + // We don't need to round shares, they are integral MPT auto const vaultDeltaShares = deltaShares(afterVault.pseudoId); - if (!vaultDeltaShares || *vaultDeltaShares == zero) + if (!vaultDeltaShares || vaultDeltaShares->delta == zero) { JLOG(j.fatal()) << // "Invariant failed: clawback must change vault shares"; return false; // That's all we can do } - if (*vaultDeltaShares * -1 != *accountDeltaShares) + if (vaultDeltaShares->delta * -1 != maybeAccountDeltaShares->delta) { JLOG(j.fatal()) << // "Invariant failed: clawback must change holder and " @@ -936,4 +1049,25 @@ ValidVault::finalize( return true; } +[[nodiscard]] ValidVault::DeltaInfo +ValidVault::DeltaInfo::makeDelta(Number const& before, Number const& after, Asset const& asset) +{ + return {after - before, std::max(xrpl::scale(after, asset), xrpl::scale(before, asset))}; +} + +[[nodiscard]] std::int32_t +ValidVault::computeCoarsestScale(std::vector const& numbers) +{ + if (numbers.empty()) + return 0; + + auto const max = + std::max_element(numbers.begin(), numbers.end(), [](auto const& a, auto const& b) -> bool { + return a.scale < b.scale; + }); + XRPL_ASSERT_PARTS( + max->scale, "xrpl::ValidVault::computeCoarsestScale", "scale set for destinationDelta"); + return max->scale.value_or(STAmount::cMaxOffset); +} + } // namespace xrpl diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp index dc6a067485..bc857cd340 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp @@ -132,7 +132,7 @@ LoanBrokerCoverWithdraw::preclaim(PreclaimContext const& ctx) return roundToAsset( vaultAsset, tenthBipsOfValue(currentDebtTotal, TenthBips32(sleBroker->at(sfCoverRateMinimum))), - currentDebtTotal.exponent()); + scale(currentDebtTotal, vaultAsset)); }(); if (coverAvail < amount) return tecINSUFFICIENT_FUNDS; diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 35182a2db0..8e6e63b89a 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,7 @@ #include #include #include +#include #include #include @@ -4081,6 +4083,128 @@ class Invariants_test : public beast::unit_test::suite } } + void + testVaultComputeCoarsestScale() + { + using namespace jtx; + + Account const issuer{"issuer"}; + PrettyAsset const vaultAsset = issuer["IOU"]; + + struct TestCase + { + std::string name; + std::int32_t expectedMinScale; + std::vector values; + }; + + NumberMantissaScaleGuard const g{MantissaRange::large}; + + auto makeDelta = [&vaultAsset](Number const& n) -> ValidVault::DeltaInfo { + return {n, scale(n, vaultAsset.raw())}; + }; + + auto const testCases = std::vector{ + { + .name = "No values", + .expectedMinScale = 0, + .values = {}, + }, + { + .name = "Mixed integer and Number values", + .expectedMinScale = -15, + .values = {makeDelta(1), makeDelta(-1), makeDelta(Number{10, -1})}, + }, + { + .name = "Mixed scales", + .expectedMinScale = -17, + .values = + {makeDelta(Number{1, -2}), makeDelta(Number{5, -3}), makeDelta(Number{3, -2})}, + }, + { + .name = "Equal scales", + .expectedMinScale = -16, + .values = + {makeDelta(Number{1, -1}), makeDelta(Number{5, -1}), makeDelta(Number{1, -1})}, + }, + { + .name = "Mixed mantissa sizes", + .expectedMinScale = -12, + .values = + {makeDelta(Number{1}), + makeDelta(Number{1234, -3}), + makeDelta(Number{12345, -6}), + makeDelta(Number{123, 1})}, + }, + }; + + for (auto const& tc : testCases) + { + testcase("vault computeCoarsestScale: " + tc.name); + + auto const actualScale = ValidVault::computeCoarsestScale(tc.values); + + BEAST_EXPECTS( + actualScale == tc.expectedMinScale, + "expected: " + std::to_string(tc.expectedMinScale) + + ", actual: " + std::to_string(actualScale)); + for (auto const& num : tc.values) + { + // None of these scales are far enough apart that rounding the + // values would lose information, so check that the rounded + // value matches the original. + auto const actualRounded = roundToAsset(vaultAsset, num.delta, actualScale); + BEAST_EXPECTS( + actualRounded == num.delta, + "number " + to_string(num.delta) + " rounded to scale " + + std::to_string(actualScale) + " is " + to_string(actualRounded)); + } + } + + auto const testCases2 = std::vector{ + { + .name = "False equivalence", + .expectedMinScale = -15, + .values = + { + makeDelta(Number{1234567890123456789, -18}), + makeDelta(Number{12345, -4}), + makeDelta(Number{1}), + }, + }, + }; + + // Unlike the first set of test cases, the values in these test could + // look equivalent if using the wrong scale. + for (auto const& tc : testCases2) + { + testcase("vault computeCoarsestScale: " + tc.name); + + auto const actualScale = ValidVault::computeCoarsestScale(tc.values); + + BEAST_EXPECTS( + actualScale == tc.expectedMinScale, + "expected: " + std::to_string(tc.expectedMinScale) + + ", actual: " + std::to_string(actualScale)); + std::optional first; + Number firstRounded; + for (auto const& num : tc.values) + { + if (!first) + { + first = num.delta; + firstRounded = roundToAsset(vaultAsset, num.delta, actualScale); + continue; + } + auto const numRounded = roundToAsset(vaultAsset, num.delta, actualScale); + BEAST_EXPECTS( + numRounded != firstRounded, + "at a scale of " + std::to_string(actualScale) + " " + to_string(num.delta) + + " == " + to_string(*first)); + } + } + } + public: void run() override @@ -4111,6 +4235,7 @@ public: testValidLoanBroker(); testVault(); testMPT(); + testVaultComputeCoarsestScale(); } }; diff --git a/src/test/app/Loan_test.cpp b/src/test/app/Loan_test.cpp index 14b0ca7227..cd3fe1df2e 100644 --- a/src/test/app/Loan_test.cpp +++ b/src/test/app/Loan_test.cpp @@ -2747,7 +2747,7 @@ protected: env(manage(lender, loanKeylet.key, tfLoanDefault), ter(tecNO_PERMISSION)); }); -#if LOANTODO +#if LOAN_TODO // TODO /* @@ -5412,7 +5412,7 @@ protected: } } -#if LOANTODO +#if LOAN_TODO void testLoanPayLateFullPaymentBypassesPenalties() { @@ -7067,14 +7067,145 @@ protected: BEAST_EXPECT(afterSecondCoverAvailable == 0); } + // Tests that vault withdrawals work correctly when the vault has unrealized + // loss from an impaired loan, ensuring the invariant check properly + // accounts for the loss. + void + testWithdrawReflectsUnrealizedLoss() + { + using namespace jtx; + using namespace loan; + using namespace std::chrono_literals; + + testcase("Vault withdraw reflects sfLossUnrealized"); + + // Test constants + static constexpr std::int64_t INITIAL_FUNDING = 1'000'000; + static constexpr std::int64_t LENDER_INITIAL_IOU = 5'000'000; + static constexpr std::int64_t DEPOSITOR_INITIAL_IOU = 1'000'000; + static constexpr std::int64_t BORROWER_INITIAL_IOU = 100'000; + static constexpr std::int64_t DEPOSIT_AMOUNT = 5'000; + static constexpr std::int64_t PRINCIPAL_AMOUNT = 99; + static constexpr std::uint64_t EXPECTED_SHARES_PER_DEPOSITOR = 5'000'000'000; + static constexpr std::uint32_t PAYMENT_INTERVAL = 600; + static constexpr std::uint32_t PAYMENT_TOTAL = 2; + + Env env(*this, all); + + // Setup accounts + Account const issuer{"issuer"}; + Account const lender{"lender"}; + Account const depositorA{"lpA"}; + Account const depositorB{"lpB"}; + Account const borrower{"borrowerA"}; + + env.fund(XRP(INITIAL_FUNDING), issuer, lender, depositorA, depositorB, borrower); + env.close(); + + // Setup trust lines + PrettyAsset const iouAsset = issuer[iouCurrency]; + env(trust(lender, iouAsset(10'000'000))); + env(trust(depositorA, iouAsset(10'000'000))); + env(trust(depositorB, iouAsset(10'000'000))); + env(trust(borrower, iouAsset(10'000'000))); + env.close(); + + // Fund accounts with IOUs + env(pay(issuer, lender, iouAsset(LENDER_INITIAL_IOU))); + env(pay(issuer, depositorA, iouAsset(DEPOSITOR_INITIAL_IOU))); + env(pay(issuer, depositorB, iouAsset(DEPOSITOR_INITIAL_IOU))); + env(pay(issuer, borrower, iouAsset(BORROWER_INITIAL_IOU))); + env.close(); + + // Create vault and broker, then add deposits from two depositors + auto const broker = createVaultAndBroker(env, iouAsset, lender); + Vault v{env}; + + env(v.deposit({ + .depositor = depositorA, + .id = broker.vaultKeylet().key, + .amount = iouAsset(DEPOSIT_AMOUNT), + }), + ter(tesSUCCESS)); + env(v.deposit({ + .depositor = depositorB, + .id = broker.vaultKeylet().key, + .amount = iouAsset(DEPOSIT_AMOUNT), + }), + ter(tesSUCCESS)); + env.close(); + + // Create a loan + auto const sleBroker = env.le(keylet::loanbroker(broker.brokerID)); + if (!BEAST_EXPECT(sleBroker)) + return; + + auto const loanKeylet = keylet::loan(broker.brokerID, sleBroker->at(sfLoanSequence)); + + env(set(borrower, broker.brokerID, PRINCIPAL_AMOUNT), + sig(sfCounterpartySignature, lender), + paymentTotal(PAYMENT_TOTAL), + paymentInterval(PAYMENT_INTERVAL), + fee(env.current()->fees().base * 2), + ter(tesSUCCESS)); + env.close(); + + // Impair the loan to create unrealized loss + env(manage(lender, loanKeylet.key, tfLoanImpair), ter(tesSUCCESS)); + env.close(); + + // Verify unrealized loss is recorded in the vault + auto const vaultAfterImpair = env.le(broker.vaultKeylet()); + if (!BEAST_EXPECT(vaultAfterImpair)) + return; + + BEAST_EXPECT( + vaultAfterImpair->at(sfLossUnrealized) == broker.asset(PRINCIPAL_AMOUNT).value()); + + // Helper to get share balance for a depositor + auto const shareAsset = vaultAfterImpair->at(sfShareMPTID); + auto const getShareBalance = [&](Account const& depositor) -> std::uint64_t { + auto const token = env.le(keylet::mptoken(shareAsset, depositor.id())); + return token ? token->getFieldU64(sfMPTAmount) : 0; + }; + + // Verify both depositors have equal shares + auto const sharesLpA = getShareBalance(depositorA); + auto const sharesLpB = getShareBalance(depositorB); + BEAST_EXPECT(sharesLpA == EXPECTED_SHARES_PER_DEPOSITOR); + BEAST_EXPECT(sharesLpB == EXPECTED_SHARES_PER_DEPOSITOR); + BEAST_EXPECT(sharesLpA == sharesLpB); + + // Helper to attempt withdrawal + auto const attemptWithdrawShares = [&](Account const& depositor, + std::uint64_t shareAmount, + TER expected) { + STAmount const shareAmt{MPTIssue{shareAsset}, Number(shareAmount)}; + env(v.withdraw( + {.depositor = depositor, .id = broker.vaultKeylet().key, .amount = shareAmt}), + ter(expected)); + env.close(); + }; + + // Regression test: Both depositors should successfully withdraw despite + // unrealized loss. Previously failed with invariant violation: + // "withdrawal must change vault and destination balance by equal + // amount". This was caused by sharesToAssetsWithdraw rounding down, + // creating a mismatch where vaultDeltaAssets * -1 != destinationDelta + // when unrealized loss exists. + attemptWithdrawShares(depositorA, sharesLpA, tesSUCCESS); + attemptWithdrawShares(depositorB, sharesLpB, tesSUCCESS); + } + public: void run() override { -#if LOANTODO +#if LOAN_TODO testLoanPayLateFullPaymentBypassesPenalties(); testLoanCoverMinimumRoundingExploit(); #endif + testWithdrawReflectsUnrealizedLoss(); testInvalidLoanSet(); auto const all = jtx::testable_amendments(); From ab887f5049eb2b3d40a97c1678629b2ca9938b05 Mon Sep 17 00:00:00 2001 From: Ayaz Salikhov Date: Tue, 21 Apr 2026 15:22:33 +0100 Subject: [PATCH 2/4] ci: Upload clang-tidy git diff (#6983) --- .github/workflows/reusable-clang-tidy-files.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-clang-tidy-files.yml b/.github/workflows/reusable-clang-tidy-files.yml index 30b826cb1b..3a0df1a6a1 100644 --- a/.github/workflows/reusable-clang-tidy-files.yml +++ b/.github/workflows/reusable-clang-tidy-files.yml @@ -90,8 +90,21 @@ jobs: path: clang-tidy-output.txt retention-days: 30 + - name: Generate git diff + if: ${{ steps.run_clang_tidy.outcome != 'success' }} + run: | + git diff | tee clang-tidy-git-diff.txt + + - name: Upload clang-tidy diff output + if: ${{ github.event.repository.visibility == 'public' && steps.run_clang_tidy.outcome != 'success' }} + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: clang-tidy-git-diff + path: clang-tidy-git-diff.txt + retention-days: 30 + - name: Create an issue - if: steps.run_clang_tidy.outcome != 'success' && inputs.create_issue_on_failure + if: ${{ steps.run_clang_tidy.outcome != 'success' && inputs.create_issue_on_failure }} id: create_issue shell: bash env: @@ -156,7 +169,7 @@ jobs: rm -f create_issue.log issue.md clang-tidy-output.txt - name: Fail the workflow if clang-tidy failed - if: steps.run_clang_tidy.outcome != 'success' + if: ${{ steps.run_clang_tidy.outcome != 'success' }} run: | echo "Clang-tidy check failed!" exit 1 From ce3951bbb3a1167d95f89abf3bb9c371b2ae4b48 Mon Sep 17 00:00:00 2001 From: Alex Kremer Date: Tue, 21 Apr 2026 16:32:51 +0100 Subject: [PATCH 3/4] chore: Enable clang-tidy modernize checks (#6975) Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com> Co-authored-by: Bart --- .clang-tidy | 27 +- include/xrpl/basics/BasicConfig.h | 5 +- include/xrpl/basics/CompressionAlgorithms.h | 8 +- include/xrpl/basics/Expected.h | 2 +- include/xrpl/basics/LocalValue.h | 3 +- include/xrpl/basics/Log.h | 2 +- include/xrpl/basics/SlabAllocator.h | 24 +- include/xrpl/basics/Slice.h | 4 +- include/xrpl/basics/TaggedCache.h | 2 +- include/xrpl/basics/ToString.h | 2 +- include/xrpl/basics/base_uint.h | 4 +- include/xrpl/basics/contract.h | 3 +- include/xrpl/basics/random.h | 22 +- include/xrpl/basics/safe_cast.h | 6 +- include/xrpl/basics/strHex.h | 4 +- include/xrpl/basics/tagged_integer.h | 3 +- .../beast/container/aged_container_utility.h | 2 +- .../detail/aged_associative_container.h | 6 +- .../detail/aged_container_iterator.h | 3 +- .../container/detail/aged_ordered_container.h | 128 +- .../detail/aged_unordered_container.h | 140 +- .../detail/empty_base_optimization.h | 8 +- include/xrpl/beast/core/List.h | 2 +- include/xrpl/beast/core/LockFreeStack.h | 12 +- include/xrpl/beast/hash/hash_append.h | 6 +- include/xrpl/beast/hash/xxhasher.h | 4 +- include/xrpl/beast/insight/Collector.h | 6 +- include/xrpl/beast/insight/Counter.h | 10 +- include/xrpl/beast/insight/CounterImpl.h | 6 +- include/xrpl/beast/insight/Event.h | 10 +- include/xrpl/beast/insight/EventImpl.h | 6 +- include/xrpl/beast/insight/Gauge.h | 10 +- include/xrpl/beast/insight/GaugeImpl.h | 6 +- include/xrpl/beast/insight/Group.h | 6 +- include/xrpl/beast/insight/Groups.h | 6 +- include/xrpl/beast/insight/Hook.h | 10 +- include/xrpl/beast/insight/HookImpl.h | 6 +- include/xrpl/beast/insight/Meter.h | 10 +- include/xrpl/beast/insight/MeterImpl.h | 6 +- include/xrpl/beast/insight/NullCollector.h | 6 +- include/xrpl/beast/insight/StatsDCollector.h | 6 +- include/xrpl/beast/net/IPAddressConversion.h | 6 +- include/xrpl/beast/net/IPAddressV4.h | 6 +- include/xrpl/beast/net/IPAddressV6.h | 6 +- include/xrpl/beast/net/IPEndpoint.h | 8 +- include/xrpl/beast/rfc2616.h | 6 +- include/xrpl/beast/test/yield_to.h | 6 +- include/xrpl/beast/type_name.h | 10 +- include/xrpl/beast/unit_test/amount.h | 6 +- .../beast/unit_test/detail/const_container.h | 8 +- include/xrpl/beast/unit_test/global_suites.h | 6 +- include/xrpl/beast/unit_test/match.h | 6 +- include/xrpl/beast/unit_test/recorder.h | 20 +- include/xrpl/beast/unit_test/reporter.h | 22 +- include/xrpl/beast/unit_test/results.h | 21 +- include/xrpl/beast/unit_test/runner.h | 6 +- include/xrpl/beast/unit_test/suite.h | 8 +- include/xrpl/beast/unit_test/suite_info.h | 6 +- include/xrpl/beast/unit_test/suite_list.h | 6 +- include/xrpl/beast/unit_test/thread.h | 6 +- include/xrpl/beast/utility/Journal.h | 27 +- include/xrpl/beast/utility/PropertyStream.h | 4 +- include/xrpl/beast/utility/WrappedSink.h | 6 +- include/xrpl/beast/utility/Zero.h | 6 +- include/xrpl/beast/utility/maybe_const.h | 6 +- include/xrpl/conditions/Condition.h | 7 +- include/xrpl/conditions/Fulfillment.h | 6 +- .../xrpl/conditions/detail/PreimageSha256.h | 6 +- include/xrpl/conditions/detail/error.h | 6 +- include/xrpl/conditions/detail/utils.h | 9 +- include/xrpl/core/ClosureCounter.h | 4 +- include/xrpl/core/HashRouter.h | 4 +- include/xrpl/core/JobQueue.h | 5 +- include/xrpl/core/JobTypeData.h | 6 +- include/xrpl/core/LoadEvent.h | 2 +- include/xrpl/core/detail/Workers.h | 4 +- include/xrpl/json/json_writer.h | 16 +- include/xrpl/ledger/AmendmentTable.h | 5 +- include/xrpl/ledger/BookListeners.h | 4 +- include/xrpl/ledger/CachedView.h | 2 +- include/xrpl/ledger/Ledger.h | 10 +- include/xrpl/ledger/OpenView.h | 2 +- include/xrpl/ledger/PaymentSandbox.h | 5 +- include/xrpl/ledger/detail/ApplyStateTable.h | 6 +- include/xrpl/ledger/detail/ApplyViewBase.h | 6 +- include/xrpl/ledger/detail/RawStateTable.h | 6 +- include/xrpl/ledger/helpers/NFTokenHelpers.h | 12 +- .../ledger/helpers/PermissionedDEXHelpers.h | 7 +- include/xrpl/net/HTTPClientSSLContext.h | 8 +- include/xrpl/nodestore/Backend.h | 6 +- include/xrpl/nodestore/Database.h | 7 +- include/xrpl/nodestore/DatabaseRotating.h | 6 +- include/xrpl/nodestore/DummyScheduler.h | 8 +- include/xrpl/nodestore/Factory.h | 7 +- include/xrpl/nodestore/Manager.h | 7 +- include/xrpl/nodestore/Scheduler.h | 6 +- include/xrpl/nodestore/Task.h | 6 +- include/xrpl/nodestore/Types.h | 7 +- include/xrpl/nodestore/detail/BatchWriter.h | 8 +- .../xrpl/nodestore/detail/DatabaseNodeImp.h | 8 +- .../nodestore/detail/DatabaseRotatingImp.h | 8 +- include/xrpl/nodestore/detail/DecodedBlob.h | 6 +- include/xrpl/nodestore/detail/EncodedBlob.h | 6 +- include/xrpl/nodestore/detail/ManagerImp.h | 9 +- include/xrpl/nodestore/detail/codec.h | 6 +- include/xrpl/nodestore/detail/varint.h | 14 +- include/xrpl/protocol/Book.h | 4 +- include/xrpl/protocol/BuildInfo.h | 8 +- include/xrpl/protocol/Indexes.h | 12 +- include/xrpl/protocol/KnownFormats.h | 2 +- .../xrpl/protocol/NFTSyntheticSerializer.h | 7 +- include/xrpl/protocol/Quality.h | 3 +- include/xrpl/protocol/STExchange.h | 2 +- include/xrpl/protocol/STObject.h | 9 +- include/xrpl/protocol/TER.h | 18 +- include/xrpl/protocol/XChainAttestations.h | 9 +- include/xrpl/protocol/detail/STVar.h | 6 +- include/xrpl/protocol/detail/b58_utils.h | 8 +- include/xrpl/protocol/detail/token_errors.h | 8 +- include/xrpl/protocol/jss.h | 6 +- include/xrpl/protocol/nft.h | 6 +- include/xrpl/protocol/nftPageMask.h | 6 +- include/xrpl/rdb/SociDB.h | 2 +- include/xrpl/resource/Charge.h | 8 +- include/xrpl/resource/Consumer.h | 6 +- include/xrpl/resource/Disposition.h | 6 +- include/xrpl/resource/Fees.h | 6 +- include/xrpl/resource/Gossip.h | 6 +- include/xrpl/resource/ResourceManager.h | 8 +- include/xrpl/resource/detail/Entry.h | 6 +- include/xrpl/resource/detail/Import.h | 6 +- include/xrpl/resource/detail/Key.h | 10 +- include/xrpl/resource/detail/Kind.h | 6 +- include/xrpl/resource/detail/Logic.h | 6 +- include/xrpl/resource/detail/Tuning.h | 6 +- include/xrpl/server/Manifest.h | 11 +- include/xrpl/server/Port.h | 8 +- include/xrpl/server/SimpleWriter.h | 2 +- include/xrpl/server/detail/BaseHTTPPeer.h | 5 +- include/xrpl/server/detail/BasePeer.h | 3 +- include/xrpl/server/detail/BaseWSPeer.h | 3 +- include/xrpl/server/detail/Door.h | 3 +- include/xrpl/server/detail/ServerImpl.h | 2 +- include/xrpl/server/detail/io_list.h | 2 +- .../xrpl/shamap/SHAMapAccountStateLeafNode.h | 10 +- include/xrpl/shamap/SHAMapInnerNode.h | 2 +- include/xrpl/shamap/SHAMapLeafNode.h | 8 +- include/xrpl/shamap/SHAMapTreeNode.h | 11 +- include/xrpl/shamap/SHAMapTxLeafNode.h | 10 +- .../xrpl/shamap/SHAMapTxPlusMetaLeafNode.h | 6 +- include/xrpl/tx/Transactor.h | 16 +- include/xrpl/tx/invariants/AMMInvariant.h | 4 +- include/xrpl/tx/paths/Flow.h | 6 +- include/xrpl/tx/paths/Offer.h | 7 +- include/xrpl/tx/paths/detail/FlowDebugInfo.h | 8 +- include/xrpl/tx/paths/detail/StrandFlow.h | 8 +- src/libxrpl/basics/BasicConfig.cpp | 2 +- src/libxrpl/basics/CountedObject.cpp | 2 +- src/libxrpl/basics/Log.cpp | 4 +- src/libxrpl/basics/ResolverAsio.cpp | 8 +- src/libxrpl/basics/make_SSLContext.cpp | 7 +- src/libxrpl/beast/core/SemanticVersion.cpp | 18 +- src/libxrpl/beast/insight/Collector.cpp | 6 +- src/libxrpl/beast/insight/Groups.cpp | 19 +- src/libxrpl/beast/insight/Hook.cpp | 6 +- src/libxrpl/beast/insight/Metric.cpp | 6 +- src/libxrpl/beast/insight/NullCollector.cpp | 23 +- src/libxrpl/beast/insight/StatsDCollector.cpp | 70 +- src/libxrpl/beast/net/IPAddressConversion.cpp | 6 +- src/libxrpl/beast/net/IPAddressV4.cpp | 6 +- src/libxrpl/beast/net/IPAddressV6.cpp | 6 +- src/libxrpl/beast/net/IPEndpoint.cpp | 9 +- .../beast/utility/beast_PropertyStream.cpp | 4 +- src/libxrpl/conditions/Condition.cpp | 6 +- src/libxrpl/conditions/Fulfillment.cpp | 6 +- src/libxrpl/conditions/error.cpp | 8 +- src/libxrpl/core/detail/JobQueue.cpp | 4 +- src/libxrpl/core/detail/LoadEvent.cpp | 5 +- src/libxrpl/core/detail/Workers.cpp | 9 +- src/libxrpl/json/Writer.cpp | 9 +- src/libxrpl/json/json_reader.cpp | 3 +- src/libxrpl/json/json_value.cpp | 4 +- src/libxrpl/json/json_valueiterator.cpp | 4 +- src/libxrpl/json/json_writer.cpp | 7 +- src/libxrpl/ledger/ApplyStateTable.cpp | 6 +- src/libxrpl/ledger/ApplyView.cpp | 8 +- src/libxrpl/ledger/ApplyViewBase.cpp | 6 +- src/libxrpl/ledger/CachedView.cpp | 6 +- src/libxrpl/ledger/Ledger.cpp | 18 +- src/libxrpl/ledger/OpenView.cpp | 4 +- src/libxrpl/ledger/PaymentSandbox.cpp | 2 +- src/libxrpl/ledger/RawStateTable.cpp | 8 +- src/libxrpl/ledger/helpers/NFTokenHelpers.cpp | 28 +- .../ledger/helpers/PermissionedDEXHelpers.cpp | 22 +- src/libxrpl/nodestore/BatchWriter.cpp | 6 +- src/libxrpl/nodestore/Database.cpp | 6 +- src/libxrpl/nodestore/DatabaseNodeImp.cpp | 6 +- src/libxrpl/nodestore/DatabaseRotatingImp.cpp | 6 +- src/libxrpl/nodestore/DecodedBlob.cpp | 6 +- src/libxrpl/nodestore/DummyScheduler.cpp | 6 +- src/libxrpl/nodestore/ManagerImp.cpp | 16 +- .../nodestore/backend/MemoryFactory.cpp | 6 +- src/libxrpl/nodestore/backend/NuDBFactory.cpp | 6 +- src/libxrpl/nodestore/backend/NullFactory.cpp | 8 +- .../nodestore/backend/RocksDBFactory.cpp | 6 +- src/libxrpl/protocol/BuildInfo.cpp | 10 +- src/libxrpl/protocol/Feature.cpp | 6 +- src/libxrpl/protocol/IOUAmount.cpp | 4 +- .../protocol/NFTSyntheticSerializer.cpp | 6 +- src/libxrpl/protocol/NFTokenID.cpp | 39 +- src/libxrpl/protocol/STArray.cpp | 2 +- src/libxrpl/protocol/STNumber.cpp | 2 +- src/libxrpl/protocol/STObject.cpp | 23 +- src/libxrpl/protocol/STParsedJSON.cpp | 4 +- src/libxrpl/protocol/STVar.cpp | 6 +- src/libxrpl/protocol/SecretKey.cpp | 4 +- src/libxrpl/protocol/Serializer.cpp | 2 +- src/libxrpl/protocol/UintTypes.cpp | 2 +- src/libxrpl/protocol/XChainAttestations.cpp | 8 +- src/libxrpl/protocol/tokens.cpp | 2 +- src/libxrpl/rdb/SociDB.cpp | 2 +- src/libxrpl/resource/Charge.cpp | 9 +- src/libxrpl/resource/Consumer.cpp | 6 +- src/libxrpl/resource/Fees.cpp | 6 +- src/libxrpl/resource/ResourceManager.cpp | 6 +- src/libxrpl/server/Manifest.cpp | 5 +- src/libxrpl/server/Wallet.cpp | 2 +- src/libxrpl/shamap/SHAMap.cpp | 16 +- src/libxrpl/shamap/SHAMapDelta.cpp | 76 +- src/libxrpl/shamap/SHAMapSync.cpp | 16 +- src/libxrpl/tx/ApplyContext.cpp | 2 +- src/libxrpl/tx/invariants/FreezeInvariant.cpp | 8 +- .../PermissionedDomainInvariant.cpp | 6 +- src/libxrpl/tx/invariants/VaultInvariant.cpp | 12 +- src/libxrpl/tx/paths/OfferStream.cpp | 2 +- src/libxrpl/tx/paths/PaySteps.cpp | 5 +- src/libxrpl/tx/paths/RippleCalc.cpp | 6 +- .../tx/transactors/account/SignerListSet.cpp | 2 +- .../tx/transactors/bridge/XChainBridge.cpp | 18 +- .../tx/transactors/nft/NFTokenCancelOffer.cpp | 6 +- .../tx/transactors/payment/Payment.cpp | 3 +- src/libxrpl/tx/transactors/system/Batch.cpp | 6 +- src/libxrpl/tx/transactors/system/Change.cpp | 2 +- .../transactors/token/MPTokenIssuanceSet.cpp | 44 +- src/test/app/AMMCalc_test.cpp | 6 +- src/test/app/AMMClawbackMPT_test.cpp | 6 +- src/test/app/AMMClawback_test.cpp | 6 +- src/test/app/AMMExtendedMPT_test.cpp | 6 +- src/test/app/AMMExtended_test.cpp | 6 +- src/test/app/AMMMPT_test.cpp | 6 +- src/test/app/AMM_test.cpp | 6 +- src/test/app/AccountDelete_test.cpp | 6 +- src/test/app/AccountSet_test.cpp | 16 +- src/test/app/AmendmentTable_test.cpp | 23 +- src/test/app/Batch_test.cpp | 13 +- src/test/app/CheckMPT_test.cpp | 9 +- src/test/app/Check_test.cpp | 26 +- src/test/app/Credentials_test.cpp | 6 +- src/test/app/CrossingLimitsMPT_test.cpp | 6 +- src/test/app/CrossingLimits_test.cpp | 6 +- src/test/app/DID_test.cpp | 6 +- src/test/app/DNS_test.cpp | 6 +- src/test/app/Delegate_test.cpp | 6 +- src/test/app/DeliverMin_test.cpp | 6 +- src/test/app/DepositAuth_test.cpp | 6 +- src/test/app/EscrowToken_test.cpp | 242 ++- src/test/app/Escrow_test.cpp | 66 +- src/test/app/FeeVote_test.cpp | 8 +- src/test/app/FixNFTokenPageLinks_test.cpp | 2 +- src/test/app/FlowMPT_test.cpp | 21 +- src/test/app/Flow_test.cpp | 6 +- src/test/app/GRPCServerTLS_test.cpp | 6 +- src/test/app/HashRouter_test.cpp | 6 +- src/test/app/Invariants_test.cpp | 35 +- src/test/app/LPTokenTransfer_test.cpp | 6 +- src/test/app/LedgerHistory_test.cpp | 6 +- src/test/app/LedgerMaster_test.cpp | 6 +- src/test/app/LedgerReplay_test.cpp | 64 +- src/test/app/LendingHelpers_test.cpp | 6 +- src/test/app/LoanBroker_test.cpp | 6 +- src/test/app/Loan_test.cpp | 20 +- src/test/app/MPToken_test.cpp | 6 +- src/test/app/Manifest_test.cpp | 10 +- src/test/app/MultiSign_test.cpp | 10 +- src/test/app/NFTokenBurn_test.cpp | 8 +- src/test/app/NFTokenDir_test.cpp | 8 +- src/test/app/NFToken_test.cpp | 16 +- src/test/app/NetworkID_test.cpp | 6 +- src/test/app/NetworkOPs_test.cpp | 6 +- src/test/app/OfferMPT_test.cpp | 117 +- src/test/app/Offer_test.cpp | 175 +- src/test/app/Oracle_test.cpp | 13 +- src/test/app/OversizeMeta_test.cpp | 6 +- src/test/app/PathMPT_test.cpp | 26 +- src/test/app/Path_test.cpp | 46 +- src/test/app/PayChan_test.cpp | 7 +- src/test/app/PayStrandMPT_test.cpp | 10 +- src/test/app/PayStrand_test.cpp | 6 +- src/test/app/PermissionedDEX_test.cpp | 6 +- src/test/app/PermissionedDomains_test.cpp | 6 +- src/test/app/PseudoTx_test.cpp | 20 +- src/test/app/RCLValidations_test.cpp | 6 +- src/test/app/ReducedOffer_test.cpp | 6 +- src/test/app/Regression_test.cpp | 6 +- src/test/app/SHAMapStore_test.cpp | 14 +- src/test/app/SetAuth_test.cpp | 6 +- src/test/app/TheoreticalQuality_test.cpp | 6 +- src/test/app/Ticket_test.cpp | 4 +- src/test/app/Transaction_ordering_test.cpp | 6 +- src/test/app/TrustSet_test.cpp | 7 +- src/test/app/TxQ_test.cpp | 7 +- src/test/app/ValidatorKeys_test.cpp | 6 +- src/test/app/ValidatorList_test.cpp | 22 +- src/test/app/ValidatorSite_test.cpp | 2 +- src/test/app/XChain_test.cpp | 331 +++- src/test/basics/Buffer_test.cpp | 10 +- src/test/basics/DetectCrash_test.cpp | 6 +- src/test/basics/Expected_test.cpp | 6 +- src/test/basics/IntrusiveShared_test.cpp | 22 +- src/test/basics/PerfLog_test.cpp | 4 +- src/test/basics/Units_test.cpp | 6 +- src/test/basics/base58_test.cpp | 17 +- src/test/basics/base_uint_test.cpp | 14 +- src/test/basics/hardened_hash_test.cpp | 8 +- src/test/basics/join_test.cpp | 6 +- src/test/beast/IPEndpointCommon.h | 6 +- src/test/beast/IPEndpoint_test.cpp | 6 +- .../beast/aged_associative_container_test.cpp | 102 +- .../beast/beast_CurrentThreadName_test.cpp | 6 +- src/test/beast/define_print.cpp | 6 +- src/test/conditions/PreimageSha256_test.cpp | 7 +- .../consensus/ByzantineFailureSim_test.cpp | 6 +- src/test/consensus/Consensus_test.cpp | 8 +- .../DistributedValidatorsSim_test.cpp | 10 +- src/test/consensus/LedgerTiming_test.cpp | 6 +- src/test/consensus/LedgerTrie_test.cpp | 6 +- src/test/consensus/NegativeUNL_test.cpp | 141 +- .../consensus/RCLCensorshipDetector_test.cpp | 6 +- src/test/consensus/ScaleFreeSim_test.cpp | 8 +- src/test/consensus/Validations_test.cpp | 8 +- src/test/core/ClosureCounter_test.cpp | 6 +- src/test/core/Config_test.cpp | 51 +- src/test/core/Coroutine_test.cpp | 6 +- src/test/core/JobQueue_test.cpp | 6 +- src/test/core/SociDB_test.cpp | 8 +- src/test/csf/BasicNetwork.h | 8 +- src/test/csf/BasicNetwork_test.cpp | 6 +- src/test/csf/CollectorRef.h | 46 +- src/test/csf/Digraph.h | 7 +- src/test/csf/Digraph_test.cpp | 6 +- src/test/csf/Histogram.h | 8 +- src/test/csf/Histogram_test.cpp | 6 +- src/test/csf/Peer.h | 27 +- src/test/csf/PeerGroup.h | 33 +- src/test/csf/Proposal.h | 8 +- src/test/csf/Scheduler.h | 8 +- src/test/csf/Scheduler_test.cpp | 6 +- src/test/csf/Sim.h | 8 +- src/test/csf/SimTime.h | 8 +- src/test/csf/TrustGraph.h | 8 +- src/test/csf/Tx.h | 11 +- src/test/csf/Validation.h | 10 +- src/test/csf/collectors.h | 15 +- src/test/csf/events.h | 8 +- src/test/csf/impl/Sim.cpp | 10 +- src/test/csf/impl/ledgers.cpp | 8 +- src/test/csf/ledgers.h | 12 +- src/test/csf/random.h | 10 +- src/test/csf/submitters.h | 10 +- src/test/csf/timers.h | 8 +- src/test/jtx/AMM.h | 14 +- src/test/jtx/AMMTest.h | 8 +- src/test/jtx/AbstractClient.h | 6 +- src/test/jtx/Account.h | 8 +- src/test/jtx/CaptureLogs.h | 6 +- src/test/jtx/CheckMessageLogs.h | 6 +- src/test/jtx/Env.h | 8 +- src/test/jtx/Env_ss.h | 8 +- src/test/jtx/Env_test.cpp | 14 +- src/test/jtx/JSONRPCClient.h | 6 +- src/test/jtx/JTx.h | 8 +- src/test/jtx/ManualTimeKeeper.h | 6 +- src/test/jtx/Oracle.h | 10 +- src/test/jtx/PathSet.h | 6 +- src/test/jtx/SignerUtils.h | 16 +- src/test/jtx/TestHelpers.h | 18 +- src/test/jtx/TrustedPublisherServer.h | 16 +- src/test/jtx/WSClient.h | 6 +- src/test/jtx/WSClient_test.cpp | 6 +- src/test/jtx/account_txn_id.h | 8 +- src/test/jtx/acctdelete.h | 9 +- src/test/jtx/amount.h | 29 +- src/test/jtx/attester.h | 7 +- src/test/jtx/balance.h | 20 +- src/test/jtx/basic_prop.h | 8 +- src/test/jtx/batch.h | 26 +- src/test/jtx/check.h | 13 +- src/test/jtx/credentials.h | 11 +- src/test/jtx/delegate.h | 13 +- src/test/jtx/delivermin.h | 12 +- src/test/jtx/deposit.h | 13 +- src/test/jtx/did.h | 13 +- src/test/jtx/directory.h | 8 +- src/test/jtx/domain.h | 8 +- src/test/jtx/envconfig.h | 6 +- src/test/jtx/escrow.h | 13 +- src/test/jtx/fee.h | 8 +- src/test/jtx/flags.h | 13 +- src/test/jtx/impl/AMM.cpp | 28 +- src/test/jtx/impl/AMMTest.cpp | 8 +- src/test/jtx/impl/Account.cpp | 8 +- src/test/jtx/impl/Env.cpp | 8 +- src/test/jtx/impl/JSONRPCClient.cpp | 6 +- src/test/jtx/impl/Oracle.cpp | 12 +- src/test/jtx/impl/TestHelpers.cpp | 30 +- src/test/jtx/impl/WSClient.cpp | 6 +- src/test/jtx/impl/account_txn_id.cpp | 8 +- src/test/jtx/impl/acctdelete.cpp | 8 +- src/test/jtx/impl/amount.cpp | 8 +- src/test/jtx/impl/attester.cpp | 8 +- src/test/jtx/impl/balance.cpp | 8 +- src/test/jtx/impl/batch.cpp | 12 +- src/test/jtx/impl/check.cpp | 12 +- src/test/jtx/impl/creds.cpp | 13 +- src/test/jtx/impl/delegate.cpp | 11 +- src/test/jtx/impl/delivermin.cpp | 8 +- src/test/jtx/impl/deposit.cpp | 12 +- src/test/jtx/impl/dids.cpp | 13 +- src/test/jtx/impl/directory.cpp | 8 +- src/test/jtx/impl/domain.cpp | 8 +- src/test/jtx/impl/envconfig.cpp | 6 +- src/test/jtx/impl/escrow.cpp | 13 +- src/test/jtx/impl/fee.cpp | 8 +- src/test/jtx/impl/flags.cpp | 8 +- src/test/jtx/impl/invoice_id.cpp | 8 +- src/test/jtx/impl/jtx_json.cpp | 8 +- src/test/jtx/impl/last_ledger_sequence.cpp | 8 +- src/test/jtx/impl/ledgerStateFixes.cpp | 12 +- src/test/jtx/impl/memo.cpp | 8 +- src/test/jtx/impl/mpt.cpp | 17 +- src/test/jtx/impl/multisign.cpp | 8 +- src/test/jtx/impl/offer.cpp | 8 +- src/test/jtx/impl/owners.cpp | 7 +- src/test/jtx/impl/paths.cpp | 8 +- src/test/jtx/impl/pay.cpp | 8 +- src/test/jtx/impl/permissioned_dex.cpp | 8 +- src/test/jtx/impl/permissioned_domains.cpp | 10 +- src/test/jtx/impl/quality2.cpp | 8 +- src/test/jtx/impl/rate.cpp | 8 +- src/test/jtx/impl/regkey.cpp | 8 +- src/test/jtx/impl/sendmax.cpp | 8 +- src/test/jtx/impl/seq.cpp | 8 +- src/test/jtx/impl/sig.cpp | 8 +- src/test/jtx/impl/tag.cpp | 8 +- src/test/jtx/impl/ticket.cpp | 12 +- src/test/jtx/impl/token.cpp | 10 +- src/test/jtx/impl/trust.cpp | 8 +- src/test/jtx/impl/txflags.cpp | 8 +- src/test/jtx/impl/utility.cpp | 8 +- src/test/jtx/impl/vault.cpp | 8 +- src/test/jtx/impl/xchain_bridge.cpp | 8 +- src/test/jtx/invoice_id.h | 8 +- src/test/jtx/jtx_json.h | 8 +- src/test/jtx/last_ledger_sequence.h | 8 +- src/test/jtx/ledgerStateFix.h | 13 +- src/test/jtx/memo.h | 20 +- src/test/jtx/mpt.h | 12 +- src/test/jtx/multisign.h | 8 +- src/test/jtx/noop.h | 8 +- src/test/jtx/offer.h | 8 +- src/test/jtx/owners.h | 12 +- src/test/jtx/paths.h | 10 +- src/test/jtx/pay.h | 8 +- src/test/jtx/permissioned_dex.h | 8 +- src/test/jtx/permissioned_domains.h | 10 +- src/test/jtx/prop.h | 8 +- src/test/jtx/quality.h | 8 +- src/test/jtx/rate.h | 8 +- src/test/jtx/regkey.h | 8 +- src/test/jtx/require.h | 7 +- src/test/jtx/requires.h | 8 +- src/test/jtx/rpc.h | 13 +- src/test/jtx/sendmax.h | 12 +- src/test/jtx/seq.h | 8 +- src/test/jtx/sig.h | 8 +- src/test/jtx/tag.h | 10 +- src/test/jtx/tags.h | 26 +- src/test/jtx/ter.h | 8 +- src/test/jtx/ticket.h | 9 +- src/test/jtx/token.h | 13 +- src/test/jtx/trust.h | 8 +- src/test/jtx/txflags.h | 8 +- src/test/jtx/utility.h | 8 +- src/test/jtx/vault.h | 8 +- src/test/jtx/xchain_bridge.h | 8 +- src/test/ledger/BookDirs_test.cpp | 6 +- src/test/ledger/Directory_test.cpp | 8 +- src/test/ledger/PaymentSandbox_test.cpp | 6 +- src/test/ledger/PendingSaves_test.cpp | 6 +- src/test/ledger/SkipList_test.cpp | 6 +- src/test/ledger/View_test.cpp | 6 +- src/test/nodestore/Backend_test.cpp | 11 +- src/test/nodestore/Basics_test.cpp | 6 +- src/test/nodestore/Database_test.cpp | 15 +- src/test/nodestore/NuDBFactory_test.cpp | 6 +- src/test/nodestore/TestBase.h | 6 +- src/test/nodestore/Timing_test.cpp | 6 +- src/test/nodestore/varint_test.cpp | 8 +- src/test/overlay/TMGetObjectByHash_test.cpp | 8 +- src/test/overlay/cluster_test.cpp | 10 +- src/test/overlay/compression_test.cpp | 11 +- src/test/overlay/handshake_test.cpp | 7 +- src/test/overlay/reduce_relay_test.cpp | 46 +- src/test/overlay/short_read_test.cpp | 2 +- src/test/overlay/traffic_count_test.cpp | 11 +- src/test/overlay/tx_reduce_relay_test.cpp | 9 +- src/test/peerfinder/Livecache_test.cpp | 6 +- src/test/peerfinder/PeerFinder_test.cpp | 6 +- src/test/protocol/ApiVersion_test.cpp | 6 +- src/test/protocol/InnerObjectFormats_test.cpp | 20 +- src/test/protocol/MultiApiJson_test.cpp | 6 +- src/test/protocol/Quality_test.cpp | 8 +- src/test/protocol/STIssue_test.cpp | 6 +- src/test/protocol/STObject_test.cpp | 4 +- src/test/protocol/STParsedJSON_test.cpp | 14 +- src/test/protocol/SecretKey_test.cpp | 1523 ++++++++--------- src/test/protocol/SeqProxy_test.cpp | 2 +- src/test/protocol/TER_test.cpp | 44 +- src/test/resource/Logic_test.cpp | 6 +- src/test/rpc/AMMInfo_test.cpp | 6 +- src/test/rpc/AccountCurrencies_test.cpp | 2 +- src/test/rpc/AccountInfo_test.cpp | 6 +- src/test/rpc/AccountLines_test.cpp | 6 +- src/test/rpc/AccountObjects_test.cpp | 12 +- src/test/rpc/AccountOffers_test.cpp | 6 +- src/test/rpc/AccountTx_test.cpp | 7 +- src/test/rpc/BookChanges_test.cpp | 6 +- src/test/rpc/Book_test.cpp | 6 +- src/test/rpc/DeliveredAmount_test.cpp | 6 +- src/test/rpc/DepositAuthorized_test.cpp | 6 +- src/test/rpc/Feature_test.cpp | 7 +- src/test/rpc/GatewayBalances_test.cpp | 6 +- src/test/rpc/GetAggregatePrice_test.cpp | 10 +- src/test/rpc/Handler_test.cpp | 2 +- src/test/rpc/JSONRPC_test.cpp | 7 +- src/test/rpc/KeyGeneration_test.cpp | 76 +- src/test/rpc/LedgerEntry_test.cpp | 11 +- src/test/rpc/LedgerRPC_test.cpp | 7 +- src/test/rpc/LedgerRequest_test.cpp | 7 +- src/test/rpc/ManifestRPC_test.cpp | 6 +- src/test/rpc/NoRipple_test.cpp | 7 +- src/test/rpc/RPCCall_test.cpp | 6 +- src/test/rpc/RPCHelpers_test.cpp | 6 +- src/test/rpc/RPCOverload_test.cpp | 6 +- src/test/rpc/RobustTransaction_test.cpp | 6 +- src/test/rpc/Roles_test.cpp | 8 +- src/test/rpc/ServerDefinitions_test.cpp | 7 +- src/test/rpc/ServerInfo_test.cpp | 7 +- src/test/rpc/Simulate_test.cpp | 8 +- src/test/rpc/Status_test.cpp | 6 +- src/test/rpc/Subscribe_test.cpp | 10 +- src/test/rpc/Transaction_test.cpp | 2 +- src/test/rpc/ValidatorInfo_test.cpp | 6 +- src/test/rpc/ValidatorRPC_test.cpp | 7 +- src/test/rpc/Version_test.cpp | 3 +- src/test/server/ServerStatus_test.cpp | 9 +- src/test/server/Server_test.cpp | 6 +- src/test/shamap/FetchPack_test.cpp | 6 +- src/test/shamap/SHAMapSync_test.cpp | 6 +- src/test/shamap/SHAMap_test.cpp | 6 +- src/test/shamap/common.h | 6 +- src/test/unit_test/FileDirGuard.h | 6 +- src/test/unit_test/SuiteJournal.h | 6 +- src/test/unit_test/multi_runner.cpp | 11 +- src/test/unit_test/multi_runner.h | 16 +- src/test/unit_test/utils.h | 6 +- src/tests/libxrpl/basics/tagged_integer.cpp | 40 +- src/tests/libxrpl/json/Value.cpp | 3 +- src/xrpld/app/ledger/AcceptedLedger.cpp | 2 +- src/xrpld/app/ledger/InboundLedger.h | 2 +- src/xrpld/app/ledger/LedgerCleaner.h | 2 +- src/xrpld/app/ledger/LedgerHistory.cpp | 5 +- src/xrpld/app/ledger/LedgerMaster.h | 2 +- src/xrpld/app/ledger/LedgerReplayTask.h | 2 +- src/xrpld/app/ledger/detail/InboundLedger.cpp | 19 +- .../app/ledger/detail/InboundLedgers.cpp | 2 +- .../app/ledger/detail/InboundTransactions.cpp | 2 +- .../app/ledger/detail/LedgerDeltaAcquire.cpp | 4 +- src/xrpld/app/ledger/detail/LedgerMaster.cpp | 6 +- .../app/ledger/detail/LedgerReplayTask.cpp | 6 +- .../app/ledger/detail/LedgerReplayer.cpp | 18 +- .../app/ledger/detail/SkipListAcquire.cpp | 4 +- .../app/ledger/detail/TransactionAcquire.cpp | 2 +- .../app/ledger/detail/TransactionAcquire.h | 2 +- src/xrpld/app/main/Application.cpp | 30 +- src/xrpld/app/main/CollectorManager.cpp | 2 +- src/xrpld/app/main/GRPCServer.cpp | 6 +- src/xrpld/app/main/GRPCServer.h | 6 +- src/xrpld/app/main/Main.cpp | 2 +- src/xrpld/app/misc/DeliverMax.h | 7 +- src/xrpld/app/misc/NetworkOPs.cpp | 31 +- src/xrpld/app/misc/TxQ.h | 2 +- src/xrpld/app/misc/detail/AmendmentTable.cpp | 9 +- src/xrpld/app/misc/detail/DeliverMax.cpp | 6 +- src/xrpld/app/misc/detail/TxQ.cpp | 12 +- src/xrpld/app/misc/detail/ValidatorList.cpp | 20 +- src/xrpld/app/misc/detail/ValidatorSite.cpp | 20 +- src/xrpld/app/misc/detail/Work.h | 8 +- src/xrpld/app/misc/detail/WorkBase.h | 34 +- src/xrpld/app/misc/detail/WorkFile.h | 16 +- src/xrpld/app/misc/detail/WorkPlain.h | 10 +- src/xrpld/app/misc/detail/WorkSSL.cpp | 7 +- src/xrpld/app/misc/detail/WorkSSL.h | 10 +- src/xrpld/app/rdb/backend/detail/Node.cpp | 16 +- src/xrpld/app/rdb/backend/detail/Node.h | 6 +- .../app/rdb/backend/detail/SQLiteDatabase.cpp | 7 +- src/xrpld/consensus/ConsensusParms.h | 8 +- src/xrpld/consensus/DisputedTx.h | 6 +- src/xrpld/consensus/LedgerTrie.h | 3 +- src/xrpld/core/TimeKeeper.h | 2 +- src/xrpld/core/detail/Config.cpp | 27 +- src/xrpld/overlay/ClusterNode.h | 5 +- src/xrpld/overlay/Compression.h | 8 +- src/xrpld/overlay/Overlay.h | 10 +- src/xrpld/overlay/ReduceRelayCommon.h | 8 +- src/xrpld/overlay/Slot.h | 12 +- src/xrpld/overlay/Squelch.h | 8 +- src/xrpld/overlay/detail/ConnectAttempt.cpp | 4 +- src/xrpld/overlay/detail/ConnectAttempt.h | 4 +- src/xrpld/overlay/detail/OverlayImpl.cpp | 14 +- src/xrpld/overlay/detail/OverlayImpl.h | 2 +- src/xrpld/overlay/detail/PeerImp.cpp | 19 +- src/xrpld/overlay/detail/PeerImp.h | 12 +- .../overlay/detail/PeerReservationTable.cpp | 4 +- src/xrpld/overlay/detail/PeerSet.cpp | 7 +- src/xrpld/overlay/detail/ProtocolMessage.h | 4 +- src/xrpld/overlay/detail/ProtocolVersion.cpp | 16 +- src/xrpld/overlay/detail/Tuning.h | 8 +- src/xrpld/overlay/detail/TxMetrics.cpp | 8 +- src/xrpld/overlay/detail/TxMetrics.h | 8 +- src/xrpld/overlay/detail/ZeroCopyStream.h | 2 +- src/xrpld/peerfinder/PeerfinderManager.h | 10 +- src/xrpld/peerfinder/Slot.h | 6 +- src/xrpld/peerfinder/detail/Bootcache.cpp | 6 +- src/xrpld/peerfinder/detail/Bootcache.h | 6 +- src/xrpld/peerfinder/detail/Checker.h | 18 +- src/xrpld/peerfinder/detail/Counts.h | 6 +- src/xrpld/peerfinder/detail/Endpoint.cpp | 11 +- src/xrpld/peerfinder/detail/Fixed.h | 6 +- src/xrpld/peerfinder/detail/Handouts.h | 16 +- src/xrpld/peerfinder/detail/Livecache.h | 13 +- src/xrpld/peerfinder/detail/Logic.h | 8 +- .../peerfinder/detail/PeerfinderConfig.cpp | 6 +- .../peerfinder/detail/PeerfinderManager.cpp | 6 +- src/xrpld/peerfinder/detail/SlotImp.cpp | 15 +- src/xrpld/peerfinder/detail/SlotImp.h | 10 +- src/xrpld/peerfinder/detail/Source.h | 10 +- src/xrpld/peerfinder/detail/SourceStrings.cpp | 13 +- src/xrpld/peerfinder/detail/SourceStrings.h | 6 +- src/xrpld/peerfinder/detail/Store.h | 10 +- src/xrpld/peerfinder/detail/StoreSqdb.h | 10 +- src/xrpld/peerfinder/detail/Tuning.h | 10 +- src/xrpld/peerfinder/make_Manager.h | 6 +- src/xrpld/perflog/detail/PerfLogImp.cpp | 10 +- src/xrpld/perflog/detail/PerfLogImp.h | 8 +- src/xrpld/rpc/CTID.h | 7 +- src/xrpld/rpc/MPTokenIssuanceID.h | 7 +- src/xrpld/rpc/RPCHandler.h | 6 +- src/xrpld/rpc/Status.h | 8 +- src/xrpld/rpc/detail/DeliveredAmount.cpp | 6 +- src/xrpld/rpc/detail/Handler.cpp | 360 +++- src/xrpld/rpc/detail/Handler.h | 6 +- src/xrpld/rpc/detail/LegacyPathFind.cpp | 6 +- src/xrpld/rpc/detail/MPTokenIssuanceID.cpp | 7 +- src/xrpld/rpc/detail/PathRequest.h | 2 +- src/xrpld/rpc/detail/PathRequestManager.cpp | 19 +- src/xrpld/rpc/detail/Pathfinder.cpp | 12 +- src/xrpld/rpc/detail/RPCCall.cpp | 271 ++- src/xrpld/rpc/detail/RPCHandler.cpp | 6 +- src/xrpld/rpc/detail/RPCHelpers.cpp | 6 +- src/xrpld/rpc/detail/RPCLedgerHelpers.cpp | 6 +- src/xrpld/rpc/detail/RPCSub.cpp | 12 +- src/xrpld/rpc/detail/Role.cpp | 6 +- src/xrpld/rpc/detail/ServerHandler.cpp | 56 +- src/xrpld/rpc/detail/Status.cpp | 6 +- src/xrpld/rpc/detail/TransactionSign.cpp | 20 +- src/xrpld/rpc/detail/TrustLine.h | 6 +- src/xrpld/rpc/detail/Tuning.h | 28 +- .../rpc/handlers/account/AccountChannels.cpp | 2 +- .../rpc/handlers/account/AccountLines.cpp | 7 +- .../rpc/handlers/account/AccountObjects.cpp | 27 +- src/xrpld/rpc/handlers/account/AccountTx.cpp | 13 +- .../admin/peer/PeerReservationsAdd.cpp | 4 +- src/xrpld/rpc/handlers/ledger/Ledger.h | 6 +- src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp | 10 +- .../rpc/handlers/ledger/LedgerEntryHelpers.h | 8 +- src/xrpld/rpc/handlers/orderbook/AMMInfo.cpp | 3 +- .../handlers/orderbook/GetAggregatePrice.cpp | 5 +- src/xrpld/rpc/handlers/server_info/Version.h | 6 +- 699 files changed, 4626 insertions(+), 5292 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 10aa8c625f..3a21eba6c0 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -97,9 +97,21 @@ Checks: "-*, misc-throw-by-value-catch-by-reference, misc-unused-alias-decls, misc-unused-using-decls, - modernize-deprecated-headers, + modernize-concat-nested-namespaces, modernize-make-shared, modernize-make-unique, + modernize-pass-by-value, + modernize-type-traits, + modernize-use-designated-initializers, + modernize-use-emplace, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-override, + modernize-use-ranges, + modernize-use-starts-ends-with, + modernize-use-std-numbers, + modernize-use-using, + modernize-deprecated-headers, llvm-namespace-comment, performance-faster-string-find, performance-for-range-copy, @@ -141,19 +153,6 @@ Checks: "-*, # readability-inconsistent-declaration-parameter-name, # in this codebase this check will break a lot of arg names # readability-static-accessed-through-instance, # this check is probably unnecessary. it makes the code less readable # readability-identifier-naming, # https://github.com/XRPLF/rippled/pull/6571 -# -# modernize-concat-nested-namespaces, -# modernize-pass-by-value, -# modernize-type-traits, -# modernize-use-designated-initializers, -# modernize-use-emplace, -# modernize-use-equals-default, -# modernize-use-equals-delete, -# modernize-use-override, -# modernize-use-ranges, -# modernize-use-starts-ends-with, -# modernize-use-std-numbers, -# modernize-use-using, # --- # CheckOptions: diff --git a/include/xrpl/basics/BasicConfig.h b/include/xrpl/basics/BasicConfig.h index 84fb5335cd..e1b0af516f 100644 --- a/include/xrpl/basics/BasicConfig.h +++ b/include/xrpl/basics/BasicConfig.h @@ -33,7 +33,7 @@ private: public: /** Create an empty section. */ - explicit Section(std::string const& name = ""); + explicit Section(std::string name = ""); /** Returns the name of this section. */ std::string const& @@ -275,8 +275,7 @@ public: bool had_trailing_comments() const { - return std::any_of( - map_.cbegin(), map_.cend(), [](auto s) { return s.second.had_trailing_comments(); }); + return std::ranges::any_of(map_, [](auto s) { return s.second.had_trailing_comments(); }); } protected: diff --git a/include/xrpl/basics/CompressionAlgorithms.h b/include/xrpl/basics/CompressionAlgorithms.h index 31525fa915..e24c490337 100644 --- a/include/xrpl/basics/CompressionAlgorithms.h +++ b/include/xrpl/basics/CompressionAlgorithms.h @@ -9,9 +9,7 @@ #include #include -namespace xrpl { - -namespace compression_algorithms { +namespace xrpl::compression_algorithms { /** LZ4 block compression. * @tparam BufferFactory Callable object or lambda. @@ -141,6 +139,4 @@ lz4Decompress( return lz4Decompress(chunk, inSize, decompressed, decompressedSize); } -} // namespace compression_algorithms - -} // namespace xrpl +} // namespace xrpl::compression_algorithms diff --git a/include/xrpl/basics/Expected.h b/include/xrpl/basics/Expected.h index 083a9233cf..6cba7106fb 100644 --- a/include/xrpl/basics/Expected.h +++ b/include/xrpl/basics/Expected.h @@ -61,7 +61,7 @@ template class Unexpected { public: - static_assert(!std::is_same::value, "E must not be void"); + static_assert(!std::is_same_v, "E must not be void"); Unexpected() = delete; diff --git a/include/xrpl/basics/LocalValue.h b/include/xrpl/basics/LocalValue.h index 2e7bb73f6c..421ea7af23 100644 --- a/include/xrpl/basics/LocalValue.h +++ b/include/xrpl/basics/LocalValue.h @@ -4,6 +4,7 @@ #include #include +#include namespace xrpl { @@ -28,7 +29,7 @@ struct LocalValues T t_; Value() = default; - explicit Value(T const& t) : t_(t) + explicit Value(T t) : t_(std::move(t)) { } diff --git a/include/xrpl/basics/Log.h b/include/xrpl/basics/Log.h index 500a1f37c1..4efbec5199 100644 --- a/include/xrpl/basics/Log.h +++ b/include/xrpl/basics/Log.h @@ -38,7 +38,7 @@ private: std::string partition_; public: - Sink(std::string const& partition, beast::severities::Severity thresh, Logs& logs); + Sink(std::string partition, beast::severities::Severity thresh, Logs& logs); Sink(Sink const&) = delete; Sink& diff --git a/include/xrpl/basics/SlabAllocator.h b/include/xrpl/basics/SlabAllocator.h index e3fefa3dfb..094f7a0f34 100644 --- a/include/xrpl/basics/SlabAllocator.h +++ b/include/xrpl/basics/SlabAllocator.h @@ -66,12 +66,10 @@ class SlabAllocator } } - ~SlabBlock() - { - // Calling this destructor will release the allocated memory but - // will not properly destroy any objects that are constructed in - // the block itself. - } + // Calling this destructor will release the allocated memory but + // will not properly destroy any objects that are constructed in + // the block itself. + ~SlabBlock() = default; SlabBlock(SlabBlock const& other) = delete; SlabBlock& @@ -176,12 +174,10 @@ public: SlabAllocator& operator=(SlabAllocator&& other) = delete; - ~SlabAllocator() - { - // FIXME: We can't destroy the memory blocks we've allocated, because - // we can't be sure that they are not being used. Cleaning the - // shutdown process up could make this possible. - } + // FIXME: We can't destroy the memory blocks we've allocated, because + // we can't be sure that they are not being used. Cleaning the + // shutdown process up could make this possible. + ~SlabAllocator() = default; /** Returns the size of the memory block this allocator returns. */ constexpr std::size_t @@ -347,9 +343,7 @@ public: SlabAllocatorSet& operator=(SlabAllocatorSet&& other) = delete; - ~SlabAllocatorSet() - { - } + ~SlabAllocatorSet() = default; /** Returns a suitably aligned pointer, if one is available. diff --git a/include/xrpl/basics/Slice.h b/include/xrpl/basics/Slice.h index bfcbb460f4..08ee9464ef 100644 --- a/include/xrpl/basics/Slice.h +++ b/include/xrpl/basics/Slice.h @@ -211,14 +211,14 @@ operator<<(Stream& s, Slice const& v) } template -std::enable_if_t::value || std::is_same::value, Slice> +std::enable_if_t || std::is_same_v, Slice> makeSlice(std::array const& a) { return Slice(a.data(), a.size()); } template -std::enable_if_t::value || std::is_same::value, Slice> +std::enable_if_t || std::is_same_v, Slice> makeSlice(std::vector const& v) { return Slice(v.data(), v.size()); diff --git a/include/xrpl/basics/TaggedCache.h b/include/xrpl/basics/TaggedCache.h index 1a19c653bc..d20c850bad 100644 --- a/include/xrpl/basics/TaggedCache.h +++ b/include/xrpl/basics/TaggedCache.h @@ -251,7 +251,7 @@ private: } }; - typedef typename std::conditional::type Entry; + using Entry = std::conditional_t; using KeyOnlyCacheType = hardened_partitioned_hash_map; diff --git a/include/xrpl/basics/ToString.h b/include/xrpl/basics/ToString.h index a6254a1880..28f0245404 100644 --- a/include/xrpl/basics/ToString.h +++ b/include/xrpl/basics/ToString.h @@ -12,7 +12,7 @@ namespace xrpl { */ template -typename std::enable_if::value, std::string>::type +std::enable_if_t, std::string> to_string(T t) { return std::to_string(t); diff --git a/include/xrpl/basics/base_uint.h b/include/xrpl/basics/base_uint.h index 6fe6bacf89..55b73bfb9b 100644 --- a/include/xrpl/basics/base_uint.h +++ b/include/xrpl/basics/base_uint.h @@ -269,7 +269,7 @@ public: class Container, class = std::enable_if_t< detail::is_contiguous_container::value && - std::is_trivially_copyable::value>> + std::is_trivially_copyable_v>> explicit base_uint(Container const& c) { XRPL_ASSERT( @@ -281,7 +281,7 @@ public: template std::enable_if_t< detail::is_contiguous_container::value && - std::is_trivially_copyable::value, + std::is_trivially_copyable_v, base_uint&> operator=(Container const& c) { diff --git a/include/xrpl/basics/contract.h b/include/xrpl/basics/contract.h index e2d6dafe55..0d9f567416 100644 --- a/include/xrpl/basics/contract.h +++ b/include/xrpl/basics/contract.h @@ -49,8 +49,7 @@ template Throw(Args&&... args) { static_assert( - std::is_convertible::value, - "Exception must derive from std::exception."); + std::is_convertible_v, "Exception must derive from std::exception."); E e(std::forward(args)...); LogThrow(std::string("Throwing exception of type " + beast::type_name() + ": ") + e.what()); diff --git a/include/xrpl/basics/random.h b/include/xrpl/basics/random.h index 6a09d8161b..adf579442e 100644 --- a/include/xrpl/basics/random.h +++ b/include/xrpl/basics/random.h @@ -15,8 +15,8 @@ namespace xrpl { #ifndef __INTELLISENSE__ static_assert( // NOLINTNEXTLINE(misc-redundant-expression) - std::is_integral::value && - std::is_unsigned::value, + std::is_integral_v && + std::is_unsigned_v, "The XRPL default PRNG engine must return an unsigned integral type."); static_assert( @@ -91,7 +91,7 @@ default_prng() */ /** @{ */ template -std::enable_if_t::value && detail::is_engine::value, Integral> +std::enable_if_t && detail::is_engine::value, Integral> rand_int(Engine& engine, Integral min, Integral max) { XRPL_ASSERT(max > min, "xrpl::rand_int : max over min inputs"); @@ -103,35 +103,35 @@ rand_int(Engine& engine, Integral min, Integral max) } template -std::enable_if_t::value, Integral> +std::enable_if_t, Integral> rand_int(Integral min, Integral max) { return rand_int(default_prng(), min, max); } template -std::enable_if_t::value && detail::is_engine::value, Integral> +std::enable_if_t && detail::is_engine::value, Integral> rand_int(Engine& engine, Integral max) { return rand_int(engine, Integral(0), max); } template -std::enable_if_t::value, Integral> +std::enable_if_t, Integral> rand_int(Integral max) { return rand_int(default_prng(), max); } template -std::enable_if_t::value && detail::is_engine::value, Integral> +std::enable_if_t && detail::is_engine::value, Integral> rand_int(Engine& engine) { return rand_int(engine, std::numeric_limits::max()); } template -std::enable_if_t::value, Integral> +std::enable_if_t, Integral> rand_int() { return rand_int(default_prng(), std::numeric_limits::max()); @@ -142,7 +142,7 @@ rand_int() /** @{ */ template std::enable_if_t< - (std::is_same::value || std::is_same::value) && + (std::is_same_v || std::is_same_v) && detail::is_engine::value, Byte> rand_byte(Engine& engine) @@ -152,9 +152,7 @@ rand_byte(Engine& engine) } template -std::enable_if_t< - (std::is_same::value || std::is_same::value), - Byte> +std::enable_if_t<(std::is_same_v || std::is_same_v), Byte> rand_byte() { return rand_byte(default_prng()); diff --git a/include/xrpl/basics/safe_cast.h b/include/xrpl/basics/safe_cast.h index d85278b263..c167e660ce 100644 --- a/include/xrpl/basics/safe_cast.h +++ b/include/xrpl/basics/safe_cast.h @@ -12,9 +12,9 @@ namespace xrpl { template concept SafeToCast = (std::is_integral_v && std::is_integral_v) && - (std::is_signed::value || std::is_unsigned::value) && - (std::is_signed::value != std::is_signed::value ? sizeof(Dest) > sizeof(Src) - : sizeof(Dest) >= sizeof(Src)); + (std::is_signed_v || std::is_unsigned_v) && + (std::is_signed_v != std::is_signed_v ? sizeof(Dest) > sizeof(Src) + : sizeof(Dest) >= sizeof(Src)); template constexpr std::enable_if_t && std::is_integral_v, Dest> diff --git a/include/xrpl/basics/strHex.h b/include/xrpl/basics/strHex.h index cc07bf5b9d..9cae234f06 100644 --- a/include/xrpl/basics/strHex.h +++ b/include/xrpl/basics/strHex.h @@ -10,9 +10,9 @@ std::string strHex(FwdIt begin, FwdIt end) { static_assert( - std::is_convertible< + std::is_convertible_v< typename std::iterator_traits::iterator_category, - std::forward_iterator_tag>::value, + std::forward_iterator_tag>, "FwdIt must be a forward iterator"); std::string result; result.reserve(2 * std::distance(begin, end)); diff --git a/include/xrpl/basics/tagged_integer.h b/include/xrpl/basics/tagged_integer.h index 18d6a707a0..129c586126 100644 --- a/include/xrpl/basics/tagged_integer.h +++ b/include/xrpl/basics/tagged_integer.h @@ -44,8 +44,7 @@ public: template < class OtherInt, - class = typename std::enable_if< - std::is_integral::value && sizeof(OtherInt) <= sizeof(Int)>::type> + class = std::enable_if_t && sizeof(OtherInt) <= sizeof(Int)>> explicit constexpr tagged_integer(OtherInt value) noexcept : m_value(value) { static_assert(sizeof(tagged_integer) == sizeof(Int), "tagged_integer is adding padding"); diff --git a/include/xrpl/beast/container/aged_container_utility.h b/include/xrpl/beast/container/aged_container_utility.h index cf6bae9990..47aa8a5e66 100644 --- a/include/xrpl/beast/container/aged_container_utility.h +++ b/include/xrpl/beast/container/aged_container_utility.h @@ -9,7 +9,7 @@ namespace beast { /** Expire aged container items past the specified age. */ template -typename std::enable_if::value, std::size_t>::type +std::enable_if_t::value, std::size_t> expire(AgedContainer& c, std::chrono::duration const& age) { std::size_t n(0); diff --git a/include/xrpl/beast/container/detail/aged_associative_container.h b/include/xrpl/beast/container/detail/aged_associative_container.h index af6774eb9e..5d3534004c 100644 --- a/include/xrpl/beast/container/detail/aged_associative_container.h +++ b/include/xrpl/beast/container/detail/aged_associative_container.h @@ -1,7 +1,6 @@ #pragma once -namespace beast { -namespace detail { +namespace beast::detail { // Extracts the key portion of value template @@ -30,5 +29,4 @@ struct aged_associative_container_extract_t } }; -} // namespace detail -} // namespace beast +} // namespace beast::detail diff --git a/include/xrpl/beast/container/detail/aged_container_iterator.h b/include/xrpl/beast/container/detail/aged_container_iterator.h index 7a0e60bca8..3f12a5610a 100644 --- a/include/xrpl/beast/container/detail/aged_container_iterator.h +++ b/include/xrpl/beast/container/detail/aged_container_iterator.h @@ -2,6 +2,7 @@ #include #include +#include namespace beast { @@ -131,7 +132,7 @@ private: friend class aged_container_iterator; template - aged_container_iterator(OtherIterator const& iter) : m_iter(iter) + aged_container_iterator(OtherIterator iter) : m_iter(std::move(iter)) { } diff --git a/include/xrpl/beast/container/detail/aged_ordered_container.h b/include/xrpl/beast/container/detail/aged_ordered_container.h index 554fed2d58..b20639aec4 100644 --- a/include/xrpl/beast/container/detail/aged_ordered_container.h +++ b/include/xrpl/beast/container/detail/aged_ordered_container.h @@ -57,8 +57,7 @@ template < class T, class Clock = std::chrono::steady_clock, class Compare = std::less, - class Allocator = - std::allocator, Key>::type>> + class Allocator = std::allocator, Key>>> class aged_ordered_container { public: @@ -67,7 +66,7 @@ public: using duration = typename clock_type::duration; using key_type = Key; using mapped_type = T; - using value_type = typename std::conditional, Key>::type; + using value_type = std::conditional_t, Key>; using size_type = std::size_t; using difference_type = std::ptrdiff_t; @@ -110,8 +109,7 @@ private: template < class... Args, - class = - typename std::enable_if::value>::type> + class = std::enable_if_t>> element(time_point const& when_, Args&&... args) : value(std::forward(args)...), when(when_) { @@ -135,9 +133,7 @@ private: return Compare::operator()(lhs.first, rhs.first); } - pair_value_compare() - { - } + pair_value_compare() = default; pair_value_compare(pair_value_compare const& other) : Compare(other) { @@ -200,7 +196,7 @@ private: using list_type = typename boost::intrusive:: make_list>::type; - using cont_type = typename std::conditional< + using cont_type = std::conditional_t< IsMulti, typename boost::intrusive::make_multiset< element, @@ -209,7 +205,7 @@ private: typename boost::intrusive::make_set< element, boost::intrusive::constant_time_size, - boost::intrusive::compare>::type>::type; + boost::intrusive::compare>::type>; using ElementAllocator = typename std::allocator_traits::template rebind_alloc; @@ -374,7 +370,7 @@ private: public: using key_compare = Compare; - using value_compare = typename std::conditional::type; + using value_compare = std::conditional_t; using allocator_type = Allocator; using reference = value_type&; using const_reference = value_type const&; @@ -402,6 +398,8 @@ public: class chronological_t { + chronological_t() = default; + public: // A set iterator (IsMap==false) is always const // because the elements of a set are immutable. @@ -489,7 +487,7 @@ public: iterator iterator_to(value_type& value) { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return list.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -498,20 +496,16 @@ public: const_iterator iterator_to(value_type const& value) const { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return list.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); } - private: - chronological_t() - { - } - chronological_t(chronological_t const&) = delete; chronological_t(chronological_t&&) = delete; + private: friend class aged_ordered_container; list_type mutable list; } chronological; @@ -617,30 +611,30 @@ public: class K, bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& at(K const& k); template < class K, bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> + class = std::enable_if_t> typename std::conditional::type const& at(K const& k) const; template < bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& operator[](Key const& key); template < bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& operator[](Key&& key); //-------------------------------------------------------------------------- @@ -724,7 +718,7 @@ public: iterator iterator_to(value_type& value) { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return m_cont.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -733,7 +727,7 @@ public: const_iterator iterator_to(value_type const& value) const { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return m_cont.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -775,37 +769,35 @@ public: // map, set template auto - insert(value_type const& value) -> - typename std::enable_if>::type; + insert(value_type const& value) -> std::enable_if_t>; // multimap, multiset template auto - insert(value_type const& value) -> typename std::enable_if::type; + insert(value_type const& value) -> std::enable_if_t; // set template auto - insert(value_type&& value) -> - typename std::enable_if>::type; + insert(value_type&& value) + -> std::enable_if_t>; // multiset template auto - insert(value_type&& value) -> - typename std::enable_if::type; + insert(value_type&& value) -> std::enable_if_t; //--- // map, set template auto - insert(const_iterator hint, value_type const& value) -> - typename std::enable_if::type; + insert(const_iterator hint, value_type const& value) + -> std::enable_if_t; // multimap, multiset template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type const& value) { // VFALCO TODO Figure out how to utilize 'hint' @@ -815,12 +807,11 @@ public: // map, set template auto - insert(const_iterator hint, value_type&& value) -> - typename std::enable_if::type; + insert(const_iterator hint, value_type&& value) -> std::enable_if_t; // multimap, multiset template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type&& value) { // VFALCO TODO Figure out how to utilize 'hint' @@ -829,9 +820,9 @@ public: // map, multimap template - typename std::enable_if< - maybe_map && std::is_constructible::value, - typename std::conditional>::type>::type + std::enable_if_t< + maybe_map && std::is_constructible_v, + std::conditional_t>> insert(P&& value) { return emplace(std::forward

(value)); @@ -839,9 +830,9 @@ public: // map, multimap template - typename std::enable_if< - maybe_map && std::is_constructible::value, - typename std::conditional>::type>::type + std::enable_if_t< + maybe_map && std::is_constructible_v, + std::conditional_t>> insert(const_iterator hint, P&& value) { return emplace_hint(hint, std::forward

(value)); @@ -864,23 +855,22 @@ public: // map, set template auto - emplace(Args&&... args) -> - typename std::enable_if>::type; + emplace(Args&&... args) -> std::enable_if_t>; // multiset, multimap template auto - emplace(Args&&... args) -> typename std::enable_if::type; + emplace(Args&&... args) -> std::enable_if_t; // map, set template auto - emplace_hint(const_iterator hint, Args&&... args) -> - typename std::enable_if>::type; + emplace_hint(const_iterator hint, Args&&... args) + -> std::enable_if_t>; // multiset, multimap template - typename std::enable_if::type + std::enable_if_t emplace_hint(const_iterator /*hint*/, Args&&... args) { // VFALCO TODO Figure out how to utilize 'hint' @@ -1164,12 +1154,12 @@ private: template < bool maybe_propagate = std::allocator_traits::propagate_on_container_swap::value> - typename std::enable_if::type + std::enable_if_t swap_data(aged_ordered_container& other) noexcept; template < bool maybe_propagate = std::allocator_traits::propagate_on_container_swap::value> - typename std::enable_if::type + std::enable_if_t swap_data(aged_ordered_container& other) noexcept; private: @@ -1396,7 +1386,7 @@ aged_ordered_container::opera template template -typename std::conditional::type& +std::conditional_t& aged_ordered_container::at(K const& k) { auto const iter(m_cont.find(k, std::cref(m_config.key_compare()))); @@ -1418,7 +1408,7 @@ aged_ordered_container::at(K template template -typename std::conditional::type& +std::conditional_t& aged_ordered_container::operator[]( Key const& key) { @@ -1437,7 +1427,7 @@ aged_ordered_container::opera template template -typename std::conditional::type& +std::conditional_t& aged_ordered_container::operator[](Key&& key) { typename cont_type::insert_commit_data d; @@ -1472,8 +1462,7 @@ template auto aged_ordered_container::insert( - value_type const& value) -> - typename std::enable_if>::type + value_type const& value) -> std::enable_if_t> { typename cont_type::insert_commit_data d; auto const result(m_cont.insert_check(extract(value), std::cref(m_config.key_compare()), d)); @@ -1492,7 +1481,7 @@ template auto aged_ordered_container::insert( - value_type const& value) -> typename std::enable_if::type + value_type const& value) -> std::enable_if_t { auto const before(m_cont.upper_bound(extract(value), std::cref(m_config.key_compare()))); element* const p(new_element(value)); @@ -1506,8 +1495,7 @@ template auto aged_ordered_container::insert( - value_type&& value) -> - typename std::enable_if>::type + value_type&& value) -> std::enable_if_t> { typename cont_type::insert_commit_data d; auto const result(m_cont.insert_check(extract(value), std::cref(m_config.key_compare()), d)); @@ -1526,7 +1514,7 @@ template auto aged_ordered_container::insert( - value_type&& value) -> typename std::enable_if::type + value_type&& value) -> std::enable_if_t { auto const before(m_cont.upper_bound(extract(value), std::cref(m_config.key_compare()))); element* const p(new_element(std::move(value))); @@ -1543,7 +1531,7 @@ template auto aged_ordered_container::insert( const_iterator hint, - value_type const& value) -> typename std::enable_if::type + value_type const& value) -> std::enable_if_t { typename cont_type::insert_commit_data d; auto const result( @@ -1564,7 +1552,7 @@ template auto aged_ordered_container::insert( const_iterator hint, - value_type&& value) -> typename std::enable_if::type + value_type&& value) -> std::enable_if_t { typename cont_type::insert_commit_data d; auto const result( @@ -1584,7 +1572,7 @@ template auto aged_ordered_container::emplace(Args&&... args) - -> typename std::enable_if>::type + -> std::enable_if_t> { // VFALCO NOTE Its unfortunate that we need to // construct element here @@ -1606,7 +1594,7 @@ template auto aged_ordered_container::emplace(Args&&... args) - -> typename std::enable_if::type + -> std::enable_if_t { element* const p(new_element(std::forward(args)...)); auto const before(m_cont.upper_bound(extract(p->value), std::cref(m_config.key_compare()))); @@ -1621,7 +1609,7 @@ template auto aged_ordered_container::emplace_hint( const_iterator hint, - Args&&... args) -> typename std::enable_if>::type + Args&&... args) -> std::enable_if_t> { // VFALCO NOTE Its unfortunate that we need to // construct element here @@ -1771,7 +1759,7 @@ aged_ordered_container::touch template template -typename std::enable_if::type +std::enable_if_t aged_ordered_container::swap_data( aged_ordered_container& other) noexcept { @@ -1782,7 +1770,7 @@ aged_ordered_container::swap_ template template -typename std::enable_if::type +std::enable_if_t aged_ordered_container::swap_data( aged_ordered_container& other) noexcept { diff --git a/include/xrpl/beast/container/detail/aged_unordered_container.h b/include/xrpl/beast/container/detail/aged_unordered_container.h index dfc853f019..15565bbada 100644 --- a/include/xrpl/beast/container/detail/aged_unordered_container.h +++ b/include/xrpl/beast/container/detail/aged_unordered_container.h @@ -62,8 +62,7 @@ template < class Clock = std::chrono::steady_clock, class Hash = std::hash, class KeyEqual = std::equal_to, - class Allocator = - std::allocator, Key>::type>> + class Allocator = std::allocator, Key>>> class aged_unordered_container { public: @@ -72,7 +71,7 @@ public: using duration = typename clock_type::duration; using key_type = Key; using mapped_type = T; - using value_type = typename std::conditional, Key>::type; + using value_type = std::conditional_t, Key>; using size_type = std::size_t; using difference_type = std::ptrdiff_t; @@ -115,8 +114,7 @@ private: template < class... Args, - class = - typename std::enable_if::value>::type> + class = std::enable_if_t>> element(time_point const& when_, Args&&... args) : value(std::forward(args)...), when(when_) { @@ -133,9 +131,7 @@ private: using argument_type = element; using result_type = size_t; - ValueHash() - { - } + ValueHash() = default; ValueHash(Hash const& h) : Hash(h) { @@ -169,9 +165,7 @@ private: using second_argument_type = element; using result_type = bool; - KeyValueEqual() - { - } + KeyValueEqual() = default; KeyValueEqual(KeyEqual const& keyEqual) : KeyEqual(keyEqual) { @@ -211,7 +205,7 @@ private: using list_type = typename boost::intrusive:: make_list>::type; - using cont_type = typename std::conditional< + using cont_type = std::conditional_t< IsMulti, typename boost::intrusive::make_unordered_multiset< element, @@ -224,7 +218,7 @@ private: boost::intrusive::constant_time_size, boost::intrusive::hash, boost::intrusive::equal, - boost::intrusive::cache_begin>::type>::type; + boost::intrusive::cache_begin>::type>; using bucket_type = typename cont_type::bucket_type; using bucket_traits = typename cont_type::bucket_traits; @@ -662,7 +656,7 @@ public: iterator iterator_to(value_type& value) { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return list.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -671,20 +665,17 @@ public: const_iterator iterator_to(value_type const& value) const { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return list.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); } - private: - chronological_t() - { - } - chronological_t(chronological_t const&) = delete; chronological_t(chronological_t&&) = delete; + chronological_t() = default; + private: friend class aged_unordered_container; list_type mutable list; } chronological; @@ -862,30 +853,30 @@ public: class K, bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& at(K const& k); template < class K, bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> + class = std::enable_if_t> typename std::conditional::type const& at(K const& k) const; template < bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& operator[](Key const& key); template < bool maybe_multi = IsMulti, bool maybe_map = IsMap, - class = typename std::enable_if::type> - typename std::conditional::type& + class = std::enable_if_t> + std::conditional_t& operator[](Key&& key); //-------------------------------------------------------------------------- @@ -933,7 +924,7 @@ public: iterator iterator_to(value_type& value) { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return m_cont.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -942,7 +933,7 @@ public: const_iterator iterator_to(value_type const& value) const { - static_assert(std::is_standard_layout::value, "must be standard layout"); + static_assert(std::is_standard_layout_v, "must be standard layout"); return m_cont.iterator_to(*reinterpret_cast( reinterpret_cast(&value) - ((std::size_t)std::addressof(((element*)0)->member)))); @@ -984,29 +975,27 @@ public: // map, set template auto - insert(value_type const& value) -> - typename std::enable_if>::type; + insert(value_type const& value) -> std::enable_if_t>; // multimap, multiset template auto - insert(value_type const& value) -> typename std::enable_if::type; + insert(value_type const& value) -> std::enable_if_t; // map, set template auto - insert(value_type&& value) -> - typename std::enable_if>::type; + insert(value_type&& value) + -> std::enable_if_t>; // multimap, multiset template auto - insert(value_type&& value) -> - typename std::enable_if::type; + insert(value_type&& value) -> std::enable_if_t; // map, set template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type const& value) { // Hint is ignored but we provide the interface so @@ -1016,7 +1005,7 @@ public: // multimap, multiset template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type const& value) { // VFALCO TODO The hint could be used to let @@ -1026,7 +1015,7 @@ public: // map, set template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type&& value) { // Hint is ignored but we provide the interface so @@ -1036,7 +1025,7 @@ public: // multimap, multiset template - typename std::enable_if::type + std::enable_if_t insert(const_iterator /*hint*/, value_type&& value) { // VFALCO TODO The hint could be used to let @@ -1046,9 +1035,9 @@ public: // map, multimap template - typename std::enable_if< - maybe_map && std::is_constructible::value, - typename std::conditional>::type>::type + std::enable_if_t< + maybe_map && std::is_constructible_v, + std::conditional_t>> insert(P&& value) { return emplace(std::forward

(value)); @@ -1056,9 +1045,9 @@ public: // map, multimap template - typename std::enable_if< - maybe_map && std::is_constructible::value, - typename std::conditional>::type>::type + std::enable_if_t< + maybe_map && std::is_constructible_v, + std::conditional_t>> insert(const_iterator hint, P&& value) { return emplace_hint(hint, std::forward

(value)); @@ -1080,23 +1069,22 @@ public: // set, map template auto - emplace(Args&&... args) -> - typename std::enable_if>::type; + emplace(Args&&... args) -> std::enable_if_t>; // multiset, multimap template auto - emplace(Args&&... args) -> typename std::enable_if::type; + emplace(Args&&... args) -> std::enable_if_t; // set, map template auto - emplace_hint(const_iterator /*hint*/, Args&&... args) -> - typename std::enable_if>::type; + emplace_hint(const_iterator /*hint*/, Args&&... args) + -> std::enable_if_t>; // multiset, multimap template - typename std::enable_if::type + std::enable_if_t emplace_hint(const_iterator /*hint*/, Args&&... args) { // VFALCO TODO The hint could be used for multi, to let @@ -1328,7 +1316,7 @@ public: class OtherHash, class OtherAllocator, bool maybe_multi = IsMulti> - typename std::enable_if::type + std::enable_if_t operator==(aged_unordered_container< false, OtherIsMap, @@ -1347,7 +1335,7 @@ public: class OtherHash, class OtherAllocator, bool maybe_multi = IsMulti> - typename std::enable_if::type + std::enable_if_t operator==(aged_unordered_container< true, OtherIsMap, @@ -1401,14 +1389,13 @@ private: // map, set template auto - insert_unchecked(value_type const& value) -> - typename std::enable_if>::type; + insert_unchecked(value_type const& value) + -> std::enable_if_t>; // multimap, multiset template auto - insert_unchecked(value_type const& value) -> - typename std::enable_if::type; + insert_unchecked(value_type const& value) -> std::enable_if_t; template void @@ -1449,7 +1436,7 @@ private: template < bool maybe_propagate = std::allocator_traits::propagate_on_container_swap::value> - typename std::enable_if::type + std::enable_if_t swap_data(aged_unordered_container& other) noexcept { std::swap(m_config.key_compare(), other.m_config.key_compare()); @@ -1459,7 +1446,7 @@ private: template < bool maybe_propagate = std::allocator_traits::propagate_on_container_swap::value> - typename std::enable_if::type + std::enable_if_t swap_data(aged_unordered_container& other) noexcept { std::swap(m_config.key_compare(), other.m_config.key_compare()); @@ -2114,7 +2101,7 @@ template < class KeyEqual, class Allocator> template -typename std::conditional::type& +std::conditional_t& aged_unordered_container::at(K const& k) { auto const iter( @@ -2155,7 +2142,7 @@ template < class KeyEqual, class Allocator> template -typename std::conditional::type& +std::conditional_t& aged_unordered_container::operator[]( Key const& key) { @@ -2184,7 +2171,7 @@ template < class KeyEqual, class Allocator> template -typename std::conditional::type& +std::conditional_t& aged_unordered_container::operator[]( Key&& key) { @@ -2239,8 +2226,7 @@ template < template auto aged_unordered_container::insert( - value_type const& value) -> - typename std::enable_if>::type + value_type const& value) -> std::enable_if_t> { maybe_rehash(1); typename cont_type::insert_commit_data d; @@ -2272,7 +2258,7 @@ template < template auto aged_unordered_container::insert( - value_type const& value) -> typename std::enable_if::type + value_type const& value) -> std::enable_if_t { maybe_rehash(1); element* const p(new_element(value)); @@ -2294,8 +2280,7 @@ template < template auto aged_unordered_container::insert( - value_type&& value) -> - typename std::enable_if>::type + value_type&& value) -> std::enable_if_t> { maybe_rehash(1); typename cont_type::insert_commit_data d; @@ -2327,7 +2312,7 @@ template < template auto aged_unordered_container::insert( - value_type&& value) -> typename std::enable_if::type + value_type&& value) -> std::enable_if_t { maybe_rehash(1); element* const p(new_element(std::move(value))); @@ -2350,7 +2335,7 @@ template < template auto aged_unordered_container::emplace( - Args&&... args) -> typename std::enable_if>::type + Args&&... args) -> std::enable_if_t> { maybe_rehash(1); // VFALCO NOTE Its unfortunate that we need to @@ -2415,7 +2400,7 @@ template < template auto aged_unordered_container::emplace( - Args&&... args) -> typename std::enable_if::type + Args&&... args) -> std::enable_if_t { maybe_rehash(1); element* const p(new_element(std::forward(args)...)); @@ -2438,7 +2423,7 @@ template auto aged_unordered_container::emplace_hint( const_iterator /*hint*/, - Args&&... args) -> typename std::enable_if>::type + Args&&... args) -> std::enable_if_t> { maybe_rehash(1); // VFALCO NOTE Its unfortunate that we need to @@ -2590,7 +2575,7 @@ template < class OtherHash, class OtherAllocator, bool maybe_multi> -typename std::enable_if::type +std::enable_if_t aged_unordered_container::operator==( aged_unordered_container< false, @@ -2630,7 +2615,7 @@ template < class OtherHash, class OtherAllocator, bool maybe_multi> -typename std::enable_if::type +std::enable_if_t aged_unordered_container::operator==( aged_unordered_container< true, @@ -2677,8 +2662,8 @@ template < template auto aged_unordered_container:: - insert_unchecked(value_type const& value) -> - typename std::enable_if>::type + insert_unchecked(value_type const& value) + -> std::enable_if_t> { typename cont_type::insert_commit_data d; auto const result(m_cont.insert_check( @@ -2709,8 +2694,7 @@ template < template auto aged_unordered_container:: - insert_unchecked(value_type const& value) -> - typename std::enable_if::type + insert_unchecked(value_type const& value) -> std::enable_if_t { element* const p(new_element(value)); chronological.list.push_back(*p); diff --git a/include/xrpl/beast/container/detail/empty_base_optimization.h b/include/xrpl/beast/container/detail/empty_base_optimization.h index 21a9d13ce8..337f3cf434 100644 --- a/include/xrpl/beast/container/detail/empty_base_optimization.h +++ b/include/xrpl/beast/container/detail/empty_base_optimization.h @@ -11,12 +11,11 @@ #include #include -namespace beast { -namespace detail { +namespace beast::detail { template struct is_empty_base_optimization_derived - : std::integral_constant::value && !boost::is_final::value> + : std::integral_constant && !boost::is_final::value> { }; @@ -86,5 +85,4 @@ public: } }; -} // namespace detail -} // namespace beast +} // namespace beast::detail diff --git a/include/xrpl/beast/core/List.h b/include/xrpl/beast/core/List.h index a6ba71680b..ab88eae738 100644 --- a/include/xrpl/beast/core/List.h +++ b/include/xrpl/beast/core/List.h @@ -16,7 +16,7 @@ struct CopyConst { explicit CopyConst() = default; - using type = typename std::remove_const::type; + using type = std::remove_const_t; }; template diff --git a/include/xrpl/beast/core/LockFreeStack.h b/include/xrpl/beast/core/LockFreeStack.h index cf512725fe..b1e911a7c5 100644 --- a/include/xrpl/beast/core/LockFreeStack.h +++ b/include/xrpl/beast/core/LockFreeStack.h @@ -13,18 +13,16 @@ class LockFreeStackIterator { protected: using Node = typename Container::Node; - using NodePtr = typename std::conditional::type; + using NodePtr = std::conditional_t; public: using iterator_category = std::forward_iterator_tag; using value_type = typename Container::value_type; using difference_type = typename Container::difference_type; - using pointer = typename std:: - conditional::type; - using reference = typename std::conditional< - IsConst, - typename Container::const_reference, - typename Container::reference>::type; + using pointer = + std::conditional_t; + using reference = std:: + conditional_t; LockFreeStackIterator() : m_node() { diff --git a/include/xrpl/beast/hash/hash_append.h b/include/xrpl/beast/hash/hash_append.h index cfae15e26b..3161ab3ce2 100644 --- a/include/xrpl/beast/hash/hash_append.h +++ b/include/xrpl/beast/hash/hash_append.h @@ -69,7 +69,7 @@ template struct is_uniquely_represented : public std::integral_constant< bool, - std::is_integral::value || std::is_enum::value || std::is_pointer::value> + std::is_integral_v || std::is_enum_v || std::is_pointer_v> { explicit is_uniquely_represented() = default; }; @@ -210,7 +210,7 @@ hash_append(Hasher& h, T const& t) noexcept template inline std::enable_if_t< !is_contiguously_hashable::value && - (std::is_integral::value || std::is_pointer::value || std::is_enum::value)> + (std::is_integral_v || std::is_pointer_v || std::is_enum_v)> hash_append(Hasher& h, T t) noexcept { detail::reverse_bytes(t); @@ -218,7 +218,7 @@ hash_append(Hasher& h, T t) noexcept } template -inline std::enable_if_t::value> +inline std::enable_if_t> hash_append(Hasher& h, T t) noexcept { if (t == 0) diff --git a/include/xrpl/beast/hash/xxhasher.h b/include/xrpl/beast/hash/xxhasher.h index f89b15314a..5cd060e465 100644 --- a/include/xrpl/beast/hash/xxhasher.h +++ b/include/xrpl/beast/hash/xxhasher.h @@ -121,13 +121,13 @@ public: } } - template ::value>* = nullptr> + template >* = nullptr> explicit xxhasher(Seed seed) : seed_(seed) { resetBuffers(); } - template ::value>* = nullptr> + template >* = nullptr> xxhasher(Seed seed, Seed) : seed_(seed) { resetBuffers(); diff --git a/include/xrpl/beast/insight/Collector.h b/include/xrpl/beast/insight/Collector.h index 89aa8c1cb5..1d18c7e15c 100644 --- a/include/xrpl/beast/insight/Collector.h +++ b/include/xrpl/beast/insight/Collector.h @@ -8,8 +8,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** Interface for a manager that allows collection of metrics. @@ -117,5 +116,4 @@ public: /** @} */ }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Counter.h b/include/xrpl/beast/insight/Counter.h index f6722c4e03..c5b8178c2d 100644 --- a/include/xrpl/beast/insight/Counter.h +++ b/include/xrpl/beast/insight/Counter.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** A metric for measuring an integral value. @@ -23,9 +22,7 @@ public: /** Create a null metric. A null metric reports no information. */ - Counter() - { - } + Counter() = default; /** Create the metric reference the specified implementation. Normally this won't be called directly. Instead, call the appropriate @@ -91,5 +88,4 @@ private: std::shared_ptr m_impl; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/CounterImpl.h b/include/xrpl/beast/insight/CounterImpl.h index 199315dcb8..8b16681759 100644 --- a/include/xrpl/beast/insight/CounterImpl.h +++ b/include/xrpl/beast/insight/CounterImpl.h @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { class Counter; @@ -18,5 +17,4 @@ public: increment(value_type amount) = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Event.h b/include/xrpl/beast/insight/Event.h index bc0c0dd403..ada488f134 100644 --- a/include/xrpl/beast/insight/Event.h +++ b/include/xrpl/beast/insight/Event.h @@ -5,8 +5,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { /** A metric for reporting event timing. @@ -25,9 +24,7 @@ public: /** Create a null metric. A null metric reports no information. */ - Event() - { - } + Event() = default; /** Create the metric reference the specified implementation. Normally this won't be called directly. Instead, call the appropriate @@ -58,5 +55,4 @@ private: std::shared_ptr m_impl; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/EventImpl.h b/include/xrpl/beast/insight/EventImpl.h index abd9741511..ede649d195 100644 --- a/include/xrpl/beast/insight/EventImpl.h +++ b/include/xrpl/beast/insight/EventImpl.h @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { class Event; @@ -18,5 +17,4 @@ public: notify(value_type const& value) = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Gauge.h b/include/xrpl/beast/insight/Gauge.h index f2a88deda2..b75060face 100644 --- a/include/xrpl/beast/insight/Gauge.h +++ b/include/xrpl/beast/insight/Gauge.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** A metric for measuring an integral value. @@ -25,9 +24,7 @@ public: /** Create a null metric. A null metric reports no information. */ - Gauge() - { - } + Gauge() = default; /** Create the metric reference the specified implementation. Normally this won't be called directly. Instead, call the appropriate @@ -121,5 +118,4 @@ private: std::shared_ptr m_impl; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/GaugeImpl.h b/include/xrpl/beast/insight/GaugeImpl.h index 29afbe6a4d..3b8afda5e7 100644 --- a/include/xrpl/beast/insight/GaugeImpl.h +++ b/include/xrpl/beast/insight/GaugeImpl.h @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { class Gauge; @@ -21,5 +20,4 @@ public: increment(difference_type amount) = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Group.h b/include/xrpl/beast/insight/Group.h index c85fd1bfb6..2b0d692f25 100644 --- a/include/xrpl/beast/insight/Group.h +++ b/include/xrpl/beast/insight/Group.h @@ -5,8 +5,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { /** A collector front-end that manages a group of metrics. */ class Group : public Collector @@ -19,5 +18,4 @@ public: name() const = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Groups.h b/include/xrpl/beast/insight/Groups.h index 8ac93454d3..abc1aa004b 100644 --- a/include/xrpl/beast/insight/Groups.h +++ b/include/xrpl/beast/insight/Groups.h @@ -6,8 +6,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { /** A container for managing a set of metric groups. */ class Groups @@ -32,5 +31,4 @@ public: std::unique_ptr make_Groups(Collector::ptr const& collector); -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Hook.h b/include/xrpl/beast/insight/Hook.h index ea511862d9..d51a5d2300 100644 --- a/include/xrpl/beast/insight/Hook.h +++ b/include/xrpl/beast/insight/Hook.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** A reference to a handler for performing polled collection. */ class Hook final @@ -14,9 +13,7 @@ public: /** Create a null hook. A null hook has no associated handler. */ - Hook() - { - } + Hook() = default; /** Create a hook referencing the specified implementation. Normally this won't be called directly. Instead, call the appropriate @@ -37,5 +34,4 @@ private: std::shared_ptr m_impl; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/HookImpl.h b/include/xrpl/beast/insight/HookImpl.h index 18208b554a..9a503ba0d2 100644 --- a/include/xrpl/beast/insight/HookImpl.h +++ b/include/xrpl/beast/insight/HookImpl.h @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { class HookImpl : public std::enable_shared_from_this { @@ -14,5 +13,4 @@ public: virtual ~HookImpl() = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/Meter.h b/include/xrpl/beast/insight/Meter.h index 193a1f1003..7685a0ec90 100644 --- a/include/xrpl/beast/insight/Meter.h +++ b/include/xrpl/beast/insight/Meter.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** A metric for measuring an integral value. @@ -22,9 +21,7 @@ public: /** Create a null metric. A null metric reports no information. */ - Meter() - { - } + Meter() = default; /** Create the metric reference the specified implementation. Normally this won't be called directly. Instead, call the appropriate @@ -76,5 +73,4 @@ private: std::shared_ptr m_impl; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/MeterImpl.h b/include/xrpl/beast/insight/MeterImpl.h index 22efdbe647..2220650131 100644 --- a/include/xrpl/beast/insight/MeterImpl.h +++ b/include/xrpl/beast/insight/MeterImpl.h @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { class Meter; @@ -18,5 +17,4 @@ public: increment(value_type amount) = 0; }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/NullCollector.h b/include/xrpl/beast/insight/NullCollector.h index 1d16a11e17..e6404c8f2c 100644 --- a/include/xrpl/beast/insight/NullCollector.h +++ b/include/xrpl/beast/insight/NullCollector.h @@ -2,8 +2,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { /** A Collector which does not collect metrics. */ class NullCollector : public Collector @@ -15,5 +14,4 @@ public: New(); }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/insight/StatsDCollector.h b/include/xrpl/beast/insight/StatsDCollector.h index ab09967483..161f351763 100644 --- a/include/xrpl/beast/insight/StatsDCollector.h +++ b/include/xrpl/beast/insight/StatsDCollector.h @@ -4,8 +4,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { /** A Collector that reports metrics to a StatsD server. Reference: @@ -25,5 +24,4 @@ public: New(IP::Endpoint const& address, std::string const& prefix, Journal journal); }; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/include/xrpl/beast/net/IPAddressConversion.h b/include/xrpl/beast/net/IPAddressConversion.h index 2ebd0a6eef..4e0328c113 100644 --- a/include/xrpl/beast/net/IPAddressConversion.h +++ b/include/xrpl/beast/net/IPAddressConversion.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace IP { +namespace beast::IP { /** Convert to Endpoint. The port is set to zero. @@ -27,8 +26,7 @@ to_asio_address(Endpoint const& endpoint); boost::asio::ip::tcp::endpoint to_asio_endpoint(Endpoint const& endpoint); -} // namespace IP -} // namespace beast +} // namespace beast::IP namespace beast { diff --git a/include/xrpl/beast/net/IPAddressV4.h b/include/xrpl/beast/net/IPAddressV4.h index 0d586716d8..15bb959f49 100644 --- a/include/xrpl/beast/net/IPAddressV4.h +++ b/include/xrpl/beast/net/IPAddressV4.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace IP { +namespace beast::IP { using AddressV4 = boost::asio::ip::address_v4; @@ -23,5 +22,4 @@ is_public(AddressV4 const& addr); char get_class(AddressV4 const& address); -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/include/xrpl/beast/net/IPAddressV6.h b/include/xrpl/beast/net/IPAddressV6.h index 2f9dedb748..83ac6d4dab 100644 --- a/include/xrpl/beast/net/IPAddressV6.h +++ b/include/xrpl/beast/net/IPAddressV6.h @@ -4,8 +4,7 @@ #include -namespace beast { -namespace IP { +namespace beast::IP { using AddressV6 = boost::asio::ip::address_v6; @@ -17,5 +16,4 @@ is_private(AddressV6 const& addr); bool is_public(AddressV6 const& addr); -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/include/xrpl/beast/net/IPEndpoint.h b/include/xrpl/beast/net/IPEndpoint.h index 5cb97f7afe..88f3d7669b 100644 --- a/include/xrpl/beast/net/IPEndpoint.h +++ b/include/xrpl/beast/net/IPEndpoint.h @@ -8,8 +8,7 @@ #include #include -namespace beast { -namespace IP { +namespace beast::IP { using Port = std::uint16_t; @@ -21,7 +20,7 @@ public: Endpoint(); /** Create an endpoint from the address and optional port. */ - explicit Endpoint(Address const& addr, Port port = 0); + explicit Endpoint(Address addr, Port port = 0); /** Create an Endpoint from a string. If the port is omitted, the endpoint will have a zero port. @@ -184,8 +183,7 @@ operator<<(OutputStream& os, Endpoint const& endpoint) std::istream& operator>>(std::istream& is, Endpoint& endpoint); -} // namespace IP -} // namespace beast +} // namespace beast::IP //------------------------------------------------------------------------------ diff --git a/include/xrpl/beast/rfc2616.h b/include/xrpl/beast/rfc2616.h index 08d49eb26c..7278119c3b 100644 --- a/include/xrpl/beast/rfc2616.h +++ b/include/xrpl/beast/rfc2616.h @@ -12,8 +12,7 @@ #include #include -namespace beast { -namespace rfc2616 { +namespace beast::rfc2616 { namespace detail { @@ -370,5 +369,4 @@ is_keep_alive(boost::beast::http::message const& m) "close"); } -} // namespace rfc2616 -} // namespace beast +} // namespace beast::rfc2616 diff --git a/include/xrpl/beast/test/yield_to.h b/include/xrpl/beast/test/yield_to.h index 07c1ef0799..e8db9e5864 100644 --- a/include/xrpl/beast/test/yield_to.h +++ b/include/xrpl/beast/test/yield_to.h @@ -15,8 +15,7 @@ #include #include -namespace beast { -namespace test { +namespace beast::test { /** Mix-in to support tests using asio coroutines. @@ -125,5 +124,4 @@ enable_yield_to::spawn(F0&& f, FN&&... fn) spawn(fn...); } -} // namespace test -} // namespace beast +} // namespace beast::test diff --git a/include/xrpl/beast/type_name.h b/include/xrpl/beast/type_name.h index 600f530adc..d12f9c4b90 100644 --- a/include/xrpl/beast/type_name.h +++ b/include/xrpl/beast/type_name.h @@ -15,7 +15,7 @@ template std::string type_name() { - using TR = typename std::remove_reference::type; + using TR = std::remove_reference_t; std::string name = typeid(TR).name(); @@ -27,15 +27,15 @@ type_name() } #endif - if (std::is_const::value) + if (std::is_const_v) name += " const"; - if (std::is_volatile::value) + if (std::is_volatile_v) name += " volatile"; - if (std::is_lvalue_reference::value) + if (std::is_lvalue_reference_v) { name += "&"; } - else if (std::is_rvalue_reference::value) + else if (std::is_rvalue_reference_v) { name += "&&"; } diff --git a/include/xrpl/beast/unit_test/amount.h b/include/xrpl/beast/unit_test/amount.h index aedced15a7..ae1dd8fe31 100644 --- a/include/xrpl/beast/unit_test/amount.h +++ b/include/xrpl/beast/unit_test/amount.h @@ -8,8 +8,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** Utility for producing nicely composed output of amounts with units. */ class amount @@ -42,5 +41,4 @@ operator<<(std::ostream& s, amount const& t) return s; } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/detail/const_container.h b/include/xrpl/beast/unit_test/detail/const_container.h index 7c52e0e1ec..6a32c61b61 100644 --- a/include/xrpl/beast/unit_test/detail/const_container.h +++ b/include/xrpl/beast/unit_test/detail/const_container.h @@ -4,9 +4,7 @@ #pragma once -namespace beast { -namespace unit_test { -namespace detail { +namespace beast::unit_test::detail { /** Adapter to constrain a container interface. The interface allows for limited read only operations. Derived classes @@ -82,6 +80,4 @@ public: /** @} */ }; -} // namespace detail -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test::detail diff --git a/include/xrpl/beast/unit_test/global_suites.h b/include/xrpl/beast/unit_test/global_suites.h index db5fee35dd..ca33ddb11c 100644 --- a/include/xrpl/beast/unit_test/global_suites.h +++ b/include/xrpl/beast/unit_test/global_suites.h @@ -6,8 +6,7 @@ #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { namespace detail { @@ -42,5 +41,4 @@ global_suites() return detail::global_suites(); } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/match.h b/include/xrpl/beast/unit_test/match.h index 38816bb5c7..084e2bc464 100644 --- a/include/xrpl/beast/unit_test/match.h +++ b/include/xrpl/beast/unit_test/match.h @@ -8,8 +8,7 @@ #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { // Predicate for implementing matches class selector @@ -163,5 +162,4 @@ match_library(std::string const& name) return selector(selector::library, name); } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/recorder.h b/include/xrpl/beast/unit_test/recorder.h index 0b3fc34787..f101d5318f 100644 --- a/include/xrpl/beast/unit_test/recorder.h +++ b/include/xrpl/beast/unit_test/recorder.h @@ -7,8 +7,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** A test runner that stores the results. */ class recorder : public runner @@ -29,49 +28,48 @@ public: } private: - virtual void + void on_suite_begin(suite_info const& info) override { m_suite = suite_results(info.full_name()); } - virtual void + void on_suite_end() override { m_results.insert(std::move(m_suite)); } - virtual void + void on_case_begin(std::string const& name) override { m_case = case_results(name); } - virtual void + void on_case_end() override { if (!m_case.tests.empty()) m_suite.insert(std::move(m_case)); } - virtual void + void on_pass() override { m_case.tests.pass(); } - virtual void + void on_fail(std::string const& reason) override { m_case.tests.fail(reason); } - virtual void + void on_log(std::string const& s) override { m_case.log.insert(s); } }; -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/reporter.h b/include/xrpl/beast/unit_test/reporter.h index 011e2ca3c0..066d628ea2 100644 --- a/include/xrpl/beast/unit_test/reporter.h +++ b/include/xrpl/beast/unit_test/reporter.h @@ -18,8 +18,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { namespace detail { @@ -86,7 +85,7 @@ public: reporter& operator=(reporter const&) = delete; - ~reporter(); + ~reporter() override; explicit reporter(std::ostream& os = std::cout); @@ -94,25 +93,25 @@ private: static std::string fmtdur(typename clock_type::duration const& d); - virtual void + void on_suite_begin(suite_info const& info) override; - virtual void + void on_suite_end() override; - virtual void + void on_case_begin(std::string const& name) override; - virtual void + void on_case_end() override; - virtual void + void on_pass() override; - virtual void + void on_fail(std::string const& reason) override; - virtual void + void on_log(std::string const& s) override; }; @@ -251,5 +250,4 @@ reporter::on_log(std::string const& s) using reporter = detail::reporter<>; -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/results.h b/include/xrpl/beast/unit_test/results.h index 57327639a5..5607071729 100644 --- a/include/xrpl/beast/unit_test/results.h +++ b/include/xrpl/beast/unit_test/results.h @@ -7,10 +7,10 @@ #include #include +#include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** Holds a set of test condition outcomes in a testcase. */ class case_results @@ -23,7 +23,7 @@ public: { } - test(bool pass_, std::string const& reason_) : pass(pass_), reason(reason_) + test(bool pass_, std::string reason_) : pass(pass_), reason(std::move(reason_)) { } @@ -38,9 +38,7 @@ private: std::size_t failed_{0}; public: - tests_t() - { - } + tests_t() = default; /** Returns the total number of test conditions. */ std::size_t @@ -86,7 +84,7 @@ private: std::string name_; public: - explicit case_results(std::string const& name = "") : name_(name) + explicit case_results(std::string name = "") : name_(std::move(name)) { } @@ -115,7 +113,7 @@ private: std::size_t failed_ = 0; public: - explicit suite_results(std::string const& name = "") : name_(name) + explicit suite_results(std::string name = "") : name_(std::move(name)) { } @@ -172,9 +170,7 @@ private: std::size_t failed_{0}; public: - results() - { - } + results() = default; /** Returns the total number of test cases. */ std::size_t @@ -219,5 +215,4 @@ public: /** @} */ }; -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/runner.h b/include/xrpl/beast/unit_test/runner.h index 7b93d8ad56..3443308675 100644 --- a/include/xrpl/beast/unit_test/runner.h +++ b/include/xrpl/beast/unit_test/runner.h @@ -11,8 +11,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** Unit test runner interface. @@ -277,5 +276,4 @@ runner::log(std::string const& s) on_log(s); } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/suite.h b/include/xrpl/beast/unit_test/suite.h index 33e9f462d9..1719c519cf 100644 --- a/include/xrpl/beast/unit_test/suite.h +++ b/include/xrpl/beast/unit_test/suite.h @@ -14,8 +14,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { namespace detail { @@ -75,7 +74,7 @@ private: { } - ~log_buf() + ~log_buf() override { sync(); } @@ -573,8 +572,7 @@ suite::run(runner& r) ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false)) #endif -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test //------------------------------------------------------------------------------ diff --git a/include/xrpl/beast/unit_test/suite_info.h b/include/xrpl/beast/unit_test/suite_info.h index 0ffb330422..e7fa80b70e 100644 --- a/include/xrpl/beast/unit_test/suite_info.h +++ b/include/xrpl/beast/unit_test/suite_info.h @@ -9,8 +9,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { class runner; @@ -110,5 +109,4 @@ make_suite_info( }); } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/suite_list.h b/include/xrpl/beast/unit_test/suite_list.h index bbd2914c45..deffbdfe84 100644 --- a/include/xrpl/beast/unit_test/suite_list.h +++ b/include/xrpl/beast/unit_test/suite_list.h @@ -13,8 +13,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /// A container of test suites. class suite_list : public detail::const_container> @@ -62,5 +61,4 @@ suite_list::insert( cont().emplace(make_suite_info(name, module, library, manual, priority)); } -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/unit_test/thread.h b/include/xrpl/beast/unit_test/thread.h index 9267b84ac3..cc12380b0d 100644 --- a/include/xrpl/beast/unit_test/thread.h +++ b/include/xrpl/beast/unit_test/thread.h @@ -10,8 +10,7 @@ #include #include -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** Replacement for std::thread that handles exceptions in unit tests. */ class Thread @@ -108,5 +107,4 @@ private: } }; -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/include/xrpl/beast/utility/Journal.h b/include/xrpl/beast/utility/Journal.h index 0d293fc656..975169cf5f 100644 --- a/include/xrpl/beast/utility/Journal.h +++ b/include/xrpl/beast/utility/Journal.h @@ -55,15 +55,16 @@ public: class Sink { protected: - Sink() = delete; explicit Sink(Sink const& sink) = default; Sink(Severity thresh, bool console); - Sink& - operator=(Sink const& lhs) = delete; public: virtual ~Sink() = 0; + Sink() = delete; + Sink& + operator=(Sink const& lhs) = delete; + /** Returns `true` if text at the passed severity produces output. */ virtual bool active(Severity level) const; @@ -371,10 +372,6 @@ class logstream_buf : public std::basic_stringbuf { beast::Journal::Stream strm_; - template - void - write(T const*) = delete; - void write(char const* s) { @@ -394,7 +391,7 @@ public: { } - ~logstream_buf() + ~logstream_buf() override { sync(); } @@ -406,6 +403,10 @@ public: this->str(""); return 0; } + + template + void + write(T const*) = delete; }; } // namespace detail @@ -413,11 +414,11 @@ public: template > class basic_logstream : public std::basic_ostream { - typedef CharT char_type; - typedef Traits traits_type; - typedef typename traits_type::int_type int_type; - typedef typename traits_type::pos_type pos_type; - typedef typename traits_type::off_type off_type; + using char_type = CharT; + using traits_type = Traits; + using int_type = typename traits_type::int_type; + using pos_type = typename traits_type::pos_type; + using off_type = typename traits_type::off_type; detail::logstream_buf buf_; diff --git a/include/xrpl/beast/utility/PropertyStream.h b/include/xrpl/beast/utility/PropertyStream.h index 290730c1a2..b2bd8c7a35 100644 --- a/include/xrpl/beast/utility/PropertyStream.h +++ b/include/xrpl/beast/utility/PropertyStream.h @@ -174,7 +174,7 @@ private: std::ostringstream mutable m_ostream; public: - Proxy(Map const& map, std::string const& key); + Proxy(Map const& map, std::string key); Proxy(Proxy const& other); ~Proxy(); @@ -315,7 +315,7 @@ private: List children_; public: - explicit Source(std::string const& name); + explicit Source(std::string name); virtual ~Source(); Source(Source const&) = delete; diff --git a/include/xrpl/beast/utility/WrappedSink.h b/include/xrpl/beast/utility/WrappedSink.h index bb8a1a6994..7e36ce99d7 100644 --- a/include/xrpl/beast/utility/WrappedSink.h +++ b/include/xrpl/beast/utility/WrappedSink.h @@ -2,6 +2,8 @@ #include +#include + namespace beast { /** Wraps a Journal::Sink to prefix its output with a string. */ @@ -17,8 +19,8 @@ private: std::string prefix_; public: - explicit WrappedSink(beast::Journal::Sink& sink, std::string const& prefix = "") - : Sink(sink), sink_(sink), prefix_(prefix) + explicit WrappedSink(beast::Journal::Sink& sink, std::string prefix = "") + : Sink(sink), sink_(sink), prefix_(std::move(prefix)) { } diff --git a/include/xrpl/beast/utility/Zero.h b/include/xrpl/beast/utility/Zero.h index 872a78e97f..ff212b9c98 100644 --- a/include/xrpl/beast/utility/Zero.h +++ b/include/xrpl/beast/utility/Zero.h @@ -38,8 +38,7 @@ signum(T const& t) return t.signum(); } -namespace detail { -namespace zero_helper { +namespace detail::zero_helper { // For argument dependent lookup to function properly, calls to signum must // be made from a namespace that does not include overloads of the function.. @@ -50,8 +49,7 @@ call_signum(T const& t) return signum(t); } -} // namespace zero_helper -} // namespace detail +} // namespace detail::zero_helper // Handle operators where T is on the left side using signum. diff --git a/include/xrpl/beast/utility/maybe_const.h b/include/xrpl/beast/utility/maybe_const.h index 3f6e1f95bd..bcfd7a7532 100644 --- a/include/xrpl/beast/utility/maybe_const.h +++ b/include/xrpl/beast/utility/maybe_const.h @@ -9,10 +9,8 @@ template struct maybe_const { explicit maybe_const() = default; - using type = typename std::conditional< - IsConst, - typename std::remove_const::type const, - typename std::remove_const::type>::type; + using type = std:: + conditional_t::type const, std::remove_const_t>; }; /** Alias for omitting `typename`. */ diff --git a/include/xrpl/conditions/Condition.h b/include/xrpl/conditions/Condition.h index 6b306a3982..4b24c5a289 100644 --- a/include/xrpl/conditions/Condition.h +++ b/include/xrpl/conditions/Condition.h @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { enum class Type : std::uint8_t { preimageSha256 = 0, @@ -88,6 +87,4 @@ operator!=(Condition const& lhs, Condition const& rhs) return !(lhs == rhs); } -} // namespace cryptoconditions - -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/include/xrpl/conditions/Fulfillment.h b/include/xrpl/conditions/Fulfillment.h index ab47804e45..71ff9d83ef 100644 --- a/include/xrpl/conditions/Fulfillment.h +++ b/include/xrpl/conditions/Fulfillment.h @@ -4,8 +4,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { struct Fulfillment { @@ -119,5 +118,4 @@ validate(Fulfillment const& f, Condition const& c, Slice m); bool validate(Fulfillment const& f, Condition const& c); -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/include/xrpl/conditions/detail/PreimageSha256.h b/include/xrpl/conditions/detail/PreimageSha256.h index 8726473c2d..bfa59ab749 100644 --- a/include/xrpl/conditions/detail/PreimageSha256.h +++ b/include/xrpl/conditions/detail/PreimageSha256.h @@ -9,8 +9,7 @@ #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { class PreimageSha256 final : public Fulfillment { @@ -127,5 +126,4 @@ public: } }; -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/include/xrpl/conditions/detail/error.h b/include/xrpl/conditions/detail/error.h index fdeed3d9ac..73cee4c9f3 100644 --- a/include/xrpl/conditions/detail/error.h +++ b/include/xrpl/conditions/detail/error.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { enum class error { generic = 1, @@ -28,8 +27,7 @@ enum class error { std::error_code make_error_code(error ev); -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions namespace std { diff --git a/include/xrpl/conditions/detail/utils.h b/include/xrpl/conditions/detail/utils.h index 2a0ef92ab3..8629987b8b 100644 --- a/include/xrpl/conditions/detail/utils.h +++ b/include/xrpl/conditions/detail/utils.h @@ -8,15 +8,12 @@ #include -namespace xrpl { -namespace cryptoconditions { - // A collection of functions to decode binary blobs // encoded with X.690 Distinguished Encoding Rules. // // This is a very trivial decoder and only implements // the bare minimum needed to support PreimageSha256. -namespace der { +namespace xrpl::cryptoconditions::der { // The preamble encapsulates the DER identifier and // length octets: @@ -204,6 +201,4 @@ parseInteger(Slice& s, std::size_t count, std::error_code& ec) return v; } -} // namespace der -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions::der diff --git a/include/xrpl/core/ClosureCounter.h b/include/xrpl/core/ClosureCounter.h index 730cc12dfe..ef857ace72 100644 --- a/include/xrpl/core/ClosureCounter.h +++ b/include/xrpl/core/ClosureCounter.h @@ -75,7 +75,7 @@ private: std::remove_reference_t closure_; static_assert( - std::is_same()...)), Ret_t>::value, + std::is_same_v()...)), Ret_t>, "Closure arguments don't match ClosureCounter Ret_t or Args_t"); public: @@ -86,7 +86,7 @@ private: ++counter_; } - Substitute(Substitute&& rhs) noexcept(std::is_nothrow_move_constructible::value) + Substitute(Substitute&& rhs) noexcept(std::is_nothrow_move_constructible_v) : counter_(rhs.counter_), closure_(std::move(rhs.closure_)) { ++counter_; diff --git a/include/xrpl/core/HashRouter.h b/include/xrpl/core/HashRouter.h index b4f07f6dc0..3bc87f9524 100644 --- a/include/xrpl/core/HashRouter.h +++ b/include/xrpl/core/HashRouter.h @@ -109,9 +109,7 @@ private: class Entry : public CountedObject { public: - Entry() - { - } + Entry() = default; void addPeer(PeerShortID peer) diff --git a/include/xrpl/core/JobQueue.h b/include/xrpl/core/JobQueue.h index 558e55cf31..3c1bde89c3 100644 --- a/include/xrpl/core/JobQueue.h +++ b/include/xrpl/core/JobQueue.h @@ -128,7 +128,7 @@ public: beast::Journal journal, Logs& logs, perf::PerfLog& perfLog); - ~JobQueue(); + ~JobQueue() override; /** Adds a job to the JobQueue. @@ -141,8 +141,7 @@ public: */ template < typename JobHandler, - typename = - std::enable_if_t()()), void>::value>> + typename = std::enable_if_t()()), void>>> bool addJob(JobType type, std::string const& name, JobHandler&& jobHandler) { diff --git a/include/xrpl/core/JobTypeData.h b/include/xrpl/core/JobTypeData.h index c180629af7..917f838990 100644 --- a/include/xrpl/core/JobTypeData.h +++ b/include/xrpl/core/JobTypeData.h @@ -4,6 +4,8 @@ #include #include +#include + namespace xrpl { struct JobTypeData @@ -33,9 +35,9 @@ public: JobTypeData( JobTypeInfo const& info_, - beast::insight::Collector::ptr const& collector, + beast::insight::Collector::ptr collector, Logs& logs) noexcept - : m_load(logs.journal("LoadMonitor")), m_collector(collector), info(info_) + : m_load(logs.journal("LoadMonitor")), m_collector(std::move(collector)), info(info_) { m_load.setTargetLatency(info.getAverageLatency(), info.getPeakLatency()); diff --git a/include/xrpl/core/LoadEvent.h b/include/xrpl/core/LoadEvent.h index f94e1020bf..87d4a5563d 100644 --- a/include/xrpl/core/LoadEvent.h +++ b/include/xrpl/core/LoadEvent.h @@ -16,7 +16,7 @@ class LoadEvent { public: // VFALCO TODO remove the dependency on LoadMonitor. Is that possible? - LoadEvent(LoadMonitor& monitor, std::string const& name, bool shouldStart); + LoadEvent(LoadMonitor& monitor, std::string name, bool shouldStart); LoadEvent(LoadEvent const&) = delete; ~LoadEvent(); diff --git a/include/xrpl/core/detail/Workers.h b/include/xrpl/core/detail/Workers.h index dbc93ecf81..bd82f9d57b 100644 --- a/include/xrpl/core/detail/Workers.h +++ b/include/xrpl/core/detail/Workers.h @@ -93,7 +93,7 @@ public: explicit Workers( Callback& callback, perf::PerfLog* perfLog, - std::string const& threadNames = "Worker", + std::string threadNames = "Worker", int numberOfThreads = static_cast(std::thread::hardware_concurrency())); ~Workers(); @@ -164,7 +164,7 @@ private: public beast::LockFreeStack::Node { public: - Worker(Workers& workers, std::string const& threadName, int const instance); + Worker(Workers& workers, std::string threadName, int const instance); ~Worker(); diff --git a/include/xrpl/json/json_writer.h b/include/xrpl/json/json_writer.h index e49abcd81a..45961fe030 100644 --- a/include/xrpl/json/json_writer.h +++ b/include/xrpl/json/json_writer.h @@ -15,9 +15,7 @@ class Value; class WriterBase { public: - virtual ~WriterBase() - { - } + virtual ~WriterBase() = default; virtual std::string write(Value const& root) = 0; }; @@ -34,9 +32,7 @@ class FastWriter : public WriterBase { public: FastWriter() = default; - virtual ~FastWriter() - { - } + ~FastWriter() override = default; public: // overridden from Writer std::string @@ -71,9 +67,7 @@ class StyledWriter : public WriterBase { public: StyledWriter(); - virtual ~StyledWriter() - { - } + ~StyledWriter() override = default; public: // overridden from Writer /** \brief Serialize a Value in JSON @@ -136,9 +130,7 @@ class StyledStreamWriter { public: StyledStreamWriter(std::string indentation = "\t"); - ~StyledStreamWriter() - { - } + ~StyledStreamWriter() = default; public: /** \brief Serialize a Value in JSON diff --git a/include/xrpl/ledger/AmendmentTable.h b/include/xrpl/ledger/AmendmentTable.h index 7fd8efadf1..8df09f74c3 100644 --- a/include/xrpl/ledger/AmendmentTable.h +++ b/include/xrpl/ledger/AmendmentTable.h @@ -8,6 +8,7 @@ #include #include +#include namespace xrpl { @@ -23,8 +24,8 @@ public: struct FeatureInfo { FeatureInfo() = delete; - FeatureInfo(std::string const& n, uint256 const& f, VoteBehavior v) - : name(n), feature(f), vote(v) + FeatureInfo(std::string n, uint256 const& f, VoteBehavior v) + : name(std::move(n)), feature(f), vote(v) { } diff --git a/include/xrpl/ledger/BookListeners.h b/include/xrpl/ledger/BookListeners.h index 3ed267448b..c77271b20e 100644 --- a/include/xrpl/ledger/BookListeners.h +++ b/include/xrpl/ledger/BookListeners.h @@ -14,9 +14,7 @@ class BookListeners public: using pointer = std::shared_ptr; - BookListeners() - { - } + BookListeners() = default; /** Add a new subscription for this book */ diff --git a/include/xrpl/ledger/CachedView.h b/include/xrpl/ledger/CachedView.h index 7cab1dc1b3..5dad2598f4 100644 --- a/include/xrpl/ledger/CachedView.h +++ b/include/xrpl/ledger/CachedView.h @@ -132,7 +132,7 @@ template class CachedView : public detail::CachedViewImpl { private: - static_assert(std::is_base_of::value, ""); + static_assert(std::is_base_of_v, ""); std::shared_ptr sp_; diff --git a/include/xrpl/ledger/Ledger.h b/include/xrpl/ledger/Ledger.h index 75a8f55dc0..69fb27975d 100644 --- a/include/xrpl/ledger/Ledger.h +++ b/include/xrpl/ledger/Ledger.h @@ -82,12 +82,12 @@ public: */ Ledger( create_genesis_t, - Rules const& rules, + Rules rules, Fees const& fees, std::vector const& amendments, Family& family); - Ledger(LedgerHeader const& info, Rules const& rules, Family& family); + Ledger(LedgerHeader const& info, Rules rules, Family& family); /** Used for ledgers loaded from JSON files @@ -100,7 +100,7 @@ public: LedgerHeader const& info, bool& loaded, bool acquire, - Rules const& rules, + Rules rules, Fees const& fees, Family& family, beast::Journal j); @@ -117,11 +117,11 @@ public: Ledger( std::uint32_t ledgerSeq, NetClock::time_point closeTime, - Rules const& rules, + Rules rules, Fees const& fees, Family& family); - ~Ledger() = default; + ~Ledger() override = default; // // ReadView diff --git a/include/xrpl/ledger/OpenView.h b/include/xrpl/ledger/OpenView.h index 5c942ce5e3..3420aa1df0 100644 --- a/include/xrpl/ledger/OpenView.h +++ b/include/xrpl/ledger/OpenView.h @@ -135,7 +135,7 @@ public: OpenView( open_ledger_t, ReadView const* base, - Rules const& rules, + Rules rules, std::shared_ptr hold = nullptr); OpenView(open_ledger_t, Rules const& rules, std::shared_ptr const& base) diff --git a/include/xrpl/ledger/PaymentSandbox.h b/include/xrpl/ledger/PaymentSandbox.h index d6f7820e8a..223a3c0c5a 100644 --- a/include/xrpl/ledger/PaymentSandbox.h +++ b/include/xrpl/ledger/PaymentSandbox.h @@ -6,6 +6,7 @@ #include #include +#include namespace xrpl { @@ -63,8 +64,8 @@ private: public: struct AdjustmentIOU { - AdjustmentIOU(STAmount const& d, STAmount const& c, STAmount const& b) - : debits(d), credits(c), origBalance(b) + AdjustmentIOU(STAmount d, STAmount c, STAmount b) + : debits(std::move(d)), credits(std::move(c)), origBalance(std::move(b)) { } STAmount debits; diff --git a/include/xrpl/ledger/detail/ApplyStateTable.h b/include/xrpl/ledger/detail/ApplyStateTable.h index 07af5247f6..0ded0aa273 100644 --- a/include/xrpl/ledger/detail/ApplyStateTable.h +++ b/include/xrpl/ledger/detail/ApplyStateTable.h @@ -10,8 +10,7 @@ #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { // Helper class that buffers modifications class ApplyStateTable @@ -125,5 +124,4 @@ private: beast::Journal j); }; -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/include/xrpl/ledger/detail/ApplyViewBase.h b/include/xrpl/ledger/detail/ApplyViewBase.h index b3ec3c0fea..0e93ac5d2f 100644 --- a/include/xrpl/ledger/detail/ApplyViewBase.h +++ b/include/xrpl/ledger/detail/ApplyViewBase.h @@ -5,8 +5,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { class ApplyViewBase : public ApplyView, public RawView { @@ -102,5 +101,4 @@ protected: detail::ApplyStateTable items_; }; -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/include/xrpl/ledger/detail/RawStateTable.h b/include/xrpl/ledger/detail/RawStateTable.h index 499b9204c6..b3307b3ea4 100644 --- a/include/xrpl/ledger/detail/RawStateTable.h +++ b/include/xrpl/ledger/detail/RawStateTable.h @@ -9,8 +9,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { // Helper class that buffers raw modifications class RawStateTable @@ -108,5 +107,4 @@ private: XRPAmount dropsDestroyed_{0}; }; -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/include/xrpl/ledger/helpers/NFTokenHelpers.h b/include/xrpl/ledger/helpers/NFTokenHelpers.h index 3af81eff16..49fd520d51 100644 --- a/include/xrpl/ledger/helpers/NFTokenHelpers.h +++ b/include/xrpl/ledger/helpers/NFTokenHelpers.h @@ -8,9 +8,9 @@ #include #include -namespace xrpl { +#include -namespace nft { +namespace xrpl::nft { /** Delete up to a specified number of offers from the specified token offer * directory. */ @@ -30,8 +30,8 @@ struct TokenAndPage STObject token; std::shared_ptr page; - TokenAndPage(STObject const& token_, std::shared_ptr page_) - : token(token_), page(std::move(page_)) + TokenAndPage(STObject token_, std::shared_ptr page_) + : token(std::move(token_)), page(std::move(page_)) { } }; @@ -136,6 +136,4 @@ checkTrustlineDeepFrozen( beast::Journal const j, Issue const& issue); -} // namespace nft - -} // namespace xrpl +} // namespace xrpl::nft diff --git a/include/xrpl/ledger/helpers/PermissionedDEXHelpers.h b/include/xrpl/ledger/helpers/PermissionedDEXHelpers.h index 3992f8885e..04b12f2fc5 100644 --- a/include/xrpl/ledger/helpers/PermissionedDEXHelpers.h +++ b/include/xrpl/ledger/helpers/PermissionedDEXHelpers.h @@ -1,8 +1,7 @@ #pragma once #include -namespace xrpl { -namespace permissioned_dex { +namespace xrpl::permissioned_dex { // Check if an account is in a permissioned domain [[nodiscard]] bool @@ -16,6 +15,4 @@ offerInDomain( Domain const& domainID, beast::Journal j); -} // namespace permissioned_dex - -} // namespace xrpl +} // namespace xrpl::permissioned_dex diff --git a/include/xrpl/net/HTTPClientSSLContext.h b/include/xrpl/net/HTTPClientSSLContext.h index a53ecff849..d211b21afe 100644 --- a/include/xrpl/net/HTTPClientSSLContext.h +++ b/include/xrpl/net/HTTPClientSSLContext.h @@ -79,8 +79,8 @@ public: template < class T, class = std::enable_if_t< - std::is_same>::value || - std::is_same>::value>> + std::is_same_v> || + std::is_same_v>>> boost::system::error_code preConnectVerify(T& strm, std::string const& host) { @@ -99,8 +99,8 @@ public: template < class T, class = std::enable_if_t< - std::is_same>::value || - std::is_same>::value>> + std::is_same_v> || + std::is_same_v>>> /** * @brief invoked after connect/async_connect but before sending data * on an ssl stream - to setup name verification. diff --git a/include/xrpl/nodestore/Backend.h b/include/xrpl/nodestore/Backend.h index 36fd36ec00..d1b0ecb6dd 100644 --- a/include/xrpl/nodestore/Backend.h +++ b/include/xrpl/nodestore/Backend.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** A backend used for the NodeStore. @@ -140,5 +139,4 @@ public: fdRequired() const = 0; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Database.h b/include/xrpl/nodestore/Database.h index e33b8a3a5c..c21c1e27dd 100644 --- a/include/xrpl/nodestore/Database.h +++ b/include/xrpl/nodestore/Database.h @@ -10,9 +10,7 @@ #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { /** Persistency layer for NodeObject @@ -274,5 +272,4 @@ private: threadEntry(); }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/DatabaseRotating.h b/include/xrpl/nodestore/DatabaseRotating.h index 23a749f972..a7deed294a 100644 --- a/include/xrpl/nodestore/DatabaseRotating.h +++ b/include/xrpl/nodestore/DatabaseRotating.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /* This class has two key-value store Backend objects for persisting SHAMap * records. This facilitates online deletion of data. New backends are @@ -36,5 +35,4 @@ public: f) = 0; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/DummyScheduler.h b/include/xrpl/nodestore/DummyScheduler.h index 9fce4a6100..472684ff13 100644 --- a/include/xrpl/nodestore/DummyScheduler.h +++ b/include/xrpl/nodestore/DummyScheduler.h @@ -2,15 +2,14 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Simple NodeStore Scheduler that just performs the tasks synchronously. */ class DummyScheduler : public Scheduler { public: DummyScheduler() = default; - ~DummyScheduler() = default; + ~DummyScheduler() override = default; void scheduleTask(Task& task) override; void @@ -19,5 +18,4 @@ public: onBatchWrite(BatchWriteReport const& report) override; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Factory.h b/include/xrpl/nodestore/Factory.h index e01bdfabf2..1656e73840 100644 --- a/include/xrpl/nodestore/Factory.h +++ b/include/xrpl/nodestore/Factory.h @@ -7,9 +7,7 @@ #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { /** Base class for backend factories. */ class Factory @@ -59,5 +57,4 @@ public: } }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Manager.h b/include/xrpl/nodestore/Manager.h index ff00ee3ee1..7f718d7835 100644 --- a/include/xrpl/nodestore/Manager.h +++ b/include/xrpl/nodestore/Manager.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { /** Singleton for managing NodeStore factories and back ends. */ class Manager @@ -81,5 +79,4 @@ public: beast::Journal journal) = 0; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Scheduler.h b/include/xrpl/nodestore/Scheduler.h index dc3e1e3d15..bf256648aa 100644 --- a/include/xrpl/nodestore/Scheduler.h +++ b/include/xrpl/nodestore/Scheduler.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { enum class FetchType { synchronous, async }; @@ -64,5 +63,4 @@ public: onBatchWrite(BatchWriteReport const& report) = 0; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Task.h b/include/xrpl/nodestore/Task.h index 4bfc88bd13..0695970a68 100644 --- a/include/xrpl/nodestore/Task.h +++ b/include/xrpl/nodestore/Task.h @@ -1,7 +1,6 @@ #pragma once -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Derived classes perform scheduled tasks. */ struct Task @@ -15,5 +14,4 @@ struct Task performScheduledTask() = 0; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/Types.h b/include/xrpl/nodestore/Types.h index f44332a049..851cbcfb8b 100644 --- a/include/xrpl/nodestore/Types.h +++ b/include/xrpl/nodestore/Types.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { enum { // This is only used to pre-allocate the array for @@ -34,6 +33,4 @@ enum Status { /** A batch of NodeObjects to write at once. */ using Batch = std::vector>; -} // namespace NodeStore - -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/BatchWriter.h b/include/xrpl/nodestore/detail/BatchWriter.h index 93993d1c3e..1112ccc324 100644 --- a/include/xrpl/nodestore/detail/BatchWriter.h +++ b/include/xrpl/nodestore/detail/BatchWriter.h @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Batch-writing assist logic. @@ -41,7 +40,7 @@ public: Anything pending in the batch is written out before this returns. */ - ~BatchWriter(); + ~BatchWriter() override; /** Store the object. @@ -76,5 +75,4 @@ private: Batch mWriteSet; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/DatabaseNodeImp.h b/include/xrpl/nodestore/detail/DatabaseNodeImp.h index 21f06fef8d..88fb994bee 100644 --- a/include/xrpl/nodestore/detail/DatabaseNodeImp.h +++ b/include/xrpl/nodestore/detail/DatabaseNodeImp.h @@ -4,8 +4,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class DatabaseNodeImp : public Database { @@ -29,7 +28,7 @@ public: "backend"); } - ~DatabaseNodeImp() + ~DatabaseNodeImp() override { stop(); } @@ -92,5 +91,4 @@ private: } }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/DatabaseRotatingImp.h b/include/xrpl/nodestore/detail/DatabaseRotatingImp.h index 8d4cd9ddbc..7010c87ebf 100644 --- a/include/xrpl/nodestore/detail/DatabaseRotatingImp.h +++ b/include/xrpl/nodestore/detail/DatabaseRotatingImp.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class DatabaseRotatingImp : public DatabaseRotating { @@ -23,7 +22,7 @@ public: Section const& config, beast::Journal j); - ~DatabaseRotatingImp() + ~DatabaseRotatingImp() override { stop(); } @@ -69,5 +68,4 @@ private: for_each(std::function)> f) override; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/DecodedBlob.h b/include/xrpl/nodestore/detail/DecodedBlob.h index dc6704a08d..052c143009 100644 --- a/include/xrpl/nodestore/detail/DecodedBlob.h +++ b/include/xrpl/nodestore/detail/DecodedBlob.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Parsed key/value blob into NodeObject components. @@ -41,5 +40,4 @@ private: int m_dataBytes; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/EncodedBlob.h b/include/xrpl/nodestore/detail/EncodedBlob.h index b05583475e..343e1720a0 100644 --- a/include/xrpl/nodestore/detail/EncodedBlob.h +++ b/include/xrpl/nodestore/detail/EncodedBlob.h @@ -9,8 +9,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Convert a NodeObject from in-memory to database format. @@ -105,5 +104,4 @@ public: } }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/ManagerImp.h b/include/xrpl/nodestore/detail/ManagerImp.h index cb10a740c1..46363f9dab 100644 --- a/include/xrpl/nodestore/detail/ManagerImp.h +++ b/include/xrpl/nodestore/detail/ManagerImp.h @@ -2,9 +2,7 @@ #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { class ManagerImp : public Manager { @@ -21,7 +19,7 @@ public: ManagerImp(); - ~ManagerImp() = default; + ~ManagerImp() override = default; Factory* find(std::string const& name) override; @@ -48,5 +46,4 @@ public: beast::Journal journal) override; }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/codec.h b/include/xrpl/nodestore/detail/codec.h index 8096048185..c159558f83 100644 --- a/include/xrpl/nodestore/detail/codec.h +++ b/include/xrpl/nodestore/detail/codec.h @@ -17,8 +17,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { template std::pair @@ -313,5 +312,4 @@ filter_inner(void* in, std::size_t in_size) } } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/nodestore/detail/varint.h b/include/xrpl/nodestore/detail/varint.h index cc7e49fd6f..e63944c63b 100644 --- a/include/xrpl/nodestore/detail/varint.h +++ b/include/xrpl/nodestore/detail/varint.h @@ -5,8 +5,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { // This is a variant of the base128 varint format from // google protocol buffers: @@ -18,7 +17,7 @@ struct varint; // Metafuncton to return largest // possible size of T represented as varint. // T must be unsigned -template ::value> +template > struct varint_traits; template @@ -67,7 +66,7 @@ read_varint(void const* buf, std::size_t buflen, std::size_t& t) return used; } -template ::value>* = nullptr> +template >* = nullptr> std::size_t size_varint(T v) { @@ -99,7 +98,7 @@ write_varint(void* p0, std::size_t v) // input stream -template ::value>* = nullptr> +template >* = nullptr> void read(nudb::detail::istream& is, std::size_t& u) { @@ -112,12 +111,11 @@ read(nudb::detail::istream& is, std::size_t& u) // output stream -template ::value>* = nullptr> +template >* = nullptr> void write(nudb::detail::ostream& os, std::size_t t) { write_varint(os.data(size_varint(t)), t); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/include/xrpl/protocol/Book.h b/include/xrpl/protocol/Book.h index 36bf708f05..cda4daf603 100644 --- a/include/xrpl/protocol/Book.h +++ b/include/xrpl/protocol/Book.h @@ -19,9 +19,7 @@ public: Asset out; std::optional domain; - Book() - { - } + Book() = default; Book(Asset const& in_, Asset const& out_, std::optional const& domain_) : in(in_), out(out_), domain(domain_) diff --git a/include/xrpl/protocol/BuildInfo.h b/include/xrpl/protocol/BuildInfo.h index 522747bc94..47a27339a8 100644 --- a/include/xrpl/protocol/BuildInfo.h +++ b/include/xrpl/protocol/BuildInfo.h @@ -3,11 +3,9 @@ #include #include -namespace xrpl { - /** Versioning information for this build. */ // VFALCO The namespace is deprecated -namespace BuildInfo { +namespace xrpl::BuildInfo { /** Server version. Follows the Semantic Versioning Specification: @@ -76,6 +74,4 @@ isXrpldVersion(std::uint64_t version); bool isNewerVersion(std::uint64_t version); -} // namespace BuildInfo - -} // namespace xrpl +} // namespace xrpl::BuildInfo diff --git a/include/xrpl/protocol/Indexes.h b/include/xrpl/protocol/Indexes.h index 574bbfbde6..f4dd5e6816 100644 --- a/include/xrpl/protocol/Indexes.h +++ b/include/xrpl/protocol/Indexes.h @@ -374,14 +374,14 @@ struct keyletDesc // This list should include all of the keylet functions that take a single // AccountID parameter. std::array, 6> const directAccountKeylets{ - {{&keylet::account, jss::AccountRoot, false}, - {&keylet::ownerDir, jss::DirectoryNode, true}, - {&keylet::signers, jss::SignerList, true}, + {{.function = &keylet::account, .expectedLEName = jss::AccountRoot, .includeInTests = false}, + {.function = &keylet::ownerDir, .expectedLEName = jss::DirectoryNode, .includeInTests = true}, + {.function = &keylet::signers, .expectedLEName = jss::SignerList, .includeInTests = true}, // It's normally impossible to create an item at nftpage_min, but // test it anyway, since the invariant checks for it. - {&keylet::nftpage_min, jss::NFTokenPage, true}, - {&keylet::nftpage_max, jss::NFTokenPage, true}, - {&keylet::did, jss::DID, true}}}; + {.function = &keylet::nftpage_min, .expectedLEName = jss::NFTokenPage, .includeInTests = true}, + {.function = &keylet::nftpage_max, .expectedLEName = jss::NFTokenPage, .includeInTests = true}, + {.function = &keylet::did, .expectedLEName = jss::DID, .includeInTests = true}}}; MPTID makeMptID(std::uint32_t sequence, AccountID const& account); diff --git a/include/xrpl/protocol/KnownFormats.h b/include/xrpl/protocol/KnownFormats.h index d965f43b78..fb93940fa8 100644 --- a/include/xrpl/protocol/KnownFormats.h +++ b/include/xrpl/protocol/KnownFormats.h @@ -38,7 +38,7 @@ public: { // Verify that KeyType is appropriate. static_assert( - std::is_enum::value || std::is_integral::value, + std::is_enum_v || std::is_integral_v, "KnownFormats KeyType must be integral or enum."); } diff --git a/include/xrpl/protocol/NFTSyntheticSerializer.h b/include/xrpl/protocol/NFTSyntheticSerializer.h index c33a6edc7d..dcfd132ed8 100644 --- a/include/xrpl/protocol/NFTSyntheticSerializer.h +++ b/include/xrpl/protocol/NFTSyntheticSerializer.h @@ -6,9 +6,7 @@ #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { /** Adds common synthetic fields to transaction-related JSON responses @@ -19,5 +17,4 @@ void insertNFTSyntheticInJson(Json::Value&, std::shared_ptr const&, TxMeta const&); /** @} */ -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/include/xrpl/protocol/Quality.h b/include/xrpl/protocol/Quality.h index a58b89aaf8..b0e3e65d6c 100644 --- a/include/xrpl/protocol/Quality.h +++ b/include/xrpl/protocol/Quality.h @@ -8,6 +8,7 @@ #include #include #include +#include namespace xrpl { @@ -29,7 +30,7 @@ struct TAmounts { } - TAmounts(In const& in_, Out const& out_) : in(in_), out(out_) + TAmounts(In in_, Out out_) : in(std::move(in_)), out(std::move(out_)) { } diff --git a/include/xrpl/protocol/STExchange.h b/include/xrpl/protocol/STExchange.h index 4b576991b7..c733df37cf 100644 --- a/include/xrpl/protocol/STExchange.h +++ b/include/xrpl/protocol/STExchange.h @@ -123,7 +123,7 @@ template void set(STObject& st, TypedField const& f, T&& t) { - st.set(STExchange::type>::set(f, std::forward(t))); + st.set(STExchange>::set(f, std::forward(t))); } /** Set a blob field using an init function. */ diff --git a/include/xrpl/protocol/STObject.h b/include/xrpl/protocol/STObject.h index 7e996828af..34bd19b9a0 100644 --- a/include/xrpl/protocol/STObject.h +++ b/include/xrpl/protocol/STObject.h @@ -62,7 +62,7 @@ class STObject : public STBase, public CountedObject public: using iterator = boost::transform_iterator; - virtual ~STObject() = default; + ~STObject() override = default; STObject(STObject const&) = default; template @@ -436,8 +436,7 @@ private: // by value. template < typename T, - typename V = typename std::remove_cv< - typename std::remove_reference().value())>::type>::type> + typename V = std::remove_cv_t().value())>>> V getFieldByValue(SField const& field) const; @@ -579,7 +578,7 @@ class STObject::OptionalProxy : public Proxy private: using value_type = typename T::value_type; - using optional_type = std::optional::type>; + using optional_type = std::optional>; public: OptionalProxy(OptionalProxy const&) = default; @@ -1228,7 +1227,7 @@ template void STObject::setFieldUsingSetValue(SField const& field, V value) { - static_assert(!std::is_lvalue_reference::value, ""); + static_assert(!std::is_lvalue_reference_v, ""); STBase* rf = getPField(field, true); diff --git a/include/xrpl/protocol/TER.h b/include/xrpl/protocol/TER.h index b0dafecf1c..efec25962d 100644 --- a/include/xrpl/protocol/TER.h +++ b/include/xrpl/protocol/TER.h @@ -485,8 +485,7 @@ public: template constexpr auto operator==(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) == TERtoInt(rhs); @@ -495,8 +494,7 @@ operator==(L const& lhs, R const& rhs) -> std::enable_if_t< template constexpr auto operator!=(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) != TERtoInt(rhs); @@ -505,8 +503,7 @@ operator!=(L const& lhs, R const& rhs) -> std::enable_if_t< template constexpr auto operator<(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) < TERtoInt(rhs); @@ -515,8 +512,7 @@ operator<(L const& lhs, R const& rhs) -> std::enable_if_t< template constexpr auto operator<=(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) <= TERtoInt(rhs); @@ -525,8 +521,7 @@ operator<=(L const& lhs, R const& rhs) -> std::enable_if_t< template constexpr auto operator>(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) > TERtoInt(rhs); @@ -535,8 +530,7 @@ operator>(L const& lhs, R const& rhs) -> std::enable_if_t< template constexpr auto operator>=(L const& lhs, R const& rhs) -> std::enable_if_t< - std::is_same::value && - std::is_same::value, + std::is_same_v && std::is_same_v, bool> { return TERtoInt(lhs) >= TERtoInt(rhs); diff --git a/include/xrpl/protocol/XChainAttestations.h b/include/xrpl/protocol/XChainAttestations.h index 06eff0fcf2..44a2334ca0 100644 --- a/include/xrpl/protocol/XChainAttestations.h +++ b/include/xrpl/protocol/XChainAttestations.h @@ -15,6 +15,7 @@ #include #include +#include #include namespace xrpl { @@ -45,7 +46,7 @@ struct AttestationBase PublicKey const& publicKey_, Buffer signature_, AccountID const& sendingAccount_, - STAmount const& sendingAmount_, + STAmount sendingAmount_, AccountID const& rewardAccount_, bool wasLockingChainSend_); @@ -169,7 +170,7 @@ struct AttestationCreateAccount : AttestationBase Buffer signature_, AccountID const& sendingAccount_, STAmount const& sendingAmount_, - STAmount const& rewardAmount_, + STAmount rewardAmount_, AccountID const& rewardAccount_, bool wasLockingChainSend_, std::uint64_t createCount_, @@ -256,8 +257,8 @@ struct XChainClaimAttestation bool wasLockingChainSend; std::optional dst; MatchFields(TSignedAttestation const& att); - MatchFields(STAmount const& a, bool b, std::optional const& d) - : amount{a}, wasLockingChainSend{b}, dst{d} + MatchFields(STAmount a, bool b, std::optional const& d) + : amount{std::move(a)}, wasLockingChainSend{b}, dst{d} { } }; diff --git a/include/xrpl/protocol/detail/STVar.h b/include/xrpl/protocol/detail/STVar.h index 6984c29525..5526aed8fa 100644 --- a/include/xrpl/protocol/detail/STVar.h +++ b/include/xrpl/protocol/detail/STVar.h @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { struct defaultObject_t { @@ -158,5 +157,4 @@ operator!=(STVar const& lhs, STVar const& rhs) return !(lhs == rhs); } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/include/xrpl/protocol/detail/b58_utils.h b/include/xrpl/protocol/detail/b58_utils.h index 4332d29e5f..ec0e159230 100644 --- a/include/xrpl/protocol/detail/b58_utils.h +++ b/include/xrpl/protocol/detail/b58_utils.h @@ -17,8 +17,8 @@ template using Result = boost::outcome_v2::result; #ifndef _MSC_VER -namespace b58_fast { -namespace detail { + +namespace b58_fast::detail { // This optimizes to what hand written asm would do (single divide) [[nodiscard]] inline std::tuple @@ -170,8 +170,8 @@ b58_10_to_b58_be(std::uint64_t input) return result; } -} // namespace detail -} // namespace b58_fast +} // namespace b58_fast::detail + #endif } // namespace xrpl diff --git a/include/xrpl/protocol/detail/token_errors.h b/include/xrpl/protocol/detail/token_errors.h index 54b283c41a..5511fb06b3 100644 --- a/include/xrpl/protocol/detail/token_errors.h +++ b/include/xrpl/protocol/detail/token_errors.h @@ -30,14 +30,14 @@ class TokenCodecErrcCategory : public std::error_category { public: // Return a short descriptive name for the category - virtual char const* - name() const noexcept override final + char const* + name() const noexcept final { return "TokenCodecError"; } // Return what each enum means in text - virtual std::string - message(int c) const override final + std::string + message(int c) const final { switch (static_cast(c)) { diff --git a/include/xrpl/protocol/jss.h b/include/xrpl/protocol/jss.h index a22810ac8a..0e94285be9 100644 --- a/include/xrpl/protocol/jss.h +++ b/include/xrpl/protocol/jss.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace jss { +namespace xrpl::jss { // JSON static strings @@ -708,5 +707,4 @@ JSS(write_load); // out: GetCounts #undef JSS -} // namespace jss -} // namespace xrpl +} // namespace xrpl::jss diff --git a/include/xrpl/protocol/nft.h b/include/xrpl/protocol/nft.h index 821d146ff7..6dce8d1045 100644 --- a/include/xrpl/protocol/nft.h +++ b/include/xrpl/protocol/nft.h @@ -9,8 +9,7 @@ #include #include -namespace xrpl { -namespace nft { +namespace xrpl::nft { // Separate taxons from regular integers. struct TaxonTag @@ -102,5 +101,4 @@ getIssuer(uint256 const& id) return AccountID::fromVoid(id.data() + 4); } -} // namespace nft -} // namespace xrpl +} // namespace xrpl::nft diff --git a/include/xrpl/protocol/nftPageMask.h b/include/xrpl/protocol/nftPageMask.h index 2f7337c328..9889db5341 100644 --- a/include/xrpl/protocol/nftPageMask.h +++ b/include/xrpl/protocol/nftPageMask.h @@ -4,13 +4,11 @@ #include -namespace xrpl { -namespace nft { +namespace xrpl::nft { // NFT directory pages order their contents based only on the low 96 bits of // the NFToken value. This mask provides easy access to the necessary mask. uint256 constexpr pageMask( std::string_view("0000000000000000000000000000000000000000ffffffffffffffffffffffff")); -} // namespace nft -} // namespace xrpl +} // namespace xrpl::nft diff --git a/include/xrpl/rdb/SociDB.h b/include/xrpl/rdb/SociDB.h index 9c575359c1..43086ed931 100644 --- a/include/xrpl/rdb/SociDB.h +++ b/include/xrpl/rdb/SociDB.h @@ -39,7 +39,7 @@ class BasicConfig; class DBConfig { std::string connectionString_; - explicit DBConfig(std::string const& dbPath); + explicit DBConfig(std::string dbPath); public: DBConfig(BasicConfig const& config, std::string const& dbName); diff --git a/include/xrpl/resource/Charge.h b/include/xrpl/resource/Charge.h index 55b13731b9..436e87e158 100644 --- a/include/xrpl/resource/Charge.h +++ b/include/xrpl/resource/Charge.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** A consumption charge. */ class Charge @@ -16,7 +15,7 @@ public: Charge() = delete; /** Create a charge with the specified cost and name. */ - Charge(value_type cost, std::string const& label = std::string()); + Charge(value_type cost, std::string label = std::string()); /** Return the human readable label associated with the charge. */ std::string const& @@ -47,5 +46,4 @@ private: std::ostream& operator<<(std::ostream& os, Charge const& v); -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/Consumer.h b/include/xrpl/resource/Consumer.h index 45cc221212..21d9f9c74f 100644 --- a/include/xrpl/resource/Consumer.h +++ b/include/xrpl/resource/Consumer.h @@ -5,8 +5,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { struct Entry; class Logic; @@ -79,5 +78,4 @@ private: std::ostream& operator<<(std::ostream& os, Consumer const& v); -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/Disposition.h b/include/xrpl/resource/Disposition.h index 096afb6a6f..22830ad470 100644 --- a/include/xrpl/resource/Disposition.h +++ b/include/xrpl/resource/Disposition.h @@ -1,7 +1,6 @@ #pragma once -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** The disposition of a consumer after applying a load charge. */ enum Disposition { @@ -17,5 +16,4 @@ enum Disposition { drop }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/Fees.h b/include/xrpl/resource/Fees.h index ebda0e98db..366b2d287f 100644 --- a/include/xrpl/resource/Fees.h +++ b/include/xrpl/resource/Fees.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** Schedule of fees charged for imposing load on the server. */ /** @{ */ @@ -30,5 +29,4 @@ extern Charge const feeWarning; // The cost of receiving a warning. extern Charge const feeDrop; // The cost of being dropped for excess load. /** @} */ -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/Gossip.h b/include/xrpl/resource/Gossip.h index 9a70309cc4..e626af37c3 100644 --- a/include/xrpl/resource/Gossip.h +++ b/include/xrpl/resource/Gossip.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** Data format for exchanging consumption information across peers. */ struct Gossip @@ -24,5 +23,4 @@ struct Gossip std::vector items; }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/ResourceManager.h b/include/xrpl/resource/ResourceManager.h index 4aab017691..96e5255272 100644 --- a/include/xrpl/resource/ResourceManager.h +++ b/include/xrpl/resource/ResourceManager.h @@ -10,8 +10,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** Tracks load and resource consumption. */ class Manager : public beast::PropertyStream::Source @@ -20,7 +19,7 @@ protected: Manager(); public: - virtual ~Manager() = 0; + ~Manager() override = 0; /** Create a new endpoint keyed by inbound IP address or the forwarded * IP if proxied. */ @@ -62,5 +61,4 @@ public: std::unique_ptr make_Manager(beast::insight::Collector::ptr const& collector, beast::Journal journal); -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Entry.h b/include/xrpl/resource/detail/Entry.h index 2e71b7cf17..5b2d8b1ba3 100644 --- a/include/xrpl/resource/detail/Entry.h +++ b/include/xrpl/resource/detail/Entry.h @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { using clock_type = beast::abstract_clock; @@ -87,5 +86,4 @@ operator<<(std::ostream& os, Entry const& v) return os; } -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Import.h b/include/xrpl/resource/detail/Import.h index 0377910990..6e2a7b9e7c 100644 --- a/include/xrpl/resource/detail/Import.h +++ b/include/xrpl/resource/detail/Import.h @@ -3,8 +3,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** A set of imported consumer data from a gossip origin. */ struct Import @@ -29,5 +28,4 @@ struct Import std::vector items; }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Key.h b/include/xrpl/resource/detail/Key.h index 0c5164a7d8..c9a233b634 100644 --- a/include/xrpl/resource/detail/Key.h +++ b/include/xrpl/resource/detail/Key.h @@ -4,8 +4,9 @@ #include #include -namespace xrpl { -namespace Resource { +#include + +namespace xrpl::Resource { // The consumer key struct Key @@ -15,7 +16,7 @@ struct Key Key() = delete; - Key(Kind k, beast::IP::Endpoint const& addr) : kind(k), address(addr) + Key(Kind k, beast::IP::Endpoint addr) : kind(k), address(std::move(addr)) { } @@ -45,5 +46,4 @@ struct Key }; }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Kind.h b/include/xrpl/resource/detail/Kind.h index fbb6b65e25..74115ba7f1 100644 --- a/include/xrpl/resource/detail/Kind.h +++ b/include/xrpl/resource/detail/Kind.h @@ -1,7 +1,6 @@ #pragma once -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** * Kind of consumer. @@ -13,5 +12,4 @@ namespace Resource { */ enum Kind { kindInbound, kindOutbound, kindUnlimited }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Logic.h b/include/xrpl/resource/detail/Logic.h index 0682c4a7e9..b775f0a965 100644 --- a/include/xrpl/resource/detail/Logic.h +++ b/include/xrpl/resource/detail/Logic.h @@ -15,8 +15,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { class Logic { @@ -555,5 +554,4 @@ public: } }; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/resource/detail/Tuning.h b/include/xrpl/resource/detail/Tuning.h index d5be5cf0b6..1c903d8cd4 100644 --- a/include/xrpl/resource/detail/Tuning.h +++ b/include/xrpl/resource/detail/Tuning.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { /** Tunable constants. */ enum { @@ -30,5 +29,4 @@ std::chrono::seconds constexpr secondsUntilExpiration{300}; // Number of seconds until imported gossip expires std::chrono::seconds constexpr gossipExpirationSeconds{30}; -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/include/xrpl/server/Manifest.h b/include/xrpl/server/Manifest.h index 2532a3c5bf..ce97c57260 100644 --- a/include/xrpl/server/Manifest.h +++ b/include/xrpl/server/Manifest.h @@ -8,6 +8,7 @@ #include #include #include +#include namespace xrpl { @@ -80,16 +81,16 @@ struct Manifest Manifest() = delete; Manifest( - std::string const& serialized_, + std::string serialized_, PublicKey const& masterKey_, std::optional const& signingKey_, std::uint32_t seq, - std::string const& domain_) - : serialized(serialized_) + std::string domain_) + : serialized(std::move(serialized_)) , masterKey(masterKey_) , signingKey(signingKey_) , sequence(seq) - , domain(domain_) + , domain(std::move(domain_)) { } @@ -154,7 +155,7 @@ deserializeManifest( template < class T, - class = std::enable_if_t::value || std::is_same::value>> + class = std::enable_if_t || std::is_same_v>> std::optional deserializeManifest( std::vector const& v, diff --git a/include/xrpl/server/Port.h b/include/xrpl/server/Port.h index c7acabbc85..93652d422a 100644 --- a/include/xrpl/server/Port.h +++ b/include/xrpl/server/Port.h @@ -15,13 +15,9 @@ #include #include -namespace boost { -namespace asio { -namespace ssl { +namespace boost::asio::ssl { class context; -} // namespace ssl -} // namespace asio -} // namespace boost +} // namespace boost::asio::ssl namespace xrpl { diff --git a/include/xrpl/server/SimpleWriter.h b/include/xrpl/server/SimpleWriter.h index 87b94507a4..0c3b711187 100644 --- a/include/xrpl/server/SimpleWriter.h +++ b/include/xrpl/server/SimpleWriter.h @@ -48,7 +48,7 @@ public: std::vector result; result.reserve(std::distance(buf.begin(), buf.end())); for (auto const b : buf) - result.push_back(b); + result.emplace_back(b); return result; } }; diff --git a/include/xrpl/server/detail/BaseHTTPPeer.h b/include/xrpl/server/detail/BaseHTTPPeer.h index 1e68d5c81c..a0f8e1f318 100644 --- a/include/xrpl/server/detail/BaseHTTPPeer.h +++ b/include/xrpl/server/detail/BaseHTTPPeer.h @@ -23,6 +23,7 @@ #include #include #include +#include #include namespace xrpl { @@ -93,7 +94,7 @@ public: endpoint_type remote_address, ConstBufferSequence const& buffers); - virtual ~BaseHTTPPeer(); + ~BaseHTTPPeer() override; Session& session() @@ -195,7 +196,7 @@ BaseHTTPPeer::BaseHTTPPeer( , handler_(handler) , work_(boost::asio::make_work_guard(executor)) , strand_(boost::asio::make_strand(executor)) - , remote_address_(remote_address) + , remote_address_(std::move(remote_address)) , journal_(journal) { read_buf_.commit( diff --git a/include/xrpl/server/detail/BasePeer.h b/include/xrpl/server/detail/BasePeer.h index 35c6acb198..5bde6924a5 100644 --- a/include/xrpl/server/detail/BasePeer.h +++ b/include/xrpl/server/detail/BasePeer.h @@ -11,6 +11,7 @@ #include #include #include +#include namespace xrpl { @@ -64,7 +65,7 @@ BasePeer::BasePeer( beast::Journal journal) : port_(port) , handler_(handler) - , remote_address_(remote_address) + , remote_address_(std::move(remote_address)) , sink_( journal.sink(), [] { diff --git a/include/xrpl/server/detail/BaseWSPeer.h b/include/xrpl/server/detail/BaseWSPeer.h index 51e089fde5..4251617262 100644 --- a/include/xrpl/server/detail/BaseWSPeer.h +++ b/include/xrpl/server/detail/BaseWSPeer.h @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -352,7 +353,7 @@ BaseWSPeer::on_read(error_code const& ec) auto const& data = rb_.data(); std::vector b; b.reserve(std::distance(data.begin(), data.end())); - std::copy(data.begin(), data.end(), std::back_inserter(b)); + std::ranges::copy(data, std::back_inserter(b)); this->handler_.onWSMessage(impl().shared_from_this(), b); rb_.consume(rb_.size()); } diff --git a/include/xrpl/server/detail/Door.h b/include/xrpl/server/detail/Door.h index 6194e62d3c..346309f078 100644 --- a/include/xrpl/server/detail/Door.h +++ b/include/xrpl/server/detail/Door.h @@ -33,6 +33,7 @@ #include #include #include +#include namespace xrpl { @@ -163,7 +164,7 @@ Door::Detector::Detector( , ioc_(ioc) , stream_(std::move(stream)) , socket_(stream_.socket()) - , remote_address_(remote_address) + , remote_address_(std::move(remote_address)) , strand_(boost::asio::make_strand(ioc_)) , j_(j) { diff --git a/include/xrpl/server/detail/ServerImpl.h b/include/xrpl/server/detail/ServerImpl.h index ce1ca13664..14d2b56fe4 100644 --- a/include/xrpl/server/detail/ServerImpl.h +++ b/include/xrpl/server/detail/ServerImpl.h @@ -81,7 +81,7 @@ private: public: ServerImpl(Handler& handler, boost::asio::io_context& io_context, beast::Journal journal); - ~ServerImpl(); + ~ServerImpl() override; beast::Journal journal() override diff --git a/include/xrpl/server/detail/io_list.h b/include/xrpl/server/detail/io_list.h index b36c54a1f4..ef11d3cea6 100644 --- a/include/xrpl/server/detail/io_list.h +++ b/include/xrpl/server/detail/io_list.h @@ -189,7 +189,7 @@ template std::shared_ptr io_list::emplace(Args&&... args) { - static_assert(std::is_base_of::value, "T must derive from io_list::work"); + static_assert(std::is_base_of_v, "T must derive from io_list::work"); if (closed_) return nullptr; auto sp = std::make_shared(std::forward(args)...); diff --git a/include/xrpl/shamap/SHAMapAccountStateLeafNode.h b/include/xrpl/shamap/SHAMapAccountStateLeafNode.h index 98ac9776c3..2f71d10b0a 100644 --- a/include/xrpl/shamap/SHAMapAccountStateLeafNode.h +++ b/include/xrpl/shamap/SHAMapAccountStateLeafNode.h @@ -28,25 +28,25 @@ public: } intr_ptr::SharedPtr - clone(std::uint32_t cowid) const final override + clone(std::uint32_t cowid) const final { return intr_ptr::make_shared(item_, cowid, hash_); } SHAMapNodeType - getType() const final override + getType() const final { return SHAMapNodeType::tnACCOUNT_STATE; } void - updateHash() final override + updateHash() final { hash_ = SHAMapHash{sha512Half(HashPrefix::leafNode, item_->slice(), item_->key())}; } void - serializeForWire(Serializer& s) const final override + serializeForWire(Serializer& s) const final { s.addRaw(item_->slice()); s.addBitString(item_->key()); @@ -54,7 +54,7 @@ public: } void - serializeWithPrefix(Serializer& s) const final override + serializeWithPrefix(Serializer& s) const final { s.add32(HashPrefix::leafNode); s.addRaw(item_->slice()); diff --git a/include/xrpl/shamap/SHAMapInnerNode.h b/include/xrpl/shamap/SHAMapInnerNode.h index ebaad0d6f7..f2c34cbc1a 100644 --- a/include/xrpl/shamap/SHAMapInnerNode.h +++ b/include/xrpl/shamap/SHAMapInnerNode.h @@ -81,7 +81,7 @@ public: SHAMapInnerNode(SHAMapInnerNode const&) = delete; SHAMapInnerNode& operator=(SHAMapInnerNode const&) = delete; - ~SHAMapInnerNode(); + ~SHAMapInnerNode() override; // Needed to support intrusive weak pointers void diff --git a/include/xrpl/shamap/SHAMapLeafNode.h b/include/xrpl/shamap/SHAMapLeafNode.h index 08f83b463a..a63041c31c 100644 --- a/include/xrpl/shamap/SHAMapLeafNode.h +++ b/include/xrpl/shamap/SHAMapLeafNode.h @@ -25,19 +25,19 @@ public: operator=(SHAMapLeafNode const&) = delete; bool - isLeaf() const final override + isLeaf() const final { return true; } bool - isInner() const final override + isInner() const final { return false; } void - invariants(bool is_root = false) const final override; + invariants(bool is_root = false) const final; public: boost::intrusive_ptr const& @@ -53,7 +53,7 @@ public: setItem(boost::intrusive_ptr i); std::string - getString(SHAMapNodeID const&) const final override; + getString(SHAMapNodeID const&) const final; }; } // namespace xrpl diff --git a/include/xrpl/shamap/SHAMapTreeNode.h b/include/xrpl/shamap/SHAMapTreeNode.h index f837a8643b..55b18a2d12 100644 --- a/include/xrpl/shamap/SHAMapTreeNode.h +++ b/include/xrpl/shamap/SHAMapTreeNode.h @@ -40,11 +40,6 @@ protected: */ std::uint32_t cowid_; -protected: - SHAMapTreeNode(SHAMapTreeNode const&) = delete; - SHAMapTreeNode& - operator=(SHAMapTreeNode const&) = delete; - /** Construct a node @param cowid The identifier of a SHAMap. For more, see #cowid_ @@ -62,7 +57,11 @@ protected: /** @} */ public: - virtual ~SHAMapTreeNode() noexcept = default; + ~SHAMapTreeNode() noexcept override = default; + + SHAMapTreeNode(SHAMapTreeNode const&) = delete; + SHAMapTreeNode& + operator=(SHAMapTreeNode const&) = delete; // Needed to support weak intrusive pointers virtual void diff --git a/include/xrpl/shamap/SHAMapTxLeafNode.h b/include/xrpl/shamap/SHAMapTxLeafNode.h index dcedb26881..368aa2e21b 100644 --- a/include/xrpl/shamap/SHAMapTxLeafNode.h +++ b/include/xrpl/shamap/SHAMapTxLeafNode.h @@ -27,32 +27,32 @@ public: } intr_ptr::SharedPtr - clone(std::uint32_t cowid) const final override + clone(std::uint32_t cowid) const final { return intr_ptr::make_shared(item_, cowid, hash_); } SHAMapNodeType - getType() const final override + getType() const final { return SHAMapNodeType::tnTRANSACTION_NM; } void - updateHash() final override + updateHash() final { hash_ = SHAMapHash{sha512Half(HashPrefix::transactionID, item_->slice())}; } void - serializeForWire(Serializer& s) const final override + serializeForWire(Serializer& s) const final { s.addRaw(item_->slice()); s.add8(wireTypeTransaction); } void - serializeWithPrefix(Serializer& s) const final override + serializeWithPrefix(Serializer& s) const final { s.add32(HashPrefix::transactionID); s.addRaw(item_->slice()); diff --git a/include/xrpl/shamap/SHAMapTxPlusMetaLeafNode.h b/include/xrpl/shamap/SHAMapTxPlusMetaLeafNode.h index 60e645fccc..40be482ed9 100644 --- a/include/xrpl/shamap/SHAMapTxPlusMetaLeafNode.h +++ b/include/xrpl/shamap/SHAMapTxPlusMetaLeafNode.h @@ -40,13 +40,13 @@ public: } void - updateHash() final override + updateHash() final { hash_ = SHAMapHash{sha512Half(HashPrefix::txNode, item_->slice(), item_->key())}; } void - serializeForWire(Serializer& s) const final override + serializeForWire(Serializer& s) const final { s.addRaw(item_->slice()); s.addBitString(item_->key()); @@ -54,7 +54,7 @@ public: } void - serializeWithPrefix(Serializer& s) const final override + serializeWithPrefix(Serializer& s) const final { s.add32(HashPrefix::txNode); s.addRaw(item_->slice()); diff --git a/include/xrpl/tx/Transactor.h b/include/xrpl/tx/Transactor.h index 287f785cd7..52cebe9769 100644 --- a/include/xrpl/tx/Transactor.h +++ b/include/xrpl/tx/Transactor.h @@ -7,6 +7,8 @@ #include #include +#include + namespace xrpl { /** State information when preflighting a tx. */ @@ -24,12 +26,12 @@ public: ServiceRegistry& registry_, STTx const& tx_, uint256 parentBatchId_, - Rules const& rules_, + Rules rules_, ApplyFlags flags_, beast::Journal j_ = beast::Journal{beast::Journal::getNullSink()}) : registry(registry_) , tx(tx_) - , rules(rules_) + , rules(std::move(rules_)) , flags(flags_) , parentBatchId(parentBatchId_) , j(j_) @@ -40,10 +42,10 @@ public: PreflightContext( ServiceRegistry& registry_, STTx const& tx_, - Rules const& rules_, + Rules rules_, ApplyFlags flags_, beast::Journal j_ = beast::Journal{beast::Journal::getNullSink()}) - : registry(registry_), tx(tx_), rules(rules_), flags(flags_), j(j_) + : registry(registry_), tx(tx_), rules(std::move(rules_)), flags(flags_), j(j_) { XRPL_ASSERT((flags_ & tapBATCH) == 0, "Batch apply flag should not be set"); } @@ -116,13 +118,11 @@ protected: AccountID const account_; XRPAmount preFeeBalance_{}; // Balance before fees. +public: + virtual ~Transactor() = default; Transactor(Transactor const&) = delete; Transactor& operator=(Transactor const&) = delete; - -public: - virtual ~Transactor() = default; - enum ConsequencesFactoryType { Normal, Blocker, Custom }; /** Process the transaction. */ ApplyResult diff --git a/include/xrpl/tx/invariants/AMMInvariant.h b/include/xrpl/tx/invariants/AMMInvariant.h index e872c61f76..b15b62cc93 100644 --- a/include/xrpl/tx/invariants/AMMInvariant.h +++ b/include/xrpl/tx/invariants/AMMInvariant.h @@ -20,9 +20,7 @@ class ValidAMM public: enum class ZeroAllowed : bool { No = false, Yes = true }; - ValidAMM() - { - } + ValidAMM() = default; void visitEntry(bool, std::shared_ptr const&, std::shared_ptr const&); diff --git a/include/xrpl/tx/paths/Flow.h b/include/xrpl/tx/paths/Flow.h index f37c9d56c3..c746249866 100644 --- a/include/xrpl/tx/paths/Flow.h +++ b/include/xrpl/tx/paths/Flow.h @@ -6,11 +6,9 @@ namespace xrpl { -namespace path { -namespace detail { +namespace path::detail { struct FlowDebugInfo; -} // namespace detail -} // namespace path +} // namespace path::detail /** Make a payment from the src account to the dst account diff --git a/include/xrpl/tx/paths/Offer.h b/include/xrpl/tx/paths/Offer.h index 0ef2a30052..f79f33658b 100644 --- a/include/xrpl/tx/paths/Offer.h +++ b/include/xrpl/tx/paths/Offer.h @@ -11,6 +11,7 @@ #include #include +#include namespace xrpl { @@ -31,7 +32,7 @@ private: public: TOffer() = default; - TOffer(SLE::pointer const& entry, Quality quality); + TOffer(SLE::pointer entry, Quality quality); /** Returns the quality of the offer. Conceptually, the quality is the ratio of output to input currency. @@ -157,8 +158,8 @@ public: }; template -TOffer::TOffer(SLE::pointer const& entry, Quality quality) - : m_entry(entry), m_quality(quality), m_account(m_entry->getAccountID(sfAccount)) +TOffer::TOffer(SLE::pointer entry, Quality quality) + : m_entry(std::move(entry)), m_quality(quality), m_account(m_entry->getAccountID(sfAccount)) { auto const tp = m_entry->getFieldAmount(sfTakerPays); auto const tg = m_entry->getFieldAmount(sfTakerGets); diff --git a/include/xrpl/tx/paths/detail/FlowDebugInfo.h b/include/xrpl/tx/paths/detail/FlowDebugInfo.h index ce46d0dcde..dd7a0bb9c5 100644 --- a/include/xrpl/tx/paths/detail/FlowDebugInfo.h +++ b/include/xrpl/tx/paths/detail/FlowDebugInfo.h @@ -11,9 +11,7 @@ #include #include -namespace xrpl { -namespace path { -namespace detail { +namespace xrpl::path::detail { // Track performance information of a single payment struct FlowDebugInfo { @@ -352,6 +350,4 @@ balanceDiffsToString(std::optional const& bd) return ostr.str(); }; -} // namespace detail -} // namespace path -} // namespace xrpl +} // namespace xrpl::path::detail diff --git a/include/xrpl/tx/paths/detail/StrandFlow.h b/include/xrpl/tx/paths/detail/StrandFlow.h index d7250dbdc3..52b7d94484 100644 --- a/include/xrpl/tx/paths/detail/StrandFlow.h +++ b/include/xrpl/tx/paths/detail/StrandFlow.h @@ -468,14 +468,14 @@ public: // an unusual corner case. continue; } - strandQualities.push_back({*qual, strand}); + strandQualities.emplace_back(*qual, strand); } } // must stable sort for deterministic order across different c++ // standard library implementations - std::stable_sort( - strandQualities.begin(), - strandQualities.end(), + std::ranges::stable_sort( + strandQualities, + [](auto const& lhs, auto const& rhs) { // higher qualities first return std::get(lhs) > std::get(rhs); diff --git a/src/libxrpl/basics/BasicConfig.cpp b/src/libxrpl/basics/BasicConfig.cpp index 12ead7b6b0..8fed7e5345 100644 --- a/src/libxrpl/basics/BasicConfig.cpp +++ b/src/libxrpl/basics/BasicConfig.cpp @@ -14,7 +14,7 @@ namespace xrpl { -Section::Section(std::string const& name) : name_(name) +Section::Section(std::string name) : name_(std::move(name)) { } diff --git a/src/libxrpl/basics/CountedObject.cpp b/src/libxrpl/basics/CountedObject.cpp index bcdca9dfa4..8eb6ca9dc2 100644 --- a/src/libxrpl/basics/CountedObject.cpp +++ b/src/libxrpl/basics/CountedObject.cpp @@ -31,7 +31,7 @@ CountedObjects::getCounts(int minimumThreshold) const counts.emplace_back(ctr->getName(), ctr->getCount()); } - std::sort(counts.begin(), counts.end()); + std::ranges::sort(counts); return counts; } diff --git a/src/libxrpl/basics/Log.cpp b/src/libxrpl/basics/Log.cpp index d37258776b..e855e1006b 100644 --- a/src/libxrpl/basics/Log.cpp +++ b/src/libxrpl/basics/Log.cpp @@ -20,8 +20,8 @@ namespace xrpl { -Logs::Sink::Sink(std::string const& partition, beast::severities::Severity thresh, Logs& logs) - : beast::Journal::Sink(thresh, false), logs_(logs), partition_(partition) +Logs::Sink::Sink(std::string partition, beast::severities::Severity thresh, Logs& logs) + : beast::Journal::Sink(thresh, false), logs_(logs), partition_(std::move(partition)) { } diff --git a/src/libxrpl/basics/ResolverAsio.cpp b/src/libxrpl/basics/ResolverAsio.cpp index b23ae1272f..fc71666768 100644 --- a/src/libxrpl/basics/ResolverAsio.cpp +++ b/src/libxrpl/basics/ResolverAsio.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -125,7 +126,7 @@ public: HandlerType handler; template - Work(StringSequence const& names_, HandlerType const& handler_) : handler(handler_) + Work(StringSequence const& names_, HandlerType handler_) : handler(std::move(handler_)) { names.reserve(names_.size()); @@ -294,9 +295,10 @@ public: auto const find_whitespace = std::bind(&std::isspace, std::placeholders::_1, std::locale()); - auto host_first = std::find_if_not(str.begin(), str.end(), find_whitespace); + auto host_first = std::ranges::find_if_not(str, find_whitespace); - auto port_last = std::find_if_not(str.rbegin(), str.rend(), find_whitespace).base(); + auto port_last = + std::ranges::find_if_not(std::ranges::reverse_view(str), find_whitespace).base(); // This should only happen for all-whitespace strings if (host_first >= port_last) diff --git a/src/libxrpl/basics/make_SSLContext.cpp b/src/libxrpl/basics/make_SSLContext.cpp index 4f0487c4c2..aa04f22191 100644 --- a/src/libxrpl/basics/make_SSLContext.cpp +++ b/src/libxrpl/basics/make_SSLContext.cpp @@ -27,8 +27,8 @@ #include namespace xrpl { -namespace openssl { -namespace detail { + +namespace openssl::detail { /** The default strength of self-signed RSA certificates. @@ -346,8 +346,7 @@ get_context(std::string cipherList) return c; } -} // namespace detail -} // namespace openssl +} // namespace openssl::detail //------------------------------------------------------------------------------ std::shared_ptr diff --git a/src/libxrpl/beast/core/SemanticVersion.cpp b/src/libxrpl/beast/core/SemanticVersion.cpp index db67791a46..0cf4ac3113 100644 --- a/src/libxrpl/beast/core/SemanticVersion.cpp +++ b/src/libxrpl/beast/core/SemanticVersion.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -60,9 +61,8 @@ chopUInt(int& value, int limit, std::string& input) if (input.empty()) return false; - auto left_iter = std::find_if_not(input.begin(), input.end(), [](std::string::value_type c) { - return std::isdigit(c, std::locale::classic()); - }); + auto left_iter = std::ranges::find_if_not( + input, [](std::string::value_type c) { return std::isdigit(c, std::locale::classic()); }); std::string const item(input.begin(), left_iter); @@ -150,13 +150,13 @@ bool SemanticVersion::parse(std::string_view input) { // May not have leading or trailing whitespace - auto left_iter = std::find_if_not(input.begin(), input.end(), [](std::string::value_type c) { - return std::isspace(c, std::locale::classic()); - }); + auto left_iter = std::ranges::find_if_not( + input, [](std::string::value_type c) { return std::isspace(c, std::locale::classic()); }); - auto right_iter = std::find_if_not(input.rbegin(), input.rend(), [](std::string::value_type c) { - return std::isspace(c, std::locale::classic()); - }).base(); + auto right_iter = + std::ranges::find_if_not(std::ranges::reverse_view(input), [](std::string::value_type c) { + return std::isspace(c, std::locale::classic()); + }).base(); // Must not be empty! if (left_iter >= right_iter) diff --git a/src/libxrpl/beast/insight/Collector.cpp b/src/libxrpl/beast/insight/Collector.cpp index d4a528473b..55abb27c21 100644 --- a/src/libxrpl/beast/insight/Collector.cpp +++ b/src/libxrpl/beast/insight/Collector.cpp @@ -1,8 +1,6 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { Collector::~Collector() = default; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/insight/Groups.cpp b/src/libxrpl/beast/insight/Groups.cpp index 4d8fff0d07..c9e9453468 100644 --- a/src/libxrpl/beast/insight/Groups.cpp +++ b/src/libxrpl/beast/insight/Groups.cpp @@ -15,8 +15,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { namespace detail { @@ -26,12 +25,12 @@ public: std::string const m_name; Collector::ptr m_collector; - GroupImp(std::string const& name_, Collector::ptr const& collector) - : m_name(name_), m_collector(collector) + GroupImp(std::string name_, Collector::ptr collector) + : m_name(std::move(name_)), m_collector(std::move(collector)) { } - ~GroupImp() = default; + ~GroupImp() override = default; std::string const& name() const override @@ -75,9 +74,8 @@ public: return m_collector->make_meter(make_name(name)); } -private: GroupImp& - operator=(GroupImp const&); + operator=(GroupImp const&) = delete; }; //------------------------------------------------------------------------------ @@ -90,11 +88,11 @@ public: Collector::ptr m_collector; Items m_items; - explicit GroupsImp(Collector::ptr const& collector) : m_collector(collector) + explicit GroupsImp(Collector::ptr collector) : m_collector(std::move(collector)) { } - ~GroupsImp() = default; + ~GroupsImp() override = default; Group::ptr const& get(std::string const& name) override @@ -119,5 +117,4 @@ make_Groups(Collector::ptr const& collector) return std::make_unique(collector); } -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/insight/Hook.cpp b/src/libxrpl/beast/insight/Hook.cpp index 82859750cb..a20e33fad4 100644 --- a/src/libxrpl/beast/insight/Hook.cpp +++ b/src/libxrpl/beast/insight/Hook.cpp @@ -2,9 +2,7 @@ #include -namespace beast { -namespace insight { +namespace beast::insight { HookImpl::~HookImpl() = default; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/insight/Metric.cpp b/src/libxrpl/beast/insight/Metric.cpp index fcad390576..b9ac569259 100644 --- a/src/libxrpl/beast/insight/Metric.cpp +++ b/src/libxrpl/beast/insight/Metric.cpp @@ -3,8 +3,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { CounterImpl::~CounterImpl() = default; @@ -13,5 +12,4 @@ EventImpl::~EventImpl() = default; GaugeImpl::~GaugeImpl() = default; MeterImpl::~MeterImpl() = default; -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/insight/NullCollector.cpp b/src/libxrpl/beast/insight/NullCollector.cpp index 44e957f5df..f5bb44bdba 100644 --- a/src/libxrpl/beast/insight/NullCollector.cpp +++ b/src/libxrpl/beast/insight/NullCollector.cpp @@ -15,8 +15,7 @@ #include #include -namespace beast { -namespace insight { +namespace beast::insight { namespace detail { @@ -25,9 +24,8 @@ class NullHookImpl : public HookImpl public: explicit NullHookImpl() = default; -private: NullHookImpl& - operator=(NullHookImpl const&); + operator=(NullHookImpl const&) = delete; }; //------------------------------------------------------------------------------ @@ -42,9 +40,8 @@ public: { } -private: NullCounterImpl& - operator=(NullCounterImpl const&); + operator=(NullCounterImpl const&) = delete; }; //------------------------------------------------------------------------------ @@ -59,9 +56,8 @@ public: { } -private: NullEventImpl& - operator=(NullEventImpl const&); + operator=(NullEventImpl const&) = delete; }; //------------------------------------------------------------------------------ @@ -81,9 +77,8 @@ public: { } -private: NullGaugeImpl& - operator=(NullGaugeImpl const&); + operator=(NullGaugeImpl const&) = delete; }; //------------------------------------------------------------------------------ @@ -98,9 +93,8 @@ public: { } -private: NullMeterImpl& - operator=(NullMeterImpl const&); + operator=(NullMeterImpl const&) = delete; }; //------------------------------------------------------------------------------ @@ -111,7 +105,7 @@ private: public: NullCollectorImp() = default; - ~NullCollectorImp() = default; + ~NullCollectorImp() override = default; Hook make_hook(HookImpl::HandlerType const&) override @@ -154,5 +148,4 @@ NullCollector::New() return std::make_shared(); } -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/insight/StatsDCollector.cpp b/src/libxrpl/beast/insight/StatsDCollector.cpp index 817f6a5982..d11e85830f 100644 --- a/src/libxrpl/beast/insight/StatsDCollector.cpp +++ b/src/libxrpl/beast/insight/StatsDCollector.cpp @@ -41,8 +41,7 @@ #define BEAST_STATSDCOLLECTOR_TRACING_ENABLED 0 #endif -namespace beast { -namespace insight { +namespace beast::insight { namespace detail { @@ -67,17 +66,17 @@ public: class StatsDHookImpl : public HookImpl, public StatsDMetricBase { public: - StatsDHookImpl(HandlerType const& handler, std::shared_ptr const& impl); + StatsDHookImpl(HandlerType handler, std::shared_ptr const& impl); ~StatsDHookImpl() override; void do_process() override; -private: StatsDHookImpl& - operator=(StatsDHookImpl const&); + operator=(StatsDHookImpl const&) = delete; +private: std::shared_ptr m_impl; HandlerType m_handler; }; @@ -87,7 +86,7 @@ private: class StatsDCounterImpl : public CounterImpl, public StatsDMetricBase { public: - StatsDCounterImpl(std::string const& name, std::shared_ptr const& impl); + StatsDCounterImpl(std::string name, std::shared_ptr const& impl); ~StatsDCounterImpl() override; @@ -101,10 +100,10 @@ public: void do_process() override; -private: StatsDCounterImpl& - operator=(StatsDCounterImpl const&); + operator=(StatsDCounterImpl const&) = delete; +private: std::shared_ptr m_impl; std::string m_name; CounterImpl::value_type m_value{0}; @@ -116,9 +115,9 @@ private: class StatsDEventImpl : public EventImpl { public: - StatsDEventImpl(std::string const& name, std::shared_ptr const& impl); + StatsDEventImpl(std::string name, std::shared_ptr const& impl); - ~StatsDEventImpl() = default; + ~StatsDEventImpl() override = default; void notify(EventImpl::value_type const& value) override; @@ -141,7 +140,7 @@ private: class StatsDGaugeImpl : public GaugeImpl, public StatsDMetricBase { public: - StatsDGaugeImpl(std::string const& name, std::shared_ptr const& impl); + StatsDGaugeImpl(std::string name, std::shared_ptr const& impl); ~StatsDGaugeImpl() override; @@ -159,10 +158,10 @@ public: void do_process() override; -private: StatsDGaugeImpl& - operator=(StatsDGaugeImpl const&); + operator=(StatsDGaugeImpl const&) = delete; +private: std::shared_ptr m_impl; std::string m_name; GaugeImpl::value_type m_last_value{0}; @@ -175,9 +174,7 @@ private: class StatsDMeterImpl : public MeterImpl, public StatsDMetricBase { public: - explicit StatsDMeterImpl( - std::string const& name, - std::shared_ptr const& impl); + explicit StatsDMeterImpl(std::string name, std::shared_ptr const& impl); ~StatsDMeterImpl() override; @@ -191,10 +188,10 @@ public: void do_process() override; -private: StatsDMeterImpl& - operator=(StatsDMeterImpl const&); + operator=(StatsDMeterImpl const&) = delete; +private: std::shared_ptr m_impl; std::string m_name; MeterImpl::value_type m_value{0}; @@ -234,10 +231,10 @@ private: } public: - StatsDCollectorImp(IP::Endpoint const& address, std::string const& prefix, Journal journal) + StatsDCollectorImp(IP::Endpoint address, std::string prefix, Journal journal) : m_journal(journal) - , m_address(address) - , m_prefix(prefix) + , m_address(std::move(address)) + , m_prefix(std::move(prefix)) , m_work(boost::asio::make_work_guard(m_io_context)) , m_strand(boost::asio::make_strand(m_io_context)) , m_timer(m_io_context) @@ -484,10 +481,8 @@ public: //------------------------------------------------------------------------------ -StatsDHookImpl::StatsDHookImpl( - HandlerType const& handler, - std::shared_ptr const& impl) - : m_impl(impl), m_handler(handler) +StatsDHookImpl::StatsDHookImpl(HandlerType handler, std::shared_ptr const& impl) + : m_impl(impl), m_handler(std::move(handler)) { m_impl->add(*this); } @@ -506,9 +501,9 @@ StatsDHookImpl::do_process() //------------------------------------------------------------------------------ StatsDCounterImpl::StatsDCounterImpl( - std::string const& name, + std::string name, std::shared_ptr const& impl) - : m_impl(impl), m_name(name) + : m_impl(impl), m_name(std::move(name)) { m_impl->add(*this); } @@ -558,10 +553,8 @@ StatsDCounterImpl::do_process() //------------------------------------------------------------------------------ -StatsDEventImpl::StatsDEventImpl( - std::string const& name, - std::shared_ptr const& impl) - : m_impl(impl), m_name(name) +StatsDEventImpl::StatsDEventImpl(std::string name, std::shared_ptr const& impl) + : m_impl(impl), m_name(std::move(name)) { } @@ -587,10 +580,8 @@ StatsDEventImpl::do_notify(EventImpl::value_type const& value) //------------------------------------------------------------------------------ -StatsDGaugeImpl::StatsDGaugeImpl( - std::string const& name, - std::shared_ptr const& impl) - : m_impl(impl), m_name(name) +StatsDGaugeImpl::StatsDGaugeImpl(std::string name, std::shared_ptr const& impl) + : m_impl(impl), m_name(std::move(name)) { m_impl->add(*this); } @@ -676,10 +667,8 @@ StatsDGaugeImpl::do_process() //------------------------------------------------------------------------------ -StatsDMeterImpl::StatsDMeterImpl( - std::string const& name, - std::shared_ptr const& impl) - : m_impl(impl), m_name(name) +StatsDMeterImpl::StatsDMeterImpl(std::string name, std::shared_ptr const& impl) + : m_impl(impl), m_name(std::move(name)) { m_impl->add(*this); } @@ -737,5 +726,4 @@ StatsDCollector::New(IP::Endpoint const& address, std::string const& prefix, Jou return std::make_shared(address, prefix, journal); } -} // namespace insight -} // namespace beast +} // namespace beast::insight diff --git a/src/libxrpl/beast/net/IPAddressConversion.cpp b/src/libxrpl/beast/net/IPAddressConversion.cpp index 6977168f5e..14cb4bd44d 100644 --- a/src/libxrpl/beast/net/IPAddressConversion.cpp +++ b/src/libxrpl/beast/net/IPAddressConversion.cpp @@ -5,8 +5,7 @@ #include #include -namespace beast { -namespace IP { +namespace beast::IP { Endpoint from_asio(boost::asio::ip::address const& address) @@ -32,5 +31,4 @@ to_asio_endpoint(Endpoint const& endpoint) return boost::asio::ip::tcp::endpoint{endpoint.address(), endpoint.port()}; } -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/libxrpl/beast/net/IPAddressV4.cpp b/src/libxrpl/beast/net/IPAddressV4.cpp index c65e6fcf89..f39e511c4c 100644 --- a/src/libxrpl/beast/net/IPAddressV4.cpp +++ b/src/libxrpl/beast/net/IPAddressV4.cpp @@ -1,7 +1,6 @@ #include -namespace beast { -namespace IP { +namespace beast::IP { bool is_private(AddressV4 const& addr) @@ -25,5 +24,4 @@ get_class(AddressV4 const& addr) return table[(addr.to_uint() & 0xE0000000) >> 29]; } -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/libxrpl/beast/net/IPAddressV6.cpp b/src/libxrpl/beast/net/IPAddressV6.cpp index 5523446e09..3dbadf9779 100644 --- a/src/libxrpl/beast/net/IPAddressV6.cpp +++ b/src/libxrpl/beast/net/IPAddressV6.cpp @@ -4,8 +4,7 @@ #include -namespace beast { -namespace IP { +namespace beast::IP { bool is_private(AddressV6 const& addr) @@ -23,5 +22,4 @@ is_public(AddressV6 const& addr) return !is_private(addr) && !addr.is_multicast(); } -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/libxrpl/beast/net/IPEndpoint.cpp b/src/libxrpl/beast/net/IPEndpoint.cpp index 0a1c0305c8..e1c7394b42 100644 --- a/src/libxrpl/beast/net/IPEndpoint.cpp +++ b/src/libxrpl/beast/net/IPEndpoint.cpp @@ -12,15 +12,15 @@ #include #include #include +#include -namespace beast { -namespace IP { +namespace beast::IP { Endpoint::Endpoint() : m_port(0) { } -Endpoint::Endpoint(Address const& addr, Port port) : m_addr(addr), m_port(port) +Endpoint::Endpoint(Address addr, Port port) : m_addr(std::move(addr)), m_port(port) { } @@ -176,5 +176,4 @@ operator>>(std::istream& is, Endpoint& endpoint) return is; } -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/libxrpl/beast/utility/beast_PropertyStream.cpp b/src/libxrpl/beast/utility/beast_PropertyStream.cpp index 5456faf3eb..ddfe075132 100644 --- a/src/libxrpl/beast/utility/beast_PropertyStream.cpp +++ b/src/libxrpl/beast/utility/beast_PropertyStream.cpp @@ -44,7 +44,7 @@ PropertyStream::Item::operator*() const // //------------------------------------------------------------------------------ -PropertyStream::Proxy::Proxy(Map const& map, std::string const& key) : m_map(&map), m_key(key) +PropertyStream::Proxy::Proxy(Map const& map, std::string key) : m_map(&map), m_key(std::move(key)) { } @@ -152,7 +152,7 @@ PropertyStream::Set::stream() const // //------------------------------------------------------------------------------ -PropertyStream::Source::Source(std::string const& name) : m_name(name), item_(this) +PropertyStream::Source::Source(std::string name) : m_name(std::move(name)), item_(this) { } diff --git a/src/libxrpl/conditions/Condition.cpp b/src/libxrpl/conditions/Condition.cpp index afd61b9727..ce3b55a827 100644 --- a/src/libxrpl/conditions/Condition.cpp +++ b/src/libxrpl/conditions/Condition.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { namespace detail { // The binary encoding of conditions differs based on their @@ -220,5 +219,4 @@ Condition::deserialize(Slice s, std::error_code& ec) return c; } -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/src/libxrpl/conditions/Fulfillment.cpp b/src/libxrpl/conditions/Fulfillment.cpp index 898a7304c2..d1f48bfd7c 100644 --- a/src/libxrpl/conditions/Fulfillment.cpp +++ b/src/libxrpl/conditions/Fulfillment.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { bool match(Fulfillment const& f, Condition const& c) @@ -134,5 +133,4 @@ Fulfillment::deserialize(Slice s, std::error_code& ec) return f; } -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/src/libxrpl/conditions/error.cpp b/src/libxrpl/conditions/error.cpp index 074dca8b24..15ac847118 100644 --- a/src/libxrpl/conditions/error.cpp +++ b/src/libxrpl/conditions/error.cpp @@ -6,8 +6,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { namespace detail { class cryptoconditions_error_category : public std::error_category @@ -112,9 +111,8 @@ std::error_code make_error_code(error ev) { return std::error_code{ - safe_cast::type>(ev), + safe_cast>(ev), detail::get_cryptoconditions_error_category()}; } -} // namespace cryptoconditions -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/src/libxrpl/core/detail/JobQueue.cpp b/src/libxrpl/core/detail/JobQueue.cpp index ff7f46dc7d..d55160f285 100644 --- a/src/libxrpl/core/detail/JobQueue.cpp +++ b/src/libxrpl/core/detail/JobQueue.cpp @@ -179,9 +179,7 @@ JobQueue::addLoadEvents(JobType t, int count, std::chrono::milliseconds elapsed) bool JobQueue::isOverloaded() { - return std::any_of(m_jobData.begin(), m_jobData.end(), [](auto& entry) { - return entry.second.load().isOver(); - }); + return std::ranges::any_of(m_jobData, [](auto& entry) { return entry.second.load().isOver(); }); } Json::Value diff --git a/src/libxrpl/core/detail/LoadEvent.cpp b/src/libxrpl/core/detail/LoadEvent.cpp index 429d8f58fb..a2f8ee7620 100644 --- a/src/libxrpl/core/detail/LoadEvent.cpp +++ b/src/libxrpl/core/detail/LoadEvent.cpp @@ -5,13 +5,14 @@ #include #include +#include namespace xrpl { -LoadEvent::LoadEvent(LoadMonitor& monitor, std::string const& name, bool shouldStart) +LoadEvent::LoadEvent(LoadMonitor& monitor, std::string name, bool shouldStart) : monitor_(monitor) , running_(shouldStart) - , name_(name) + , name_(std::move(name)) , mark_{std::chrono::steady_clock::now()} , timeWaiting_{} , timeRunning_{} diff --git a/src/libxrpl/core/detail/Workers.cpp b/src/libxrpl/core/detail/Workers.cpp index a787fa6a03..e7d63c0900 100644 --- a/src/libxrpl/core/detail/Workers.cpp +++ b/src/libxrpl/core/detail/Workers.cpp @@ -6,17 +6,18 @@ #include #include +#include namespace xrpl { Workers::Workers( Callback& callback, perf::PerfLog* perfLog, - std::string const& threadNames, + std::string threadNames, int numberOfThreads) : m_callback(callback) , perfLog_(perfLog) - , m_threadNames(threadNames) + , m_threadNames(std::move(threadNames)) , m_semaphore(0) , m_activeCount(0) , m_pauseCount(0) @@ -140,8 +141,8 @@ Workers::deleteWorkers(beast::LockFreeStack& stack) //------------------------------------------------------------------------------ -Workers::Worker::Worker(Workers& workers, std::string const& threadName, int const instance) - : m_workers{workers}, threadName_{threadName}, instance_{instance} +Workers::Worker::Worker(Workers& workers, std::string threadName, int const instance) + : m_workers{workers}, threadName_{std::move(threadName)}, instance_{instance} { thread_ = std::thread{&Workers::Worker::run, this}; diff --git a/src/libxrpl/json/Writer.cpp b/src/libxrpl/json/Writer.cpp index a95ddd756d..75b5bc113c 100644 --- a/src/libxrpl/json/Writer.cpp +++ b/src/libxrpl/json/Writer.cpp @@ -63,7 +63,7 @@ lengthWithoutTrailingZeros(std::string const& s) class Writer::Impl { public: - explicit Impl(Output const& output) : output_(output) + explicit Impl(Output output) : output_(std::move(output)) { } ~Impl() = default; @@ -83,8 +83,7 @@ public: { char const ch = (ct == array) ? openBracket : openBrace; output({&ch, 1}); - stack_.push(Collection()); - stack_.top().type = ct; + stack_.emplace(Collection{.type = ct}); } void @@ -198,8 +197,6 @@ private: // JSON collections are either arrays, or objects. struct Collection { - explicit Collection() = default; - /** What type of collection are we in? */ Writer::CollectionType type = Writer::CollectionType::array; @@ -209,7 +206,7 @@ private: #ifndef NDEBUG /** What tags have we already seen in this collection? */ - std::set tags; + std::set tags{}; // NOLINT(readability-redundant-member-init) #endif }; diff --git a/src/libxrpl/json/json_reader.cpp b/src/libxrpl/json/json_reader.cpp index 76035a1cfe..1bb157afc3 100644 --- a/src/libxrpl/json/json_reader.cpp +++ b/src/libxrpl/json/json_reader.cpp @@ -365,8 +365,7 @@ Reader::readNumber() { if (std::isdigit(static_cast(*current_)) == 0) { - auto ret = - std::find(std::begin(extended_tokens), std::end(extended_tokens), *current_); + auto ret = std::ranges::find(extended_tokens, *current_); if (ret == std::end(extended_tokens)) break; diff --git a/src/libxrpl/json/json_value.cpp b/src/libxrpl/json/json_value.cpp index 966be78794..61e0a0c7ee 100644 --- a/src/libxrpl/json/json_value.cpp +++ b/src/libxrpl/json/json_value.cpp @@ -22,7 +22,7 @@ Value const Value::null; class DefaultValueAllocator : public ValueAllocator { public: - virtual ~DefaultValueAllocator() = default; + ~DefaultValueAllocator() override = default; char* makeMemberName(char const* memberName) override @@ -1054,7 +1054,7 @@ Value::getMemberNames() const ObjectValues::const_iterator const itEnd = value_.map_->end(); for (; it != itEnd; ++it) - members.push_back(std::string((*it).first.c_str())); + members.emplace_back((*it).first.c_str()); return members; } diff --git a/src/libxrpl/json/json_valueiterator.cpp b/src/libxrpl/json/json_valueiterator.cpp index b3cf7e6538..595835d9c0 100644 --- a/src/libxrpl/json/json_valueiterator.cpp +++ b/src/libxrpl/json/json_valueiterator.cpp @@ -155,9 +155,7 @@ ValueIterator::ValueIterator(ValueConstIterator const& other) : ValueIteratorBas { } -ValueIterator::ValueIterator(ValueIterator const& other) : ValueIteratorBase(other) -{ -} +ValueIterator::ValueIterator(ValueIterator const& other) = default; ValueIterator& ValueIterator::operator=(SelfType const& other) diff --git a/src/libxrpl/json/json_writer.cpp b/src/libxrpl/json/json_writer.cpp index dc551458c3..7846ed6ce1 100644 --- a/src/libxrpl/json/json_writer.cpp +++ b/src/libxrpl/json/json_writer.cpp @@ -253,9 +253,7 @@ FastWriter::writeValue(Value const& value) // Class StyledWriter // ////////////////////////////////////////////////////////////////// -StyledWriter::StyledWriter() -{ -} +StyledWriter::StyledWriter() = default; std::string StyledWriter::write(Value const& root) @@ -487,7 +485,8 @@ StyledWriter::unindent() // Class StyledStreamWriter // ////////////////////////////////////////////////////////////////// -StyledStreamWriter::StyledStreamWriter(std::string indentation) : indentation_(indentation) +StyledStreamWriter::StyledStreamWriter(std::string indentation) + : indentation_(std::move(indentation)) { } diff --git a/src/libxrpl/ledger/ApplyStateTable.cpp b/src/libxrpl/ledger/ApplyStateTable.cpp index b4eb572d12..d7cbcb06e8 100644 --- a/src/libxrpl/ledger/ApplyStateTable.cpp +++ b/src/libxrpl/ledger/ApplyStateTable.cpp @@ -32,8 +32,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { void ApplyStateTable::apply(RawView& to) const @@ -669,5 +668,4 @@ ApplyStateTable::threadOwners( } } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/libxrpl/ledger/ApplyView.cpp b/src/libxrpl/ledger/ApplyView.cpp index a95005fe64..a3b138dc63 100644 --- a/src/libxrpl/ledger/ApplyView.cpp +++ b/src/libxrpl/ledger/ApplyView.cpp @@ -77,7 +77,7 @@ insertKey( { if (preserveOrder) { - if (std::find(indexes.begin(), indexes.end(), key) != indexes.end()) + if (std::ranges::find(indexes, key) != indexes.end()) Throw("dirInsert: double insertion"); // LCOV_EXCL_LINE indexes.push_back(key); @@ -86,9 +86,9 @@ insertKey( { // We can't be sure if this page is already sorted because it may be a // legacy page we haven't yet touched. Take the time to sort it. - std::sort(indexes.begin(), indexes.end()); + std::ranges::sort(indexes); - auto pos = std::lower_bound(indexes.begin(), indexes.end(), key); + auto pos = std::ranges::lower_bound(indexes, key); if (pos != indexes.end() && key == *pos) Throw("dirInsert: double insertion"); // LCOV_EXCL_LINE @@ -263,7 +263,7 @@ ApplyView::dirRemove(Keylet const& directory, std::uint64_t page, uint256 const& { auto entries = node->getFieldV256(sfIndexes); - auto it = std::find(entries.begin(), entries.end(), key); + auto it = std::ranges::find(entries, key); if (entries.end() == it) return false; diff --git a/src/libxrpl/ledger/ApplyViewBase.cpp b/src/libxrpl/ledger/ApplyViewBase.cpp index 5ad8b28f4c..d617279a80 100644 --- a/src/libxrpl/ledger/ApplyViewBase.cpp +++ b/src/libxrpl/ledger/ApplyViewBase.cpp @@ -13,8 +13,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { ApplyViewBase::ApplyViewBase(ReadView const* base, ApplyFlags flags) : flags_(flags), base_(base) { @@ -165,5 +164,4 @@ ApplyViewBase::rawDestroyXRP(XRPAmount const& fee) items_.destroyXRP(fee); } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/libxrpl/ledger/CachedView.cpp b/src/libxrpl/ledger/CachedView.cpp index 717fd88ae9..6bbe2d828b 100644 --- a/src/libxrpl/ledger/CachedView.cpp +++ b/src/libxrpl/ledger/CachedView.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { bool CachedViewImpl::exists(Keylet const& k) const @@ -75,5 +74,4 @@ CachedViewImpl::read(Keylet const& k) const return sle; } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/libxrpl/ledger/Ledger.cpp b/src/libxrpl/ledger/Ledger.cpp index 62bfed0e85..ab09224914 100644 --- a/src/libxrpl/ledger/Ledger.cpp +++ b/src/libxrpl/ledger/Ledger.cpp @@ -150,7 +150,7 @@ public: Ledger::Ledger( create_genesis_t, - Rules const& rules, + Rules rules, Fees const& fees, std::vector const& amendments, Family& family) @@ -158,7 +158,7 @@ Ledger::Ledger( , txMap_(SHAMapType::TRANSACTION, family) , stateMap_(SHAMapType::STATE, family) , fees_(fees) - , rules_(rules) + , rules_(std::move(rules)) , j_(beast::Journal(beast::Journal::getNullSink())) { header_.seq = 1; @@ -185,7 +185,7 @@ Ledger::Ledger( { auto sle = std::make_shared(keylet::fees()); // Whether featureXRPFees is supported will depend on startup options. - if (std::find(amendments.begin(), amendments.end(), featureXRPFees) != amendments.end()) + if (std::ranges::find(amendments, featureXRPFees) != amendments.end()) { sle->at(sfBaseFeeDrops) = fees.base; sle->at(sfReserveBaseDrops) = fees.reserve; @@ -212,7 +212,7 @@ Ledger::Ledger( LedgerHeader const& info, bool& loaded, bool acquire, - Rules const& rules, + Rules rules, Fees const& fees, Family& family, beast::Journal j) @@ -220,7 +220,7 @@ Ledger::Ledger( , txMap_(SHAMapType::TRANSACTION, info.txHash, family) , stateMap_(SHAMapType::STATE, info.accountHash, family) , fees_(fees) - , rules_(rules) + , rules_(std::move(rules)) , header_(info) , j_(j) { @@ -281,11 +281,11 @@ Ledger::Ledger(Ledger const& prevLedger, NetClock::time_point closeTime) } } -Ledger::Ledger(LedgerHeader const& info, Rules const& rules, Family& family) +Ledger::Ledger(LedgerHeader const& info, Rules rules, Family& family) : mImmutable(true) , txMap_(SHAMapType::TRANSACTION, info.txHash, family) , stateMap_(SHAMapType::STATE, info.accountHash, family) - , rules_(rules) + , rules_(std::move(rules)) , header_(info) , j_(beast::Journal(beast::Journal::getNullSink())) { @@ -295,14 +295,14 @@ Ledger::Ledger(LedgerHeader const& info, Rules const& rules, Family& family) Ledger::Ledger( std::uint32_t ledgerSeq, NetClock::time_point closeTime, - Rules const& rules, + Rules rules, Fees const& fees, Family& family) : mImmutable(false) , txMap_(SHAMapType::TRANSACTION, family) , stateMap_(SHAMapType::STATE, family) , fees_(fees) - , rules_(rules) + , rules_(std::move(rules)) , j_(beast::Journal(beast::Journal::getNullSink())) { header_.seq = ledgerSeq; diff --git a/src/libxrpl/ledger/OpenView.cpp b/src/libxrpl/ledger/OpenView.cpp index ae530f01ff..089788d90b 100644 --- a/src/libxrpl/ledger/OpenView.cpp +++ b/src/libxrpl/ledger/OpenView.cpp @@ -91,12 +91,12 @@ OpenView::OpenView(OpenView const& rhs) OpenView::OpenView( open_ledger_t, ReadView const* base, - Rules const& rules, + Rules rules, std::shared_ptr hold) : monotonic_resource_{ std::make_unique(initialBufferSize)} , txs_{monotonic_resource_.get()} - , rules_(rules) + , rules_(std::move(rules)) , header_(base->header()) , base_(base) , hold_(std::move(hold)) diff --git a/src/libxrpl/ledger/PaymentSandbox.cpp b/src/libxrpl/ledger/PaymentSandbox.cpp index c017449331..e517beaab5 100644 --- a/src/libxrpl/ledger/PaymentSandbox.cpp +++ b/src/libxrpl/ledger/PaymentSandbox.cpp @@ -176,7 +176,7 @@ void DeferredCredits::ownerCount(AccountID const& id, std::uint32_t cur, std::uint32_t next) { auto const v = std::max(cur, next); - auto r = ownerCounts_.emplace(std::make_pair(id, v)); + auto r = ownerCounts_.emplace(id, v); if (!r.second) { auto& mapVal = r.first->second; diff --git a/src/libxrpl/ledger/RawStateTable.cpp b/src/libxrpl/ledger/RawStateTable.cpp index 18bf4eae4f..f267d2f691 100644 --- a/src/libxrpl/ledger/RawStateTable.cpp +++ b/src/libxrpl/ledger/RawStateTable.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { class RawStateTable::sles_iter_impl : public ReadView::sles_type::iter_base { @@ -36,7 +35,7 @@ public: items_t::const_iterator end1, ReadView::sles_type::iterator iter0, ReadView::sles_type::iterator end0) - : iter0_(iter0), end0_(end0), iter1_(iter1), end1_(end1) + : iter0_(std::move(iter0)), end0_(std::move(end0)), iter1_(iter1), end1_(end1) { if (iter0_ != end0_) sle0_ = *iter0_; @@ -357,5 +356,4 @@ RawStateTable::slesUpperBound(ReadView const& base, uint256 const& key) const items_.upper_bound(key), items_.end(), base.sles.upper_bound(key), base.sles.end()); } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp index d70607a26b..f57294a855 100644 --- a/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/NFTokenHelpers.cpp @@ -38,9 +38,7 @@ #include #include -namespace xrpl { - -namespace nft { +namespace xrpl::nft { static std::shared_ptr locatePage(ReadView const& view, AccountID const& owner, uint256 const& id) @@ -130,7 +128,7 @@ getPageForToken( // place to make the split. if (splitIter == narr.end()) { - splitIter = std::find_if(narr.begin(), narr.end(), [&cmp](STObject const& obj) { + splitIter = std::ranges::find_if(narr, [&cmp](STObject const& obj) { return (obj.getFieldH256(sfNFTokenID) & nft::pageMask) == cmp; }); } @@ -240,9 +238,8 @@ changeTokenURI( // Locate the NFT in the page STArray& arr = page->peekFieldArray(sfNFTokens); - auto const nftIter = std::find_if(arr.begin(), arr.end(), [&nftokenID](STObject const& obj) { - return (obj[sfNFTokenID] == nftokenID); - }); + auto const nftIter = std::ranges::find_if( + arr, [&nftokenID](STObject const& obj) { return (obj[sfNFTokenID] == nftokenID); }); if (nftIter == arr.end()) return tecINTERNAL; // LCOV_EXCL_LINE @@ -321,13 +318,8 @@ mergePages(ApplyView& view, std::shared_ptr const& p1, std::shared_ptr STArray x(p1arr.size() + p2arr.size()); - std::merge( - p1arr.begin(), - p1arr.end(), - p2arr.begin(), - p2arr.end(), - std::back_inserter(x), - [](STObject const& a, STObject const& b) { + std::ranges::merge( + p1arr, p2arr, std::back_inserter(x), [](STObject const& a, STObject const& b) { return compareTokens(a.getFieldH256(sfNFTokenID), b.getFieldH256(sfNFTokenID)); }); @@ -383,9 +375,8 @@ removeToken( auto arr = curr->getFieldArray(sfNFTokens); { - auto x = std::find_if(arr.begin(), arr.end(), [&nftokenID](STObject const& obj) { - return (obj[sfNFTokenID] == nftokenID); - }); + auto x = std::ranges::find_if( + arr, [&nftokenID](STObject const& obj) { return (obj[sfNFTokenID] == nftokenID); }); if (x == arr.end()) return tecNO_ENTRY; @@ -1103,5 +1094,4 @@ checkTrustlineDeepFrozen( return tesSUCCESS; } -} // namespace nft -} // namespace xrpl +} // namespace xrpl::nft diff --git a/src/libxrpl/ledger/helpers/PermissionedDEXHelpers.cpp b/src/libxrpl/ledger/helpers/PermissionedDEXHelpers.cpp index 2dfdbc29b2..d65462f0cd 100644 --- a/src/libxrpl/ledger/helpers/PermissionedDEXHelpers.cpp +++ b/src/libxrpl/ledger/helpers/PermissionedDEXHelpers.cpp @@ -14,8 +14,7 @@ #include -namespace xrpl { -namespace permissioned_dex { +namespace xrpl::permissioned_dex { bool accountInDomain(ReadView const& view, AccountID const& account, Domain const& domainID) @@ -30,15 +29,14 @@ accountInDomain(ReadView const& view, AccountID const& account, Domain const& do auto const& credentials = sleDomain->getFieldArray(sfAcceptedCredentials); - bool const inDomain = - std::any_of(credentials.begin(), credentials.end(), [&](auto const& credential) { - auto const sleCred = view.read( - keylet::credential(account, credential[sfIssuer], credential[sfCredentialType])); - if (!sleCred || !sleCred->isFlag(lsfAccepted)) - return false; + bool const inDomain = std::ranges::any_of(credentials, [&](auto const& credential) { + auto const sleCred = view.read( + keylet::credential(account, credential[sfIssuer], credential[sfCredentialType])); + if (!sleCred || !sleCred->isFlag(lsfAccepted)) + return false; - return !credentials::checkExpired(sleCred, view.header().parentCloseTime); - }); + return !credentials::checkExpired(sleCred, view.header().parentCloseTime); + }); return inDomain; } @@ -87,6 +85,4 @@ offerInDomain( return accountInDomain(view, sleOffer->getAccountID(sfAccount), domainID); } -} // namespace permissioned_dex - -} // namespace xrpl +} // namespace xrpl::permissioned_dex diff --git a/src/libxrpl/nodestore/BatchWriter.cpp b/src/libxrpl/nodestore/BatchWriter.cpp index dd32bd9e00..9da6f504a9 100644 --- a/src/libxrpl/nodestore/BatchWriter.cpp +++ b/src/libxrpl/nodestore/BatchWriter.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { BatchWriter::BatchWriter(Callback& callback, Scheduler& scheduler) : m_callback(callback), m_scheduler(scheduler) @@ -108,5 +107,4 @@ BatchWriter::waitForWriting() mWriteCondition.wait(sl); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/Database.cpp b/src/libxrpl/nodestore/Database.cpp index c265c4c63b..ee8d2f56aa 100644 --- a/src/libxrpl/nodestore/Database.cpp +++ b/src/libxrpl/nodestore/Database.cpp @@ -29,8 +29,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { Database::Database( Scheduler& scheduler, @@ -276,5 +275,4 @@ Database::getCountsJson(Json::Value& obj) obj[jss::node_reads_duration_us] = std::to_string(fetchDurationUs_); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/DatabaseNodeImp.cpp b/src/libxrpl/nodestore/DatabaseNodeImp.cpp index 2e9f4f772e..7722f711bb 100644 --- a/src/libxrpl/nodestore/DatabaseNodeImp.cpp +++ b/src/libxrpl/nodestore/DatabaseNodeImp.cpp @@ -20,8 +20,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { void DatabaseNodeImp::store(NodeObjectType type, Blob&& data, uint256 const& hash, std::uint32_t) @@ -111,5 +110,4 @@ DatabaseNodeImp::fetchBatch(std::vector const& hashes) return results; } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/DatabaseRotatingImp.cpp b/src/libxrpl/nodestore/DatabaseRotatingImp.cpp index 7162fcfbe5..ef7431f5a3 100644 --- a/src/libxrpl/nodestore/DatabaseRotatingImp.cpp +++ b/src/libxrpl/nodestore/DatabaseRotatingImp.cpp @@ -21,8 +21,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { DatabaseRotatingImp::DatabaseRotatingImp( Scheduler& scheduler, @@ -199,5 +198,4 @@ DatabaseRotatingImp::for_each(std::function)> f archive->for_each(f); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/DecodedBlob.cpp b/src/libxrpl/nodestore/DecodedBlob.cpp index 6b708aa66e..1d60f2af86 100644 --- a/src/libxrpl/nodestore/DecodedBlob.cpp +++ b/src/libxrpl/nodestore/DecodedBlob.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { DecodedBlob::DecodedBlob(void const* key, void const* value, int valueBytes) { @@ -74,5 +73,4 @@ DecodedBlob::createObject() return object; } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/DummyScheduler.cpp b/src/libxrpl/nodestore/DummyScheduler.cpp index 26fca36c31..1f93ed3d0f 100644 --- a/src/libxrpl/nodestore/DummyScheduler.cpp +++ b/src/libxrpl/nodestore/DummyScheduler.cpp @@ -3,8 +3,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { void DummyScheduler::scheduleTask(Task& task) @@ -23,5 +22,4 @@ DummyScheduler::onBatchWrite(BatchWriteReport const& report) { } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/ManagerImp.cpp b/src/libxrpl/nodestore/ManagerImp.cpp index 2ffeebca77..40a48f0875 100644 --- a/src/libxrpl/nodestore/ManagerImp.cpp +++ b/src/libxrpl/nodestore/ManagerImp.cpp @@ -21,9 +21,7 @@ #include #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { ManagerImp& ManagerImp::instance() @@ -106,8 +104,8 @@ void ManagerImp::erase(Factory& factory) { std::lock_guard const _(mutex_); - auto const iter = std::find_if( - list_.begin(), list_.end(), [&factory](Factory* other) { return other == &factory; }); + auto const iter = + std::ranges::find_if(list_, [&factory](Factory* other) { return other == &factory; }); XRPL_ASSERT(iter != list_.end(), "xrpl::NodeStore::ManagerImp::erase : valid input"); list_.erase(iter); } @@ -116,9 +114,8 @@ Factory* ManagerImp::find(std::string const& name) { std::lock_guard const _(mutex_); - auto const iter = std::find_if(list_.begin(), list_.end(), [&name](Factory* other) { - return boost::iequals(name, other->getName()); - }); + auto const iter = std::ranges::find_if( + list_, [&name](Factory* other) { return boost::iequals(name, other->getName()); }); if (iter == list_.end()) return nullptr; return *iter; @@ -132,5 +129,4 @@ Manager::instance() return ManagerImp::instance(); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/backend/MemoryFactory.cpp b/src/libxrpl/nodestore/backend/MemoryFactory.cpp index cf5df38389..2f94783b8b 100644 --- a/src/libxrpl/nodestore/backend/MemoryFactory.cpp +++ b/src/libxrpl/nodestore/backend/MemoryFactory.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { struct MemoryDB { @@ -239,5 +238,4 @@ MemoryFactory::createInstance( return std::make_unique(keyBytes, keyValues, journal); } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/backend/NuDBFactory.cpp b/src/libxrpl/nodestore/backend/NuDBFactory.cpp index ba1068a097..7fb3aec843 100644 --- a/src/libxrpl/nodestore/backend/NuDBFactory.cpp +++ b/src/libxrpl/nodestore/backend/NuDBFactory.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class NuDBBackend : public Backend { @@ -464,5 +463,4 @@ registerNuDBFactory(Manager& manager) static NuDBFactory const instance{manager}; } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/backend/NullFactory.cpp b/src/libxrpl/nodestore/backend/NullFactory.cpp index 4355b29717..94cd71bd11 100644 --- a/src/libxrpl/nodestore/backend/NullFactory.cpp +++ b/src/libxrpl/nodestore/backend/NullFactory.cpp @@ -15,15 +15,14 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class NullBackend : public Backend { public: NullBackend() = default; - ~NullBackend() = default; + ~NullBackend() override = default; std::string getName() override @@ -132,5 +131,4 @@ registerNullFactory(Manager& manager) static NullFactory const instance{manager}; } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/libxrpl/nodestore/backend/RocksDBFactory.cpp b/src/libxrpl/nodestore/backend/RocksDBFactory.cpp index 6b01ccf7a0..3e0957edea 100644 --- a/src/libxrpl/nodestore/backend/RocksDBFactory.cpp +++ b/src/libxrpl/nodestore/backend/RocksDBFactory.cpp @@ -46,8 +46,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class RocksDBEnv : public rocksdb::EnvWrapper { @@ -490,7 +489,6 @@ registerRocksDBFactory(Manager& manager) static RocksDBFactory const instance{manager}; } -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore #endif diff --git a/src/libxrpl/protocol/BuildInfo.cpp b/src/libxrpl/protocol/BuildInfo.cpp index ba43e54814..c732e95a87 100644 --- a/src/libxrpl/protocol/BuildInfo.cpp +++ b/src/libxrpl/protocol/BuildInfo.cpp @@ -13,9 +13,7 @@ #include #include -namespace xrpl { - -namespace BuildInfo { +namespace xrpl::BuildInfo { namespace { @@ -123,7 +121,7 @@ encodeSoftwareVersion(std::string_view versionStr) std::uint8_t hik) -> std::uint8_t { std::uint8_t ret = 0; - if (prefix != identifier.substr(0, prefix.length())) + if (!identifier.starts_with(prefix)) return 0; if (!beast::lexicalCastChecked( @@ -174,6 +172,4 @@ isNewerVersion(std::uint64_t version) return false; } -} // namespace BuildInfo - -} // namespace xrpl +} // namespace xrpl::BuildInfo diff --git a/src/libxrpl/protocol/Feature.cpp b/src/libxrpl/protocol/Feature.cpp index 8e755e2d0f..1686d0e52a 100644 --- a/src/libxrpl/protocol/Feature.cpp +++ b/src/libxrpl/protocol/Feature.cpp @@ -71,8 +71,8 @@ class FeatureCollections uint256 feature; Feature() = delete; - explicit Feature(std::string const& name_, uint256 const& feature_) - : name(name_), feature(feature_) + explicit Feature(std::string name_, uint256 const& feature_) + : name(std::move(name_)), feature(feature_) { } @@ -429,6 +429,8 @@ enforceValidFeatureName(auto fn) -> char const* #include +#include + #undef XRPL_RETIRE_FEATURE #pragma pop_macro("XRPL_RETIRE_FEATURE") #undef XRPL_RETIRE_FIX diff --git a/src/libxrpl/protocol/IOUAmount.cpp b/src/libxrpl/protocol/IOUAmount.cpp index 075983d9d8..69b763dbab 100644 --- a/src/libxrpl/protocol/IOUAmount.cpp +++ b/src/libxrpl/protocol/IOUAmount.cpp @@ -207,7 +207,7 @@ mulRatio(IOUAmount const& amt, std::uint32_t num, std::uint32_t den, bool roundU static auto log10Floor = [](uint128_t const& v) { // Find the index of the first element >= the requested element, the // index is the log of the element in the log table. - auto const l = std::lower_bound(powerTable.begin(), powerTable.end(), v); + auto const l = std::ranges::lower_bound(powerTable, v); int index = std::distance(powerTable.begin(), l); // If we're not equal, subtract to get the floor if (*l != v) @@ -219,7 +219,7 @@ mulRatio(IOUAmount const& amt, std::uint32_t num, std::uint32_t den, bool roundU static auto log10Ceil = [](uint128_t const& v) { // Find the index of the first element >= the requested element, the // index is the log of the element in the log table. - auto const l = std::lower_bound(powerTable.begin(), powerTable.end(), v); + auto const l = std::ranges::lower_bound(powerTable, v); return int(std::distance(powerTable.begin(), l)); }; diff --git a/src/libxrpl/protocol/NFTSyntheticSerializer.cpp b/src/libxrpl/protocol/NFTSyntheticSerializer.cpp index e6fb2f2482..9982f05b0f 100644 --- a/src/libxrpl/protocol/NFTSyntheticSerializer.cpp +++ b/src/libxrpl/protocol/NFTSyntheticSerializer.cpp @@ -9,8 +9,7 @@ #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { void insertNFTSyntheticInJson( @@ -22,5 +21,4 @@ insertNFTSyntheticInJson( insertNFTokenOfferID(response[jss::meta], transaction, transactionMeta); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/libxrpl/protocol/NFTokenID.cpp b/src/libxrpl/protocol/NFTokenID.cpp index 359a662529..fc32a7b4e8 100644 --- a/src/libxrpl/protocol/NFTokenID.cpp +++ b/src/libxrpl/protocol/NFTokenID.cpp @@ -56,11 +56,10 @@ getNFTokenIDFromPage(TxMeta const& transactionMeta) { STArray const& toAddPrevNFTs = node.peekAtField(sfNewFields).downcast().getFieldArray(sfNFTokens); - std::transform( - toAddPrevNFTs.begin(), - toAddPrevNFTs.end(), - std::back_inserter(finalIDs), - [](STObject const& nft) { return nft.getFieldH256(sfNFTokenID); }); + std::ranges::transform( + toAddPrevNFTs, std::back_inserter(finalIDs), [](STObject const& nft) { + return nft.getFieldH256(sfNFTokenID); + }); } else if (fName == sfModifiedNode) { @@ -79,19 +78,17 @@ getNFTokenIDFromPage(TxMeta const& transactionMeta) continue; STArray const& toAddPrevNFTs = previousFields.getFieldArray(sfNFTokens); - std::transform( - toAddPrevNFTs.begin(), - toAddPrevNFTs.end(), - std::back_inserter(prevIDs), - [](STObject const& nft) { return nft.getFieldH256(sfNFTokenID); }); + std::ranges::transform( + toAddPrevNFTs, std::back_inserter(prevIDs), [](STObject const& nft) { + return nft.getFieldH256(sfNFTokenID); + }); STArray const& toAddFinalNFTs = node.peekAtField(sfFinalFields).downcast().getFieldArray(sfNFTokens); - std::transform( - toAddFinalNFTs.begin(), - toAddFinalNFTs.end(), - std::back_inserter(finalIDs), - [](STObject const& nft) { return nft.getFieldH256(sfNFTokenID); }); + std::ranges::transform( + toAddFinalNFTs, std::back_inserter(finalIDs), [](STObject const& nft) { + return nft.getFieldH256(sfNFTokenID); + }); } } @@ -102,15 +99,14 @@ getNFTokenIDFromPage(TxMeta const& transactionMeta) // Find the first NFT ID that doesn't match. We're looking for an // added NFT, so the one we want will be the mismatch in finalIDs. - auto const diff = - std::mismatch(finalIDs.begin(), finalIDs.end(), prevIDs.begin(), prevIDs.end()); + auto const diff = std::ranges::mismatch(finalIDs, prevIDs); // There should always be a difference so the returned finalIDs // iterator should never be end(). But better safe than sorry. - if (diff.first == finalIDs.end()) + if (diff.in1 == finalIDs.end()) return std::nullopt; - return *diff.first; + return *diff.in1; } std::vector @@ -130,8 +126,9 @@ getNFTokenIDFromDeletedOffer(TxMeta const& transactionMeta) // Deduplicate the NFT IDs because multiple offers could affect the same NFT // and hence we would get duplicate NFT IDs - sort(tokenIDResult.begin(), tokenIDResult.end()); - tokenIDResult.erase(unique(tokenIDResult.begin(), tokenIDResult.end()), tokenIDResult.end()); + std::ranges::sort(tokenIDResult); + auto const uniq = std::ranges::unique(tokenIDResult); + tokenIDResult.erase(uniq.begin(), uniq.end()); return tokenIDResult; } diff --git a/src/libxrpl/protocol/STArray.cpp b/src/libxrpl/protocol/STArray.cpp index 726ac4907b..8e841c1fbb 100644 --- a/src/libxrpl/protocol/STArray.cpp +++ b/src/libxrpl/protocol/STArray.cpp @@ -175,7 +175,7 @@ STArray::isDefault() const void STArray::sort(bool (*compare)(STObject const&, STObject const&)) { - std::sort(v_.begin(), v_.end(), compare); + std::ranges::sort(v_, compare); } } // namespace xrpl diff --git a/src/libxrpl/protocol/STNumber.cpp b/src/libxrpl/protocol/STNumber.cpp index dfb55064e2..25aa9eaa05 100644 --- a/src/libxrpl/protocol/STNumber.cpp +++ b/src/libxrpl/protocol/STNumber.cpp @@ -213,7 +213,7 @@ partsFromString(std::string const& number) } } - return {mantissa, exponent, negative}; + return {.mantissa = mantissa, .exponent = exponent, .negative = negative}; } STNumber diff --git a/src/libxrpl/protocol/STObject.cpp b/src/libxrpl/protocol/STObject.cpp index f78ba9671a..baece3ca56 100644 --- a/src/libxrpl/protocol/STObject.cpp +++ b/src/libxrpl/protocol/STObject.cpp @@ -167,9 +167,8 @@ STObject::applyTemplate(SOTemplate const& type) v.reserve(type.size()); for (auto const& e : type) { - auto const iter = std::find_if(v_.begin(), v_.end(), [&](detail::STVar const& b) { - return b.get().getFName() == e.sField(); - }); + auto const iter = std::ranges::find_if( + v_, [&](detail::STVar const& b) { return b.get().getFName() == e.sField(); }); if (iter != v_.end()) { if ((e.style() == soeDEFAULT) && iter->get().isDefault()) @@ -261,10 +260,9 @@ STObject::set(SerialIter& sit, int depth) // duplicate fields. This is a key invariant: auto const sf = getSortedFields(*this, withAllFields); - auto const dup = - std::adjacent_find(sf.cbegin(), sf.cend(), [](STBase const* lhs, STBase const* rhs) { - return lhs->getFName() == rhs->getFName(); - }); + auto const dup = std::ranges::adjacent_find(sf, [](STBase const* lhs, STBase const* rhs) { + return lhs->getFName() == rhs->getFName(); + }); if (dup != sf.cend()) Throw("Duplicate field detected"); @@ -349,7 +347,7 @@ STObject::isEquivalent(STBase const& t) const if (mType != nullptr && v->mType == mType) { - return std::equal( + return std::ranges::equal( begin(), end(), v->begin(), v->end(), [](STBase const& st1, STBase const& st2) { return (st1.getSType() == st2.getSType()) && st1.isEquivalent(st2); }); @@ -358,10 +356,9 @@ STObject::isEquivalent(STBase const& t) const auto const sf1 = getSortedFields(*this, withAllFields); auto const sf2 = getSortedFields(*v, withAllFields); - return std::equal( - sf1.begin(), sf1.end(), sf2.begin(), sf2.end(), [](STBase const* st1, STBase const* st2) { - return (st1->getSType() == st2->getSType()) && st1->isEquivalent(*st2); - }); + return std::ranges::equal(sf1, sf2, [](STBase const* st1, STBase const* st2) { + return (st1->getSType() == st2->getSType()) && st1->isEquivalent(*st2); + }); } uint256 @@ -929,7 +926,7 @@ STObject::getSortedFields(STObject const& objToSort, WhichFields whichFields) } // Sort the fields by fieldCode. - std::sort(sf.begin(), sf.end(), [](STBase const* lhs, STBase const* rhs) { + std::ranges::sort(sf, [](STBase const* lhs, STBase const* rhs) { return lhs->getFName().fieldCode < rhs->getFName().fieldCode; }); diff --git a/src/libxrpl/protocol/STParsedJSON.cpp b/src/libxrpl/protocol/STParsedJSON.cpp index 3b2960dac9..01a52c88ec 100644 --- a/src/libxrpl/protocol/STParsedJSON.cpp +++ b/src/libxrpl/protocol/STParsedJSON.cpp @@ -50,7 +50,7 @@ namespace xrpl { namespace STParsedJSONDetail { template -constexpr std::enable_if_t::value && std::is_signed::value, U> +constexpr std::enable_if_t && std::is_signed_v, U> to_unsigned(S value) { if (value < 0 || std::numeric_limits::max() < value) @@ -59,7 +59,7 @@ to_unsigned(S value) } template -constexpr std::enable_if_t::value && std::is_unsigned::value, U1> +constexpr std::enable_if_t && std::is_unsigned_v, U1> to_unsigned(U2 value) { if (std::numeric_limits::max() < value) diff --git a/src/libxrpl/protocol/STVar.cpp b/src/libxrpl/protocol/STVar.cpp index 257cfa522d..652328f613 100644 --- a/src/libxrpl/protocol/STVar.cpp +++ b/src/libxrpl/protocol/STVar.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { defaultObject_t defaultObject; nonPresentObject_t nonPresentObject; @@ -228,5 +227,4 @@ STVar::constructST(SerializedTypeID id, int depth, Args&&... args) } } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/libxrpl/protocol/SecretKey.cpp b/src/libxrpl/protocol/SecretKey.cpp index 7496edab7f..01d3c29f9e 100644 --- a/src/libxrpl/protocol/SecretKey.cpp +++ b/src/libxrpl/protocol/SecretKey.cpp @@ -77,7 +77,7 @@ deriveDeterministicRootKey(Seed const& seed) // | seed | seq| std::array buf{}; - std::copy(seed.begin(), seed.end(), buf.begin()); + std::ranges::copy(seed, buf.begin()); // The odds that this loop executes more than once are negligible // but *just* in case someone managed to generate a key that required @@ -136,7 +136,7 @@ private: // | generator | seq| cnt| std::array buf{}; - std::copy(generator_.begin(), generator_.end(), buf.begin()); + std::ranges::copy(generator_, buf.begin()); copy_uint32(buf.data() + 33, seq); // The odds that this loop executes more than once are negligible diff --git a/src/libxrpl/protocol/Serializer.cpp b/src/libxrpl/protocol/Serializer.cpp index 26d985c4f9..576e3f3e5f 100644 --- a/src/libxrpl/protocol/Serializer.cpp +++ b/src/libxrpl/protocol/Serializer.cpp @@ -443,7 +443,7 @@ template T SerialIter::getRawHelper(int size) { - static_assert(std::is_same::value || std::is_same::value, ""); + static_assert(std::is_same_v || std::is_same_v, ""); if (remain_ < size) Throw("invalid SerialIter getRaw"); T result(size); diff --git a/src/libxrpl/protocol/UintTypes.cpp b/src/libxrpl/protocol/UintTypes.cpp index 0ae41a8c5c..4206ec8cf5 100644 --- a/src/libxrpl/protocol/UintTypes.cpp +++ b/src/libxrpl/protocol/UintTypes.cpp @@ -78,7 +78,7 @@ to_currency(Currency& currency, std::string const& code) currency = beast::zero; - std::copy(code.begin(), code.end(), currency.begin() + detail::isoCodeOffset); + std::ranges::copy(code, currency.begin() + detail::isoCodeOffset); return true; } diff --git a/src/libxrpl/protocol/XChainAttestations.cpp b/src/libxrpl/protocol/XChainAttestations.cpp index ab77aa1758..8d3e62b31e 100644 --- a/src/libxrpl/protocol/XChainAttestations.cpp +++ b/src/libxrpl/protocol/XChainAttestations.cpp @@ -31,14 +31,14 @@ AttestationBase::AttestationBase( PublicKey const& publicKey_, Buffer signature_, AccountID const& sendingAccount_, - STAmount const& sendingAmount_, + STAmount sendingAmount_, AccountID const& rewardAccount_, bool wasLockingChainSend_) : attestationSignerAccount{attestationSignerAccount_} , publicKey{publicKey_} , signature{std::move(signature_)} , sendingAccount{sendingAccount_} - , sendingAmount{sendingAmount_} + , sendingAmount{std::move(sendingAmount_)} , rewardAccount{rewardAccount_} , wasLockingChainSend{wasLockingChainSend_} { @@ -261,7 +261,7 @@ AttestationCreateAccount::AttestationCreateAccount( Buffer signature_, AccountID const& sendingAccount_, STAmount const& sendingAmount_, - STAmount const& rewardAmount_, + STAmount rewardAmount_, AccountID const& rewardAccount_, bool wasLockingChainSend_, std::uint64_t createCount_, @@ -276,7 +276,7 @@ AttestationCreateAccount::AttestationCreateAccount( wasLockingChainSend_) , createCount{createCount_} , toCreate{toCreate_} - , rewardAmount{rewardAmount_} + , rewardAmount{std::move(rewardAmount_)} { } diff --git a/src/libxrpl/protocol/tokens.cpp b/src/libxrpl/protocol/tokens.cpp index fc90151309..3cb0e3f3dd 100644 --- a/src/libxrpl/protocol/tokens.cpp +++ b/src/libxrpl/protocol/tokens.cpp @@ -282,7 +282,7 @@ decodeBase58(std::string const& s) --remain; } // Skip leading zeroes in b256. - auto iter = std::find_if(b256.begin(), b256.end(), [](unsigned char c) { return c != 0; }); + auto iter = std::ranges::find_if(b256, [](unsigned char c) { return c != 0; }); std::string result; result.reserve(zeroes + (b256.end() - iter)); result.assign(zeroes, 0x00); diff --git a/src/libxrpl/rdb/SociDB.cpp b/src/libxrpl/rdb/SociDB.cpp index cbba2800a1..c6e40ae90b 100644 --- a/src/libxrpl/rdb/SociDB.cpp +++ b/src/libxrpl/rdb/SociDB.cpp @@ -66,7 +66,7 @@ getSociInit(BasicConfig const& config, std::string const& dbName) } // namespace detail -DBConfig::DBConfig(std::string const& dbPath) : connectionString_(dbPath) +DBConfig::DBConfig(std::string dbPath) : connectionString_(std::move(dbPath)) { } diff --git a/src/libxrpl/resource/Charge.cpp b/src/libxrpl/resource/Charge.cpp index eece5355f0..8626115c4c 100644 --- a/src/libxrpl/resource/Charge.cpp +++ b/src/libxrpl/resource/Charge.cpp @@ -4,11 +4,11 @@ #include #include #include +#include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { -Charge::Charge(value_type cost, std::string const& label) : m_cost(cost), m_label(label) +Charge::Charge(value_type cost, std::string label) : m_cost(cost), m_label(std::move(label)) { } @@ -57,5 +57,4 @@ Charge::operator*(value_type m) const return Charge(m_cost * m, m_label); } -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/src/libxrpl/resource/Consumer.cpp b/src/libxrpl/resource/Consumer.cpp index d30408f582..3d03fa05db 100644 --- a/src/libxrpl/resource/Consumer.cpp +++ b/src/libxrpl/resource/Consumer.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { Consumer::Consumer(Logic& logic, Entry& entry) : m_logic(&logic), m_entry(&entry) { @@ -143,5 +142,4 @@ operator<<(std::ostream& os, Consumer const& v) return os; } -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/src/libxrpl/resource/Fees.cpp b/src/libxrpl/resource/Fees.cpp index f2e9c80d42..e9f47b3e7d 100644 --- a/src/libxrpl/resource/Fees.cpp +++ b/src/libxrpl/resource/Fees.cpp @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { Charge const feeMalformedRequest(200, "malformed request"); Charge const feeRequestNoReply(10, "unsatisfiable request"); @@ -26,5 +25,4 @@ Charge const feeDrop(6000, "dropped"); // See also Resource::Logic::charge for log level cutoff values -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/src/libxrpl/resource/ResourceManager.cpp b/src/libxrpl/resource/ResourceManager.cpp index 7d7dee315b..6652c1a66b 100644 --- a/src/libxrpl/resource/ResourceManager.cpp +++ b/src/libxrpl/resource/ResourceManager.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { class ManagerImp : public Manager { @@ -165,5 +164,4 @@ make_Manager(beast::insight::Collector::ptr const& collector, beast::Journal jou return std::make_unique(collector, journal); } -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/src/libxrpl/server/Manifest.cpp b/src/libxrpl/server/Manifest.cpp index ca1835a929..d2d7bd2e38 100644 --- a/src/libxrpl/server/Manifest.cpp +++ b/src/libxrpl/server/Manifest.cpp @@ -289,7 +289,10 @@ loadValidatorToken(std::vector const& blob, beast::Journal journal) auto const key = strUnHex(k.asString()); if (key && key->size() == 32) - return ValidatorToken{m.asString(), makeSlice(*key)}; + { + return ValidatorToken{ + .manifest = m.asString(), .validationSecret = makeSlice(*key)}; + } } } diff --git a/src/libxrpl/server/Wallet.cpp b/src/libxrpl/server/Wallet.cpp index 89aa246dcf..7906867654 100644 --- a/src/libxrpl/server/Wallet.cpp +++ b/src/libxrpl/server/Wallet.cpp @@ -198,7 +198,7 @@ getPeerReservationTable(soci::session& session, beast::Journal j) JLOG(j.warn()) << "load: not a public key: " << valPubKey; continue; } - table.insert(PeerReservation{*optNodeId, *valDesc}); + table.insert(PeerReservation{.nodeId = *optNodeId, .description = *valDesc}); } return table; diff --git a/src/libxrpl/shamap/SHAMap.cpp b/src/libxrpl/shamap/SHAMap.cpp index e898a80f80..b638efc383 100644 --- a/src/libxrpl/shamap/SHAMap.cpp +++ b/src/libxrpl/shamap/SHAMap.cpp @@ -140,7 +140,7 @@ SHAMap::walkTowardsKey(uint256 const& id, SharedPtrNodeStack* stack) const while (inNode->isInner()) { if (stack != nullptr) - stack->push({inNode, nodeID}); + stack->emplace(inNode, nodeID); auto const inner = intr_ptr::static_pointer_cast(inNode); auto const branch = selectBranch(nodeID, id); @@ -152,7 +152,7 @@ SHAMap::walkTowardsKey(uint256 const& id, SharedPtrNodeStack* stack) const } if (stack != nullptr) - stack->push({inNode, nodeID}); + stack->emplace(inNode, nodeID); return safe_downcast(inNode.get()); } @@ -449,11 +449,11 @@ SHAMap::belowHelper( auto inner = intr_ptr::static_pointer_cast(node); if (stack.empty()) { - stack.push({inner, SHAMapNodeID{}}); + stack.emplace(inner, SHAMapNodeID{}); } else { - stack.push({inner, stack.top().second.getChildNodeID(branch)}); + stack.emplace(inner, stack.top().second.getChildNodeID(branch)); } for (int i = init; cmp(i);) { @@ -468,7 +468,7 @@ SHAMap::belowHelper( return n.get(); } inner = intr_ptr::static_pointer_cast(node); - stack.push({inner, stack.top().second.getChildNodeID(branch)}); + stack.emplace(inner, stack.top().second.getChildNodeID(branch)); i = init; // descend and reset loop } else @@ -813,7 +813,7 @@ SHAMap::addGiveItem(SHAMapNodeType type, boost::intrusive_ptr while ((b1 = selectBranch(nodeID, tag)) == (b2 = selectBranch(nodeID, otherItem->key()))) { - stack.push({node, nodeID}); + stack.emplace(node, nodeID); // we need a new inner node, since both go on same branch at this // level @@ -1115,7 +1115,7 @@ SHAMap::dump(bool hash) const JLOG(journal_.info()) << " MAP Contains"; std::stack> stack; - stack.push({root_.get(), SHAMapNodeID()}); + stack.emplace(root_.get(), SHAMapNodeID()); do { @@ -1141,7 +1141,7 @@ SHAMap::dump(bool hash) const XRPL_ASSERT( child->getHash() == inner->getChildHash(i), "xrpl::SHAMap::dump : child hash do match"); - stack.push({child, nodeID.getChildNodeID(i)}); + stack.emplace(child, nodeID.getChildNodeID(i)); } } } diff --git a/src/libxrpl/shamap/SHAMapDelta.cpp b/src/libxrpl/shamap/SHAMapDelta.cpp index 4557d004a8..d8162710be 100644 --- a/src/libxrpl/shamap/SHAMapDelta.cpp +++ b/src/libxrpl/shamap/SHAMapDelta.cpp @@ -143,7 +143,7 @@ SHAMap::compare(SHAMap const& otherMap, Delta& differences, int maxCount) const using StackEntry = std::pair; std::stack> nodeStack; // track nodes we've pushed - nodeStack.push({root_.get(), otherMap.root_.get()}); + nodeStack.emplace(root_.get(), otherMap.root_.get()); while (!nodeStack.empty()) { auto [ourNode, otherNode] = nodeStack.top(); @@ -225,7 +225,7 @@ SHAMap::compare(SHAMap const& otherMap, Delta& differences, int maxCount) const } else { // The two trees have different non-empty branches - nodeStack.push({descendThrow(ours, i), otherMap.descendThrow(other, i)}); + nodeStack.emplace(descendThrow(ours, i), otherMap.descendThrow(other, i)); } } } @@ -315,52 +315,50 @@ SHAMap::walkMapParallel(std::vector& missingNodes, int maxMis nodeStacks[rootChildIndex].push(intr_ptr::static_pointer_cast(child)); JLOG(journal_.debug()) << "starting worker " << rootChildIndex; - workers.push_back( - std::thread( - [&m, &missingNodes, &maxMissing, &exceptions, this]( - std::stack> nodeStack) { - try + workers.emplace_back( + [&m, &missingNodes, &maxMissing, &exceptions, this]( + std::stack> nodeStack) { + try + { + while (!nodeStack.empty()) { - while (!nodeStack.empty()) + intr_ptr::SharedPtr const node = + std::move(nodeStack.top()); + XRPL_ASSERT(node, "xrpl::SHAMap::walkMapParallel : non-null node"); + nodeStack.pop(); + + for (int i = 0; i < 16; ++i) { - intr_ptr::SharedPtr const node = - std::move(nodeStack.top()); - XRPL_ASSERT(node, "xrpl::SHAMap::walkMapParallel : non-null node"); - nodeStack.pop(); + if (node->isEmptyBranch(i)) + continue; + intr_ptr::SharedPtr const nextNode = + descendNoStore(*node, i); - for (int i = 0; i < 16; ++i) + if (nextNode) { - if (node->isEmptyBranch(i)) - continue; - intr_ptr::SharedPtr const nextNode = - descendNoStore(*node, i); - - if (nextNode) + if (nextNode->isInner()) { - if (nextNode->isInner()) - { - nodeStack.push( - intr_ptr::static_pointer_cast( - nextNode)); - } - } - else - { - std::lock_guard const l{m}; - missingNodes.emplace_back(type_, node->getChildHash(i)); - if (--maxMissing <= 0) - return; + nodeStack.push( + intr_ptr::static_pointer_cast(nextNode)); } } + else + { + std::lock_guard const l{m}; + missingNodes.emplace_back(type_, node->getChildHash(i)); + if (--maxMissing <= 0) + return; + } } } - catch (SHAMapMissingNode const& e) - { - std::lock_guard const l(m); - exceptions.push_back(e); - } - }, - std::move(nodeStacks[rootChildIndex]))); + } + catch (SHAMapMissingNode const& e) + { + std::lock_guard const l(m); + exceptions.push_back(e); + } + }, + std::move(nodeStacks[rootChildIndex])); } for (std::thread& worker : workers) diff --git a/src/libxrpl/shamap/SHAMapSync.cpp b/src/libxrpl/shamap/SHAMapSync.cpp index f0e364a0f9..e7f3447642 100644 --- a/src/libxrpl/shamap/SHAMapSync.cpp +++ b/src/libxrpl/shamap/SHAMapSync.cpp @@ -83,7 +83,7 @@ SHAMap::visitNodes(std::function const& function) const if (pos != 15) { // save next position to resume at - stack.push(std::make_pair(pos + 1, std::move(node))); + stack.emplace(pos + 1, std::move(node)); } // descend to the child's first position @@ -132,7 +132,7 @@ SHAMap::visitDifferences( using StackEntry = std::pair; std::stack> stack; - stack.push({safe_downcast(root_.get()), SHAMapNodeID{}}); + stack.emplace(safe_downcast(root_.get()), SHAMapNodeID{}); while (!stack.empty()) { @@ -155,7 +155,7 @@ SHAMap::visitDifferences( if (next->isInner()) { if ((have == nullptr) || !have->hasInnerNode(childID, childHash)) - stack.push({safe_downcast(next), childID}); + stack.emplace(safe_downcast(next), childID); } else if ( (have == nullptr) || @@ -387,7 +387,7 @@ SHAMap::getMissingNodes(int max, SHAMapSyncFilter* filter) for (auto const& [innerNode, nodeId] : mn.resumes_) { if (!innerNode->isFullBelow(mn.generation_)) - mn.stack_.push(std::make_tuple(innerNode, nodeId, rand_int(255), 0, true)); + mn.stack_.emplace(innerNode, nodeId, rand_int(255), 0, true); } mn.resumes_.clear(); @@ -463,7 +463,7 @@ SHAMap::getNodeFat( // Add this node to the reply s.erase(); node->serializeForWire(s); - data.emplace_back(std::make_pair(nodeID, s.getData())); + data.emplace_back(nodeID, s.getData()); if (node->isInner()) { @@ -493,7 +493,7 @@ SHAMap::getNodeFat( // Just include this node s.erase(); childNode->serializeForWire(s); - data.emplace_back(std::make_pair(childID, s.getData())); + data.emplace_back(childID, s.getData()); } } } @@ -661,7 +661,7 @@ SHAMap::deepCompare(SHAMap& other) const // Intended for debug/test only std::stack> stack; - stack.push({root_.get(), other.root_.get()}); + stack.emplace(root_.get(), other.root_.get()); while (!stack.empty()) { @@ -715,7 +715,7 @@ SHAMap::deepCompare(SHAMap& other) const JLOG(journal_.warn()) << "unable to fetch inner node"; return false; } - stack.push({next, otherNext}); + stack.emplace(next, otherNext); } } } diff --git a/src/libxrpl/tx/ApplyContext.cpp b/src/libxrpl/tx/ApplyContext.cpp index fccc7061cc..81fa517252 100644 --- a/src/libxrpl/tx/ApplyContext.cpp +++ b/src/libxrpl/tx/ApplyContext.cpp @@ -148,7 +148,7 @@ ApplyContext::checkInvariants(TER const result, XRPAmount const fee) "xrpl::ApplyContext::checkInvariants : is tesSUCCESS or tecCLAIM"); return checkInvariantsHelper( - result, fee, std::make_index_sequence::value>{}); + result, fee, std::make_index_sequence>{}); } } // namespace xrpl diff --git a/src/libxrpl/tx/invariants/FreezeInvariant.cpp b/src/libxrpl/tx/invariants/FreezeInvariant.cpp index 9dcd60d0d6..bf9ef81396 100644 --- a/src/libxrpl/tx/invariants/FreezeInvariant.cpp +++ b/src/libxrpl/tx/invariants/FreezeInvariant.cpp @@ -188,10 +188,14 @@ TransfersNotFrozen::recordBalanceChanges( auto const currency = after->at(sfBalance).get().currency; // Change from low account's perspective, which is trust line default - recordBalance({currency, after->at(sfHighLimit).getIssuer()}, {after, balanceChangeSign}); + recordBalance( + {currency, after->at(sfHighLimit).getIssuer()}, + {.line = after, .balanceChangeSign = balanceChangeSign}); // Change from high account's perspective, which reverses the sign. - recordBalance({currency, after->at(sfLowLimit).getIssuer()}, {after, -balanceChangeSign}); + recordBalance( + {currency, after->at(sfLowLimit).getIssuer()}, + {.line = after, .balanceChangeSign = -balanceChangeSign}); } std::shared_ptr diff --git a/src/libxrpl/tx/invariants/PermissionedDomainInvariant.cpp b/src/libxrpl/tx/invariants/PermissionedDomainInvariant.cpp index c2d955d4d1..3c6f67a8d6 100644 --- a/src/libxrpl/tx/invariants/PermissionedDomainInvariant.cpp +++ b/src/libxrpl/tx/invariants/PermissionedDomainInvariant.cpp @@ -35,7 +35,11 @@ ValidPermissionedDomain::visitEntry( auto const& credentials = sle->getFieldArray(sfAcceptedCredentials); auto const sorted = credentials::makeSorted(credentials); - SleStatus ss{credentials.size(), false, !sorted.empty(), isDel}; + SleStatus ss{ + .credentialsSize_ = credentials.size(), + .isSorted_ = false, + .isUnique_ = !sorted.empty(), + .isDelete_ = isDel}; // If array have duplicates then all the other checks are invalid if (ss.isUnique_) diff --git a/src/libxrpl/tx/invariants/VaultInvariant.cpp b/src/libxrpl/tx/invariants/VaultInvariant.cpp index 37a908c067..c0d082e14e 100644 --- a/src/libxrpl/tx/invariants/VaultInvariant.cpp +++ b/src/libxrpl/tx/invariants/VaultInvariant.cpp @@ -81,7 +81,7 @@ ValidVault::visitEntry( // validation. It is used to validate that the change in account // balances matches the change in vault balances, stored to deltas_ at the // end of this function. - DeltaInfo balanceDelta{numZero, std::nullopt}; + DeltaInfo balanceDelta{.delta = numZero, .scale = std::nullopt}; std::int8_t sign = 0; if (before) @@ -1052,7 +1052,9 @@ ValidVault::finalize( [[nodiscard]] ValidVault::DeltaInfo ValidVault::DeltaInfo::makeDelta(Number const& before, Number const& after, Asset const& asset) { - return {after - before, std::max(xrpl::scale(after, asset), xrpl::scale(before, asset))}; + return { + .delta = after - before, + .scale = std::max(xrpl::scale(after, asset), xrpl::scale(before, asset))}; } [[nodiscard]] std::int32_t @@ -1061,10 +1063,8 @@ ValidVault::computeCoarsestScale(std::vector const& numbers) if (numbers.empty()) return 0; - auto const max = - std::max_element(numbers.begin(), numbers.end(), [](auto const& a, auto const& b) -> bool { - return a.scale < b.scale; - }); + auto const max = std::ranges::max_element( + numbers, [](auto const& a, auto const& b) -> bool { return a.scale < b.scale; }); XRPL_ASSERT_PARTS( max->scale, "xrpl::ValidVault::computeCoarsestScale", "scale set for destinationDelta"); return max->scale.value_or(STAmount::cMaxOffset); diff --git a/src/libxrpl/tx/paths/OfferStream.cpp b/src/libxrpl/tx/paths/OfferStream.cpp index 47910d6861..c7e81ba203 100644 --- a/src/libxrpl/tx/paths/OfferStream.cpp +++ b/src/libxrpl/tx/paths/OfferStream.cpp @@ -83,7 +83,7 @@ TOfferStreamBase::erase(ApplyView& view) } auto v(p->getFieldV256(sfIndexes)); - auto it(std::find(v.begin(), v.end(), tip_.index())); + auto it(std::ranges::find(v, tip_.index())); if (it == v.end()) { diff --git a/src/libxrpl/tx/paths/PaySteps.cpp b/src/libxrpl/tx/paths/PaySteps.cpp index b9dc8b2ab4..d3fe366616 100644 --- a/src/libxrpl/tx/paths/PaySteps.cpp +++ b/src/libxrpl/tx/paths/PaySteps.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -291,7 +292,7 @@ toStrand( // even if all that is changing is the Issue.account. Note // that MPTIssue can't change the account. STPathElement const& lastAsset = - *std::find_if(normPath.rbegin(), normPath.rend(), hasAsset); + *std::ranges::find_if(std::ranges::reverse_view(normPath), hasAsset); if (lastAsset.getPathAsset() != deliver || (offerCrossing != OfferCrossing::no && lastAsset.getIssuerID() != deliver.getIssuer())) @@ -591,7 +592,7 @@ toStrands( result.reserve(1 + paths.size()); // Insert the strand into result if it is not already part of the vector auto insert = [&](Strand s) { - bool const hasStrand = std::find(result.begin(), result.end(), s) != result.end(); + bool const hasStrand = std::ranges::find(result, s) != result.end(); if (!hasStrand) result.emplace_back(std::move(s)); diff --git a/src/libxrpl/tx/paths/RippleCalc.cpp b/src/libxrpl/tx/paths/RippleCalc.cpp index 395a0a3cc7..773a9bac3d 100644 --- a/src/libxrpl/tx/paths/RippleCalc.cpp +++ b/src/libxrpl/tx/paths/RippleCalc.cpp @@ -17,8 +17,7 @@ #include #include -namespace xrpl { -namespace path { +namespace xrpl::path { RippleCalc::Output RippleCalc::rippleCalculate( @@ -113,5 +112,4 @@ RippleCalc::rippleCalculate( return flowOut; } -} // namespace path -} // namespace xrpl +} // namespace xrpl::path diff --git a/src/libxrpl/tx/transactors/account/SignerListSet.cpp b/src/libxrpl/tx/transactors/account/SignerListSet.cpp index cd9a569394..ceedf88e7f 100644 --- a/src/libxrpl/tx/transactors/account/SignerListSet.cpp +++ b/src/libxrpl/tx/transactors/account/SignerListSet.cpp @@ -259,7 +259,7 @@ SignerListSet::validateQuorumAndSignerEntries( std::is_sorted(signers.begin(), signers.end()), "xrpl::SignerListSet::validateQuorumAndSignerEntries : sorted " "signers"); - if (std::adjacent_find(signers.begin(), signers.end()) != signers.end()) + if (std::ranges::adjacent_find(signers) != signers.end()) { JLOG(j.trace()) << "Duplicate signers in signer list"; return temBAD_SIGNER; diff --git a/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp b/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp index a58e05ac97..4709932f9f 100644 --- a/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp +++ b/src/libxrpl/tx/transactors/bridge/XChainBridge.cpp @@ -328,7 +328,7 @@ onNewAttestations( j); if (!r.has_value()) - return {std::nullopt, changed}; + return {.rewardAccounts = std::nullopt, .changed = changed}; return {std::move(r.value()), changed}; }; @@ -1778,11 +1778,11 @@ XChainClaim::doApply() return Unexpected(claimR.error()); return ScopeResult{ - claimR.value(), - (*sleClaimID)[sfAccount], - sendingAmount, - srcChain, - (*sleClaimID)[sfSignatureReward], + .rewardAccounts = claimR.value(), + .rewardPoolSrc = (*sleClaimID)[sfAccount], + .sendingAmount = sendingAmount, + .srcChain = srcChain, + .signatureReward = (*sleClaimID)[sfSignatureReward], }; }(); @@ -1919,7 +1919,9 @@ XChainCommit::doApply() // Support dipping into reserves to pay the fee TransferHelperSubmittingAccountInfo submittingAccountInfo{ - account_, preFeeBalance_, (*sleAccount)[sfBalance]}; + .account = account_, + .preFeeBalance_ = preFeeBalance_, + .postFeeBalance = (*sleAccount)[sfBalance]}; auto const thTer = transferHelper( psb, @@ -2194,7 +2196,7 @@ XChainCreateAccountCommit::doApply() // Support dipping into reserves to pay the fee TransferHelperSubmittingAccountInfo submittingAccountInfo{ - account_, preFeeBalance_, (*sle)[sfBalance]}; + .account = account_, .preFeeBalance_ = preFeeBalance_, .postFeeBalance = (*sle)[sfBalance]}; STAmount const toTransfer = amount + reward; auto const thTer = transferHelper( psb, diff --git a/src/libxrpl/tx/transactors/nft/NFTokenCancelOffer.cpp b/src/libxrpl/tx/transactors/nft/NFTokenCancelOffer.cpp index b17399d5d3..1e85fa7ee7 100644 --- a/src/libxrpl/tx/transactors/nft/NFTokenCancelOffer.cpp +++ b/src/libxrpl/tx/transactors/nft/NFTokenCancelOffer.cpp @@ -26,8 +26,8 @@ NFTokenCancelOffer::preflight(PreflightContext const& ctx) // In order to prevent unnecessarily overlarge transactions, we // disallow duplicates in the list of offers to cancel. STVector256 ids = ctx.tx.getFieldV256(sfNFTokenOffers); - std::sort(ids.begin(), ids.end()); - if (std::adjacent_find(ids.begin(), ids.end()) != ids.end()) + std::ranges::sort(ids); + if (std::ranges::adjacent_find(ids) != ids.end()) return temMALFORMED; return tesSUCCESS; @@ -40,7 +40,7 @@ NFTokenCancelOffer::preclaim(PreclaimContext const& ctx) auto const& ids = ctx.tx[sfNFTokenOffers]; - auto ret = std::find_if(ids.begin(), ids.end(), [&ctx, &account](uint256 const& id) { + auto ret = std::ranges::find_if(ids, [&ctx, &account](uint256 const& id) { auto const offer = ctx.view.read(keylet::child(id)); // If id is not in the ledger we assume the offer was consumed diff --git a/src/libxrpl/tx/transactors/payment/Payment.cpp b/src/libxrpl/tx/transactors/payment/Payment.cpp index 5e79a09316..e3a1334f2d 100644 --- a/src/libxrpl/tx/transactors/payment/Payment.cpp +++ b/src/libxrpl/tx/transactors/payment/Payment.cpp @@ -375,8 +375,7 @@ Payment::preclaim(PreclaimContext const& ctx) { STPathSet const& paths = ctx.tx.getFieldPathSet(sfPaths); - if (paths.size() > MaxPathSize || - std::any_of(paths.begin(), paths.end(), [](STPath const& path) { + if (paths.size() > MaxPathSize || std::ranges::any_of(paths, [](STPath const& path) { return path.size() > MaxPathLength; })) { diff --git a/src/libxrpl/tx/transactors/system/Batch.cpp b/src/libxrpl/tx/transactors/system/Batch.cpp index 936b7ae2c5..d89238efd0 100644 --- a/src/libxrpl/tx/transactors/system/Batch.cpp +++ b/src/libxrpl/tx/transactors/system/Batch.cpp @@ -279,10 +279,8 @@ Batch::preflight(PreflightContext const& ctx) return temINVALID; } - if (std::any_of( - disabledTxTypes.begin(), disabledTxTypes.end(), [txType](auto const& disabled) { - return txType == disabled; - })) + if (std::ranges::any_of( + disabledTxTypes, [txType](auto const& disabled) { return txType == disabled; })) { return temINVALID_INNER_BATCH; } diff --git a/src/libxrpl/tx/transactors/system/Change.cpp b/src/libxrpl/tx/transactors/system/Change.cpp index 10ffb103a4..176f08f9e5 100644 --- a/src/libxrpl/tx/transactors/system/Change.cpp +++ b/src/libxrpl/tx/transactors/system/Change.cpp @@ -171,7 +171,7 @@ Change::applyAmendment() STVector256 amendments = amendmentObject->getFieldV256(sfAmendments); - if (std::find(amendments.begin(), amendments.end(), amendment) != amendments.end()) + if (std::ranges::find(amendments, amendment) != amendments.end()) return tefALREADY; auto flags = ctx_.tx.getFlags(); diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp index 5b01972e27..8234c84fd8 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp @@ -49,12 +49,24 @@ struct MPTMutabilityFlags }; static constexpr std::array mptMutabilityFlags = { - {{tmfMPTSetCanLock, tmfMPTClearCanLock, lsmfMPTCanMutateCanLock}, - {tmfMPTSetRequireAuth, tmfMPTClearRequireAuth, lsmfMPTCanMutateRequireAuth}, - {tmfMPTSetCanEscrow, tmfMPTClearCanEscrow, lsmfMPTCanMutateCanEscrow}, - {tmfMPTSetCanTrade, tmfMPTClearCanTrade, lsmfMPTCanMutateCanTrade}, - {tmfMPTSetCanTransfer, tmfMPTClearCanTransfer, lsmfMPTCanMutateCanTransfer}, - {tmfMPTSetCanClawback, tmfMPTClearCanClawback, lsmfMPTCanMutateCanClawback}}}; + {{.setFlag = tmfMPTSetCanLock, + .clearFlag = tmfMPTClearCanLock, + .canMutateFlag = lsmfMPTCanMutateCanLock}, + {.setFlag = tmfMPTSetRequireAuth, + .clearFlag = tmfMPTClearRequireAuth, + .canMutateFlag = lsmfMPTCanMutateRequireAuth}, + {.setFlag = tmfMPTSetCanEscrow, + .clearFlag = tmfMPTClearCanEscrow, + .canMutateFlag = lsmfMPTCanMutateCanEscrow}, + {.setFlag = tmfMPTSetCanTrade, + .clearFlag = tmfMPTClearCanTrade, + .canMutateFlag = lsmfMPTCanMutateCanTrade}, + {.setFlag = tmfMPTSetCanTransfer, + .clearFlag = tmfMPTClearCanTransfer, + .canMutateFlag = lsmfMPTCanMutateCanTransfer}, + {.setFlag = tmfMPTSetCanClawback, + .clearFlag = tmfMPTClearCanClawback, + .canMutateFlag = lsmfMPTCanMutateCanClawback}}}; NotTEC MPTokenIssuanceSet::preflight(PreflightContext const& ctx) @@ -110,12 +122,9 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) return temINVALID_FLAG; // Can not set and clear the same flag - if (std::any_of( - mptMutabilityFlags.begin(), - mptMutabilityFlags.end(), - [mutableFlags](auto const& f) { - return (*mutableFlags & f.setFlag) && (*mutableFlags & f.clearFlag); - })) + if (std::ranges::any_of(mptMutabilityFlags, [mutableFlags](auto const& f) { + return (*mutableFlags & f.setFlag) && (*mutableFlags & f.clearFlag); + })) return temINVALID_FLAG; // Trying to set a non-zero TransferFee and clear MPTCanTransfer @@ -223,13 +232,10 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx) if (auto const mutableFlags = ctx.tx[~sfMutableFlags]) { - if (std::any_of( - mptMutabilityFlags.begin(), - mptMutabilityFlags.end(), - [mutableFlags, &isMutableFlag](auto const& f) { - return !isMutableFlag(f.canMutateFlag) && - ((*mutableFlags & (f.setFlag | f.clearFlag))); - })) + if (std::ranges::any_of(mptMutabilityFlags, [mutableFlags, &isMutableFlag](auto const& f) { + return !isMutableFlag(f.canMutateFlag) && + ((*mutableFlags & (f.setFlag | f.clearFlag))); + })) return tecNO_PERMISSION; // Clearing lsfMPTRequireAuth is invalid when the issuance already has diff --git a/src/test/app/AMMCalc_test.cpp b/src/test/app/AMMCalc_test.cpp index 6df1e0d62d..6c32c6118d 100644 --- a/src/test/app/AMMCalc_test.cpp +++ b/src/test/app/AMMCalc_test.cpp @@ -29,8 +29,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** AMM Calculator. Uses AMM formulas to simulate the payment engine * expected results. Assuming the formulas are correct some unit-tests can @@ -458,5 +457,4 @@ class AMMCalc_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_MANUAL(AMMCalc, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMMClawbackMPT_test.cpp b/src/test/app/AMMClawbackMPT_test.cpp index 1a344b40b6..393c0b062c 100644 --- a/src/test/app/AMMClawbackMPT_test.cpp +++ b/src/test/app/AMMClawbackMPT_test.cpp @@ -26,8 +26,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AMMClawbackMPT_test : public beast::unit_test::suite { void @@ -1838,5 +1837,4 @@ class AMMClawbackMPT_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(AMMClawbackMPT, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMMClawback_test.cpp b/src/test/app/AMMClawback_test.cpp index 662417ffc3..bf08b57bf3 100644 --- a/src/test/app/AMMClawback_test.cpp +++ b/src/test/app/AMMClawback_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AMMClawback_test : public beast::unit_test::suite { void @@ -2533,5 +2532,4 @@ class AMMClawback_test : public beast::unit_test::suite } }; BEAST_DEFINE_TESTSUITE(AMMClawback, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMMExtendedMPT_test.cpp b/src/test/app/AMMExtendedMPT_test.cpp index 25fd8153b6..44ced2edc2 100644 --- a/src/test/app/AMMExtendedMPT_test.cpp +++ b/src/test/app/AMMExtendedMPT_test.cpp @@ -53,8 +53,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** * Tests of AMM MPT that use offers. @@ -3659,5 +3658,4 @@ private: BEAST_DEFINE_TESTSUITE_PRIO(AMMExtendedMPT, app, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMMExtended_test.cpp b/src/test/app/AMMExtended_test.cpp index e7f0efaaad..c94f0f405f 100644 --- a/src/test/app/AMMExtended_test.cpp +++ b/src/test/app/AMMExtended_test.cpp @@ -60,8 +60,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** * Tests of AMM that use offers too. @@ -3586,5 +3585,4 @@ private: BEAST_DEFINE_TESTSUITE_PRIO(AMMExtended, app, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMMMPT_test.cpp b/src/test/app/AMMMPT_test.cpp index 35c1522e68..9884645836 100644 --- a/src/test/app/AMMMPT_test.cpp +++ b/src/test/app/AMMMPT_test.cpp @@ -53,8 +53,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** * Basic tests of AMM functionality involving MPT assets, excluding those that @@ -7084,5 +7083,4 @@ private: BEAST_DEFINE_TESTSUITE_PRIO(AMMMPT, app, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AMM_test.cpp b/src/test/app/AMM_test.cpp index 2379a8ca24..d2d7fbf2c7 100644 --- a/src/test/app/AMM_test.cpp +++ b/src/test/app/AMM_test.cpp @@ -64,8 +64,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** * Basic tests of AMM that do not use offers. @@ -7136,5 +7135,4 @@ private: BEAST_DEFINE_TESTSUITE_PRIO(AMM, app, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AccountDelete_test.cpp b/src/test/app/AccountDelete_test.cpp index 66c4451ec9..c2ecb91a84 100644 --- a/src/test/app/AccountDelete_test.cpp +++ b/src/test/app/AccountDelete_test.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AccountDelete_test : public beast::unit_test::suite { @@ -1091,5 +1090,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(AccountDelete, app, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/AccountSet_test.cpp b/src/test/app/AccountSet_test.cpp index 6ce81e04ff..15012abe36 100644 --- a/src/test/app/AccountSet_test.cpp +++ b/src/test/app/AccountSet_test.cpp @@ -125,7 +125,7 @@ public: continue; } - if (std::find(goodFlags.begin(), goodFlags.end(), flag) != goodFlags.end()) + if (std::ranges::find(goodFlags, flag) != goodFlags.end()) { // Good flag env.require(nflags(alice, flag)); @@ -361,13 +361,13 @@ public: doTests( testable_amendments(), - {{1.0, tesSUCCESS, 1.0}, - {1.1, tesSUCCESS, 1.1}, - {2.0, tesSUCCESS, 2.0}, - {2.1, temBAD_TRANSFER_RATE, 2.0}, - {0.0, tesSUCCESS, 1.0}, - {2.0, tesSUCCESS, 2.0}, - {0.9, temBAD_TRANSFER_RATE, 2.0}}); + {{.set = 1.0, .code = tesSUCCESS, .get = 1.0}, + {.set = 1.1, .code = tesSUCCESS, .get = 1.1}, + {.set = 2.0, .code = tesSUCCESS, .get = 2.0}, + {.set = 2.1, .code = temBAD_TRANSFER_RATE, .get = 2.0}, + {.set = 0.0, .code = tesSUCCESS, .get = 1.0}, + {.set = 2.0, .code = tesSUCCESS, .get = 2.0}, + {.set = 0.9, .code = temBAD_TRANSFER_RATE, .get = 2.0}}); } void diff --git a/src/test/app/AmendmentTable_test.cpp b/src/test/app/AmendmentTable_test.cpp index 4e3ef42242..7edaef3821 100644 --- a/src/test/app/AmendmentTable_test.cpp +++ b/src/test/app/AmendmentTable_test.cpp @@ -442,7 +442,7 @@ public: BEAST_EXPECT(table->unVeto(unvetoedID)); std::vector const desired = table->getDesired(); - BEAST_EXPECT(std::find(desired.begin(), desired.end(), unvetoedID) != desired.end()); + BEAST_EXPECT(std::ranges::find(desired, unvetoedID) != desired.end()); } // Veto all supported amendments. Now desired should be empty. @@ -977,10 +977,9 @@ public: // We need a hash_set to pass to trustChanged. hash_set trustedValidators; trustedValidators.reserve(validators.size()); - std::for_each( - validators.begin(), validators.end(), [&trustedValidators](auto const& val) { - trustedValidators.insert(val.first); - }); + std::ranges::for_each(validators, [&trustedValidators](auto const& val) { + trustedValidators.insert(val.first); + }); // Tell the AmendmentTable that the UNL changed. table->trustChanged(trustedValidators); @@ -1174,9 +1173,8 @@ public: BEAST_EXPECT(table->needValidatedLedger(1)); std::set enabled; - std::for_each(unsupported_.begin(), unsupported_.end(), [&enabled](auto const& s) { - enabled.insert(amendmentId(s)); - }); + std::ranges::for_each( + unsupported_, [&enabled](auto const& s) { enabled.insert(amendmentId(s)); }); majorityAmendments_t majority; table->doValidatedLedger(1, enabled, majority); @@ -1184,12 +1182,9 @@ public: BEAST_EXPECT(!table->firstUnsupportedExpected()); NetClock::duration t{1000s}; - std::for_each( - unsupportedMajority_.begin(), - unsupportedMajority_.end(), - [&majority, &t](auto const& s) { - majority[amendmentId(s)] = NetClock::time_point{--t}; - }); + std::ranges::for_each(unsupportedMajority_, [&majority, &t](auto const& s) { + majority[amendmentId(s)] = NetClock::time_point{--t}; + }); table->doValidatedLedger(1, enabled, majority); BEAST_EXPECT(table->hasUnsupportedEnabled()); diff --git a/src/test/app/Batch_test.cpp b/src/test/app/Batch_test.cpp index 7fd4c28403..6d8e1f2de3 100644 --- a/src/test/app/Batch_test.cpp +++ b/src/test/app/Batch_test.cpp @@ -72,8 +72,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Batch_test : public beast::unit_test::suite { @@ -2658,10 +2657,9 @@ class Batch_test : public beast::unit_test::suite { testcase("loan"); - bool const lendingBatchEnabled = !std::any_of( - Batch::disabledTxTypes.begin(), Batch::disabledTxTypes.end(), [](auto const& disabled) { - return disabled == ttLOAN_BROKER_SET; - }); + bool const lendingBatchEnabled = !std::ranges::any_of( + Batch::disabledTxTypes, + [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; }); using namespace test::jtx; @@ -4424,5 +4422,4 @@ public: BEAST_DEFINE_TESTSUITE(Batch, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/CheckMPT_test.cpp b/src/test/app/CheckMPT_test.cpp index cea5da5ed3..fb9d413e6e 100644 --- a/src/test/app/CheckMPT_test.cpp +++ b/src/test/app/CheckMPT_test.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include namespace xrpl { @@ -1379,10 +1380,14 @@ class CheckMPT_test : public beast::unit_test::suite AccountOwns( beast::unit_test::suite& s, Env& e, - Account const& a, + Account a, bool isIssuer_, bool requireAuth_ = false) - : suite(s), env(e), acct(a), isIssuer(isIssuer_), requireAuth(requireAuth_) + : suite(s) + , env(e) + , acct(std::move(a)) + , isIssuer(isIssuer_) + , requireAuth(requireAuth_) { } diff --git a/src/test/app/Check_test.cpp b/src/test/app/Check_test.cpp index 685e998f51..f2c7ab3a38 100644 --- a/src/test/app/Check_test.cpp +++ b/src/test/app/Check_test.cpp @@ -1881,8 +1881,8 @@ class Check_test : public beast::unit_test::suite } }; - AccountOwns alice{*this, env, "alice", 0}; - AccountOwns bob{*this, env, "bob", 0}; + AccountOwns alice{.suite = *this, .env = env, .acct = "alice", .owners = 0}; + AccountOwns bob{.suite = *this, .env = env, .acct = "bob", .owners = 0}; // Fund with noripple so the accounts do not have any flags set. env.fund(XRP(5000), noripple(alice, bob)); @@ -1891,7 +1891,7 @@ class Check_test : public beast::unit_test::suite // Automatic trust line creation should fail if the check destination // can't afford the reserve for the trust line. { - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; // Fund gw1 with noripple (even though that's atypical for a // gateway) so it does not have any flags set. We'll set flags @@ -2011,7 +2011,7 @@ class Check_test : public beast::unit_test::suite { // No account root flags on any participant. // Automatic trust line from issuer to destination. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; BEAST_EXPECT((*env.le(gw1))[sfFlags] == 0); BEAST_EXPECT((*env.le(alice))[sfFlags] == 0); @@ -2064,7 +2064,7 @@ class Check_test : public beast::unit_test::suite // Transfer of assets using offers does not require rippling. // So bob's offer is successfully crossed which creates the // trust line. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; IOU const OF1 = gw1["OF1"]; env(offer(alice, XRP(97), OF1(97))); env.close(); @@ -2113,7 +2113,7 @@ class Check_test : public beast::unit_test::suite { // gw1 enables rippling. // Automatic trust line from issuer to non-issuer should still work. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; env(fset(gw1, asfDefaultRipple)); env.close(); @@ -2161,7 +2161,7 @@ class Check_test : public beast::unit_test::suite // to non-issuer should work. // Use offers to automatically create the trust line. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; IOU const OF2 = gw1["OF2"]; env(offer(alice, XRP(95), OF2(95))); env.close(); @@ -2202,7 +2202,7 @@ class Check_test : public beast::unit_test::suite // change any outcomes. // // Automatic trust line from issuer to non-issuer should still work. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; env(fset(gw1, asfDepositAuth)); env(fset(alice, asfDepositAuth)); env(fset(bob, asfDepositAuth)); @@ -2252,7 +2252,7 @@ class Check_test : public beast::unit_test::suite // automatic trust line creation. // Use offers to automatically create the trust line. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; IOU const OF3 = gw1["OF3"]; env(offer(alice, XRP(93), OF3(93))); env.close(); @@ -2289,7 +2289,7 @@ class Check_test : public beast::unit_test::suite { // Set lsfGlobalFreeze on gw1. That should stop any automatic // trust lines from being created. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; env(fset(gw1, asfGlobalFreeze)); env.close(); @@ -2331,7 +2331,7 @@ class Check_test : public beast::unit_test::suite // no automatic trust line creation between non-issuers. // Use offers to automatically create the trust line. - AccountOwns const gw1{*this, env, "gw1", 0}; + AccountOwns const gw1{.suite = *this, .env = env, .acct = "gw1", .owners = 0}; IOU const OF4 = gw1["OF4"]; env(offer(alice, XRP(91), OF4(91)), ter(tecFROZEN)); env.close(); @@ -2370,7 +2370,7 @@ class Check_test : public beast::unit_test::suite // flag on an account that already has trust lines. So we'll fund // a new gateway and use that. { - AccountOwns gw2{*this, env, "gw2", 0}; + AccountOwns gw2{.suite = *this, .env = env, .acct = "gw2", .owners = 0}; env.fund(XRP(5000), gw2); env.close(); @@ -2434,7 +2434,7 @@ class Check_test : public beast::unit_test::suite // no automatic trust line creation between non-issuers. // Use offers to automatically create the trust line. - AccountOwns const gw2{*this, env, "gw2", 0}; + AccountOwns const gw2{.suite = *this, .env = env, .acct = "gw2", .owners = 0}; IOU const OF5 = gw2["OF5"]; env(offer(alice, XRP(91), OF5(91)), ter(tecUNFUNDED_OFFER)); env.close(); diff --git a/src/test/app/Credentials_test.cpp b/src/test/app/Credentials_test.cpp index d4e8b03f0a..3c9a658aca 100644 --- a/src/test/app/Credentials_test.cpp +++ b/src/test/app/Credentials_test.cpp @@ -32,8 +32,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Credentials_test : public beast::unit_test::suite { @@ -1049,5 +1048,4 @@ struct Credentials_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(Credentials, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/CrossingLimitsMPT_test.cpp b/src/test/app/CrossingLimitsMPT_test.cpp index d42f0aace2..8efacaae21 100644 --- a/src/test/app/CrossingLimitsMPT_test.cpp +++ b/src/test/app/CrossingLimitsMPT_test.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class CrossingLimitsMPT_test : public beast::unit_test::suite { @@ -440,5 +439,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(CrossingLimitsMPT, tx, xrpl, 10); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/CrossingLimits_test.cpp b/src/test/app/CrossingLimits_test.cpp index bc9186bb29..0cbe57a464 100644 --- a/src/test/app/CrossingLimits_test.cpp +++ b/src/test/app/CrossingLimits_test.cpp @@ -14,8 +14,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class CrossingLimits_test : public beast::unit_test::suite { @@ -409,5 +408,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(CrossingLimits, app, xrpl, 10); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/DID_test.cpp b/src/test/app/DID_test.cpp index baa36ec7ea..bd3ea59971 100644 --- a/src/test/app/DID_test.cpp +++ b/src/test/app/DID_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct DID_test : public beast::unit_test::suite { @@ -379,5 +378,4 @@ struct DID_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(DID, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/DNS_test.cpp b/src/test/app/DNS_test.cpp index 224c7278c1..3997da60db 100644 --- a/src/test/app/DNS_test.cpp +++ b/src/test/app/DNS_test.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class DNS_test : public beast::unit_test::suite { @@ -120,5 +119,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(DNS, app, xrpl, 20); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Delegate_test.cpp b/src/test/app/Delegate_test.cpp index 0ec4c3c917..5ed8c79146 100644 --- a/src/test/app/Delegate_test.cpp +++ b/src/test/app/Delegate_test.cpp @@ -50,8 +50,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Delegate_test : public beast::unit_test::suite { void @@ -1945,5 +1944,4 @@ class Delegate_test : public beast::unit_test::suite } }; BEAST_DEFINE_TESTSUITE(Delegate, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/DeliverMin_test.cpp b/src/test/app/DeliverMin_test.cpp index 12870f6224..4b3b6d34ad 100644 --- a/src/test/app/DeliverMin_test.cpp +++ b/src/test/app/DeliverMin_test.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class DeliverMin_test : public beast::unit_test::suite { @@ -141,5 +140,4 @@ public: BEAST_DEFINE_TESTSUITE(DeliverMin, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/DepositAuth_test.cpp b/src/test/app/DepositAuth_test.cpp index 6e865455c5..c9773cba8b 100644 --- a/src/test/app/DepositAuth_test.cpp +++ b/src/test/app/DepositAuth_test.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { // Helper function that returns the reserve on an account based on // the passed in number of owners. @@ -1409,5 +1408,4 @@ struct DepositPreauth_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(DepositAuth, app, xrpl); BEAST_DEFINE_TESTSUITE(DepositPreauth, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/EscrowToken_test.cpp b/src/test/app/EscrowToken_test.cpp index 22f11c5c93..d77043a624 100644 --- a/src/test/app/EscrowToken_test.cpp +++ b/src/test/app/EscrowToken_test.cpp @@ -41,8 +41,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct EscrowToken_test : public beast::unit_test::suite { @@ -1014,13 +1013,17 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 2); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) != aod.end()); } { xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 4); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), aa) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), aa) != iod.end()); } env(escrow::create(bob, bob, USD(1'000)), @@ -1035,13 +1038,17 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); } { xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 5); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bb) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bb) != iod.end()); } env.close(5s); @@ -1053,15 +1060,21 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 4); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bb) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bb) != iod.end()); } env.close(5s); @@ -1073,11 +1086,15 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) == bod.end()); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 3); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bb) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bb) == iod.end()); } } { @@ -1116,21 +1133,33 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 2); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) != aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 3); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) != bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 2); - BEAST_EXPECT(std::find(cod.begin(), cod.end(), bc) != cod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(cod.begin(), cod.end(), bc) != cod.end()); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 5); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), ab) != iod.end()); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bc) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), ab) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bc) != iod.end()); } env.close(5s); @@ -1141,20 +1170,30 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 2); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 4); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), ab) == iod.end()); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bc) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), ab) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bc) != iod.end()); } env.close(5s); @@ -1165,20 +1204,30 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) == bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 3); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), ab) == iod.end()); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), bc) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), ab) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), bc) == iod.end()); } } @@ -1213,14 +1262,18 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 2); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ag) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ag) != aod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 3); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), ag) != iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), ag) != iod.end()); } env.close(5s); @@ -1230,14 +1283,18 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ag) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ag) == aod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 2); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), ag) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), ag) == iod.end()); } } } @@ -1260,21 +1317,53 @@ struct EscrowToken_test : public beast::unit_test::suite std::array const tests = {{ // src > dst && src > issuer && dst no trustline - {Account("alice2"), Account("bob0"), Account{"gw0"}, false, true}, + {.src = Account("alice2"), + .dst = Account("bob0"), + .gw = Account{"gw0"}, + .hasTrustline = false, + .negative = true}, // src < dst && src < issuer && dst no trustline - {Account("carol0"), Account("dan1"), Account{"gw1"}, false, false}, + {.src = Account("carol0"), + .dst = Account("dan1"), + .gw = Account{"gw1"}, + .hasTrustline = false, + .negative = false}, // dst > src && dst > issuer && dst no trustline - {Account("dan1"), Account("alice2"), Account{"gw0"}, false, true}, + {.src = Account("dan1"), + .dst = Account("alice2"), + .gw = Account{"gw0"}, + .hasTrustline = false, + .negative = true}, // dst < src && dst < issuer && dst no trustline - {Account("bob0"), Account("carol0"), Account{"gw1"}, false, false}, + {.src = Account("bob0"), + .dst = Account("carol0"), + .gw = Account{"gw1"}, + .hasTrustline = false, + .negative = false}, // src > dst && src > issuer && dst has trustline - {Account("alice2"), Account("bob0"), Account{"gw0"}, true, true}, + {.src = Account("alice2"), + .dst = Account("bob0"), + .gw = Account{"gw0"}, + .hasTrustline = true, + .negative = true}, // src < dst && src < issuer && dst has trustline - {Account("carol0"), Account("dan1"), Account{"gw1"}, true, false}, + {.src = Account("carol0"), + .dst = Account("dan1"), + .gw = Account{"gw1"}, + .hasTrustline = true, + .negative = false}, // dst > src && dst > issuer && dst has trustline - {Account("dan1"), Account("alice2"), Account{"gw0"}, true, true}, + {.src = Account("dan1"), + .dst = Account("alice2"), + .gw = Account{"gw0"}, + .hasTrustline = true, + .negative = true}, // dst < src && dst < issuer && dst has trustline - {Account("bob0"), Account("carol0"), Account{"gw1"}, true, false}, + {.src = Account("bob0"), + .dst = Account("carol0"), + .gw = Account{"gw1"}, + .hasTrustline = true, + .negative = false}, }}; for (auto const& t : tests) @@ -1366,13 +1455,13 @@ struct EscrowToken_test : public beast::unit_test::suite std::array const gwDstTests = {{ // src > dst && src > issuer && dst has trustline - {Account("alice2"), Account{"gw0"}, true}, + {.src = Account("alice2"), .dst = Account{"gw0"}, .hasTrustline = true}, // src < dst && src < issuer && dst has trustline - {Account("carol0"), Account{"gw1"}, true}, + {.src = Account("carol0"), .dst = Account{"gw1"}, .hasTrustline = true}, // dst > src && dst > issuer && dst has trustline - {Account("dan1"), Account{"gw0"}, true}, + {.src = Account("dan1"), .dst = Account{"gw0"}, .hasTrustline = true}, // dst < src && dst < issuer && dst has trustline - {Account("bob0"), Account{"gw1"}, true}, + {.src = Account("bob0"), .dst = Account{"gw1"}, .hasTrustline = true}, }}; // issuer is destination @@ -3131,13 +3220,17 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 2); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) != aod.end()); } { xrpl::Dir const iod(*env.current(), keylet::ownerDir(gw.id())); BEAST_EXPECT(std::distance(iod.begin(), iod.end()) == 1); - BEAST_EXPECT(std::find(iod.begin(), iod.end(), aa) == iod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(iod.begin(), iod.end(), aa) == iod.end()); } env(escrow::create(bob, bob, MPT(1'000)), @@ -3152,7 +3245,9 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); } env.close(5s); @@ -3164,11 +3259,15 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); } env.close(5s); @@ -3180,7 +3279,9 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) == bod.end()); } } @@ -3222,16 +3323,24 @@ struct EscrowToken_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 2); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) != aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 3); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) != bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 2); - BEAST_EXPECT(std::find(cod.begin(), cod.end(), bc) != cod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(cod.begin(), cod.end(), bc) != cod.end()); } env.close(5s); @@ -3242,12 +3351,18 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 2); @@ -3261,12 +3376,18 @@ struct EscrowToken_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bob.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) == bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); @@ -3815,5 +3936,4 @@ public: BEAST_DEFINE_TESTSUITE(EscrowToken, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Escrow_test.cpp b/src/test/app/Escrow_test.cpp index fa20c8f38d..77d51f2758 100644 --- a/src/test/app/Escrow_test.cpp +++ b/src/test/app/Escrow_test.cpp @@ -32,8 +32,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Escrow_test : public beast::unit_test::suite { @@ -1124,7 +1123,9 @@ struct Escrow_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) != aod.end()); } env(escrow::create(bruce, bruce, XRP(1000)), @@ -1139,7 +1140,9 @@ struct Escrow_test : public beast::unit_test::suite { xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); } env.close(5s); @@ -1151,11 +1154,15 @@ struct Escrow_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 0); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), aa) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), aa) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) != bod.end()); } env.close(5s); @@ -1167,7 +1174,9 @@ struct Escrow_test : public beast::unit_test::suite xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 0); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bb) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bb) == bod.end()); } } { @@ -1198,16 +1207,24 @@ struct Escrow_test : public beast::unit_test::suite { xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 1); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) != aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) != aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 2); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) != bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); - BEAST_EXPECT(std::find(cod.begin(), cod.end(), bc) != cod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(cod.begin(), cod.end(), bc) != cod.end()); } env.close(5s); @@ -1218,12 +1235,18 @@ struct Escrow_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 0); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 1); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) != bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) != bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 1); @@ -1237,12 +1260,18 @@ struct Escrow_test : public beast::unit_test::suite xrpl::Dir const aod(*env.current(), keylet::ownerDir(alice.id())); BEAST_EXPECT(std::distance(aod.begin(), aod.end()) == 0); - BEAST_EXPECT(std::find(aod.begin(), aod.end(), ab) == aod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(aod.begin(), aod.end(), ab) == aod.end()); xrpl::Dir const bod(*env.current(), keylet::ownerDir(bruce.id())); BEAST_EXPECT(std::distance(bod.begin(), bod.end()) == 0); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), ab) == bod.end()); - BEAST_EXPECT(std::find(bod.begin(), bod.end(), bc) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), ab) == bod.end()); + BEAST_EXPECT( + // NOLINTNEXTLINE(modernize-use-ranges) + std::find(bod.begin(), bod.end(), bc) == bod.end()); xrpl::Dir const cod(*env.current(), keylet::ownerDir(carol.id())); BEAST_EXPECT(std::distance(cod.begin(), cod.end()) == 0); @@ -1613,5 +1642,4 @@ public: BEAST_DEFINE_TESTSUITE(Escrow, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/FeeVote_test.cpp b/src/test/app/FeeVote_test.cpp index 4c4f041b87..e24b54c82a 100644 --- a/src/test/app/FeeVote_test.cpp +++ b/src/test/app/FeeVote_test.cpp @@ -34,8 +34,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct FeeSettingsFields { @@ -199,7 +198,7 @@ getTxs(std::shared_ptr const& txSet) { auto const data = i->slice(); auto serialIter = SerialIter(data); - txs.push_back(STTx(serialIter)); + txs.emplace_back(serialIter); } return txs; }; @@ -748,5 +747,4 @@ class FeeVote_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(FeeVote, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/FixNFTokenPageLinks_test.cpp b/src/test/app/FixNFTokenPageLinks_test.cpp index 4a630cba74..56484bb396 100644 --- a/src/test/app/FixNFTokenPageLinks_test.cpp +++ b/src/test/app/FixNFTokenPageLinks_test.cpp @@ -94,7 +94,7 @@ class FixNFTokenPageLinks_test : public beast::unit_test::suite // Sort the NFTs so they are listed in storage order, not // creation order. - std::sort(nfts.begin(), nfts.end()); + std::ranges::sort(nfts); // Verify that the owner does indeed have exactly three pages // of NFTs with 32 entries in each page. diff --git a/src/test/app/FlowMPT_test.cpp b/src/test/app/FlowMPT_test.cpp index bd818f85d7..eabd239550 100644 --- a/src/test/app/FlowMPT_test.cpp +++ b/src/test/app/FlowMPT_test.cpp @@ -43,8 +43,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct FlowMPT_test : public beast::unit_test::suite { @@ -857,7 +856,8 @@ struct FlowMPT_test : public beast::unit_test::suite // available. Consequently, the entire offer is crossed. // Note remaining takerGets is 541 rather than 540 due to integral // rounding. XRP has a similar result. - return TokenData{EUR, USD, EUR(541), USD(450)}; + return TokenData{ + .gets = EUR, .pays = USD, .remTakerGets = EUR(541), .remTakerPays = USD(450)}; }; auto initXRP = [&](Env& env) { @@ -869,7 +869,11 @@ struct FlowMPT_test : public beast::unit_test::suite // available. Consequently, the entire offer is crossed. // Note remaining takerGets is 540.000001 rather than 540 due to // integral rounding. - return TokenData{XRP, USD, XRP(540.000001), USD(450)}; + return TokenData{ + .gets = XRP, + .pays = USD, + .remTakerGets = XRP(540.000001), + .remTakerPays = USD(450)}; }; auto initIOU = [&](Env& env) { @@ -881,7 +885,8 @@ struct FlowMPT_test : public beast::unit_test::suite // Payment's engine last step is limited by alice's // trustline - 606. Therefore, only 6EUR is delivered // and the offer is partially crossed. - return TokenData{EUR, USD, EUR(594), USD(495)}; + return TokenData{ + .gets = EUR, .pays = USD, .remTakerGets = EUR(594), .remTakerPays = USD(495)}; }; auto initIOU1 = [&](Env& env) { @@ -893,7 +898,8 @@ struct FlowMPT_test : public beast::unit_test::suite // Payment's engine last step is not limited by alice's // trustline. Therefore, the entire offer is crossed. // This the same result as with MPT. - return TokenData{EUR, USD, EUR(540), USD(450)}; + return TokenData{ + .gets = EUR, .pays = USD, .remTakerGets = EUR(540), .remTakerPays = USD(450)}; }; auto test = [&](auto&& initToken) { @@ -2140,5 +2146,4 @@ struct FlowMPT_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_PRIO(FlowMPT, app, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Flow_test.cpp b/src/test/app/Flow_test.cpp index c9b3810831..8f096a970f 100644 --- a/src/test/app/Flow_test.cpp +++ b/src/test/app/Flow_test.cpp @@ -49,8 +49,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { bool getNoRippleFlag( @@ -1324,5 +1323,4 @@ struct Flow_manual_test : public Flow_test BEAST_DEFINE_TESTSUITE_PRIO(Flow, app, xrpl, 2); BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Flow_manual, app, xrpl, 4); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/GRPCServerTLS_test.cpp b/src/test/app/GRPCServerTLS_test.cpp index 041dcc4c53..a421f981f7 100644 --- a/src/test/app/GRPCServerTLS_test.cpp +++ b/src/test/app/GRPCServerTLS_test.cpp @@ -334,8 +334,7 @@ private: } // namespace -namespace xrpl { -namespace test { +namespace xrpl::test { /** * Helper function to make a simple gRPC call to test connectivity. * Returns true if the call succeeded, false otherwise. @@ -847,5 +846,4 @@ public: BEAST_DEFINE_TESTSUITE(GRPCServerTLS, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/HashRouter_test.cpp b/src/test/app/HashRouter_test.cpp index 70bf0a1a39..3ad317b157 100644 --- a/src/test/app/HashRouter_test.cpp +++ b/src/test/app/HashRouter_test.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class HashRouter_test : public beast::unit_test::suite { @@ -412,5 +411,4 @@ public: BEAST_DEFINE_TESTSUITE(HashRouter, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 8e6e63b89a..aeb2b8c20c 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -61,8 +61,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Invariants_test : public beast::unit_test::suite { @@ -1665,23 +1664,24 @@ class Invariants_test : public beast::unit_test::suite }; auto const mods = std::to_array({ { - "pseudo-account has 0 pseudo-account fields set", - [this](SLE::pointer& sle) { - BEAST_EXPECT(sle->at(~sfVaultID)); - sle->at(~sfVaultID) = std::nullopt; - }, + .expectedFailure = "pseudo-account has 0 pseudo-account fields set", + .func = + [this](SLE::pointer& sle) { + BEAST_EXPECT(sle->at(~sfVaultID)); + sle->at(~sfVaultID) = std::nullopt; + }, }, { - "pseudo-account sequence changed", - [](SLE::pointer& sle) { sle->at(sfSequence) = 12345; }, + .expectedFailure = "pseudo-account sequence changed", + .func = [](SLE::pointer& sle) { sle->at(sfSequence) = 12345; }, }, { - "pseudo-account flags are not set", - [](SLE::pointer& sle) { sle->at(sfFlags) = lsfNoFreeze; }, + .expectedFailure = "pseudo-account flags are not set", + .func = [](SLE::pointer& sle) { sle->at(sfFlags) = lsfNoFreeze; }, }, { - "pseudo-account has a regular key", - [](SLE::pointer& sle) { sle->at(sfRegularKey) = Account("regular").id(); }, + .expectedFailure = "pseudo-account has a regular key", + .func = [](SLE::pointer& sle) { sle->at(sfRegularKey) = Account("regular").id(); }, }, }); @@ -2512,9 +2512,9 @@ class Invariants_test : public beast::unit_test::suite .sharesTotal = adjustment, .vaultAssets = adjustment, .accountAssets = // - AccountAmount{id, -adjustment}, + AccountAmount{.account = id, .amount = -adjustment}, .accountShares = // - AccountAmount{id, adjustment}}; + AccountAmount{.account = id, .amount = adjustment}}; fn(sample); return sample; }; @@ -4101,7 +4101,7 @@ class Invariants_test : public beast::unit_test::suite NumberMantissaScaleGuard const g{MantissaRange::large}; auto makeDelta = [&vaultAsset](Number const& n) -> ValidVault::DeltaInfo { - return {n, scale(n, vaultAsset.raw())}; + return {.delta = n, .scale = scale(n, vaultAsset.raw())}; }; auto const testCases = std::vector{ @@ -4241,5 +4241,4 @@ public: BEAST_DEFINE_TESTSUITE(Invariants, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LPTokenTransfer_test.cpp b/src/test/app/LPTokenTransfer_test.cpp index c73504186a..2b440c67d5 100644 --- a/src/test/app/LPTokenTransfer_test.cpp +++ b/src/test/app/LPTokenTransfer_test.cpp @@ -20,8 +20,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LPTokenTransfer_test : public jtx::AMMTest { @@ -450,5 +449,4 @@ public: }; BEAST_DEFINE_TESTSUITE(LPTokenTransfer, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LedgerHistory_test.cpp b/src/test/app/LedgerHistory_test.cpp index 16be0e2da8..e78bdc588f 100644 --- a/src/test/app/LedgerHistory_test.cpp +++ b/src/test/app/LedgerHistory_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LedgerHistory_test : public beast::unit_test::suite { @@ -182,5 +181,4 @@ public: BEAST_DEFINE_TESTSUITE(LedgerHistory, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LedgerMaster_test.cpp b/src/test/app/LedgerMaster_test.cpp index 5f9a756157..625eb22ac5 100644 --- a/src/test/app/LedgerMaster_test.cpp +++ b/src/test/app/LedgerMaster_test.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LedgerMaster_test : public beast::unit_test::suite { @@ -130,5 +129,4 @@ public: BEAST_DEFINE_TESTSUITE(LedgerMaster, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LedgerReplay_test.cpp b/src/test/app/LedgerReplay_test.cpp index 9205b38ce5..aec0bec592 100644 --- a/src/test/app/LedgerReplay_test.cpp +++ b/src/test/app/LedgerReplay_test.cpp @@ -63,8 +63,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct LedgerReplay_test : public beast::unit_test::suite { @@ -114,9 +113,9 @@ public: : ledgerSource(ledgerSource), ledgerSink(ledgerSink), bhvr(bhvr) { } - virtual ~MagicInboundLedgers() = default; + ~MagicInboundLedgers() override = default; - virtual std::shared_ptr + std::shared_ptr acquire(uint256 const& hash, std::uint32_t seq, InboundLedger::Reason) override { if (bhvr == InboundLedgersBehavior::DropAll) @@ -130,18 +129,18 @@ public: return {}; } - virtual void + void acquireAsync(uint256 const& hash, std::uint32_t seq, InboundLedger::Reason reason) override { } - virtual std::shared_ptr + std::shared_ptr find(LedgerHash const& hash) override { return {}; } - virtual bool + bool gotLedgerData( LedgerHash const& ledgerHash, std::shared_ptr, @@ -150,59 +149,59 @@ public: return false; } - virtual void + void gotStaleData(std::shared_ptr packet) override { } - virtual void + void logFailure(uint256 const& h, std::uint32_t seq) override { } - virtual bool + bool isFailure(uint256 const& h) override { return false; } - virtual void + void clearFailures() override { } - virtual Json::Value + Json::Value getInfo() override { return {}; } - virtual std::size_t + std::size_t fetchRate() override { return 0; } - virtual void + void onLedgerFetched() override { } - virtual void + void gotFetchPack() override { } - virtual void + void sweep() override { } - virtual void + void stop() override { } - virtual size_t + size_t cacheSize() override { return 0; @@ -699,7 +698,7 @@ public: findTask(uint256 const& hash, int totalReplay) { std::unique_lock const lock(replayer.mtx_); - auto i = std::find_if(replayer.tasks_.begin(), replayer.tasks_.end(), [&](auto const& t) { + auto i = std::ranges::find_if(replayer.tasks_, [&](auto const& t) { return t->parameter_.finishHash_ == hash && t->parameter_.totalLedgers_ == totalReplay; }); if (i == replayer.tasks_.end()) @@ -904,7 +903,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite testProofPath() { testcase("ProofPath"); - LedgerServer server(*this, {1}); + LedgerServer server(*this, {.initLedgers = 1}); auto const l = server.ledgerMaster.getClosedLedger(); { @@ -962,7 +961,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite testReplayDelta() { testcase("ReplayDelta"); - LedgerServer server(*this, {1}); + LedgerServer server(*this, {.initLedgers = 1}); auto const l = server.ledgerMaster.getClosedLedger(); { @@ -1125,7 +1124,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite auto ilBhvr = InboundLedgersBehavior::DropAll; auto peerFeature = PeerFeature::None; - NetworkOfTwo net(*this, {totalReplay + 1}, psBhvr, ilBhvr, peerFeature); + NetworkOfTwo net(*this, {.initLedgers = totalReplay + 1}, psBhvr, ilBhvr, peerFeature); auto l = net.server.ledgerMaster.getClosedLedger(); uint256 const finalHash = l->header().hash; @@ -1160,7 +1159,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite testcase("all the ledgers from InboundLedgers"); NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, PeerSetBehavior::DropAll, InboundLedgersBehavior::Good, PeerFeature::None); @@ -1216,7 +1215,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, peerSetBehavior, InboundLedgersBehavior::DropAll, PeerFeature::LedgerReplayEnabled); @@ -1249,7 +1248,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite int const totalReplay = 3; NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, PeerSetBehavior::DropAll, InboundLedgersBehavior::Good, PeerFeature::LedgerReplayEnabled); @@ -1274,7 +1273,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite int const totalReplay = 3; NetworkOfTwo net( *this, - {totalReplay + 1 + 1}, + {.initLedgers = totalReplay + 1 + 1}, PeerSetBehavior::DropAll, InboundLedgersBehavior::DropAll, PeerFeature::LedgerReplayEnabled); @@ -1307,7 +1306,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite int const totalReplay = 3; NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, PeerSetBehavior::DropLedgerDeltaReply, InboundLedgersBehavior::DropAll, PeerFeature::LedgerReplayEnabled); @@ -1340,7 +1339,7 @@ struct LedgerReplayer_test : public beast::unit_test::suite int const totalReplay = 5; NetworkOfTwo net( *this, - {(totalReplay * 3) + 1}, + {.initLedgers = (totalReplay * 3) + 1}, PeerSetBehavior::Good, InboundLedgersBehavior::Good, PeerFeature::LedgerReplayEnabled); @@ -1438,7 +1437,7 @@ struct LedgerReplayerTimeout_test : public beast::unit_test::suite int const totalReplay = 3; NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, PeerSetBehavior::DropAll, InboundLedgersBehavior::Good, PeerFeature::LedgerReplayEnabled); @@ -1464,7 +1463,7 @@ struct LedgerReplayerTimeout_test : public beast::unit_test::suite int const totalReplay = 3; NetworkOfTwo net( *this, - {totalReplay + 1}, + {.initLedgers = totalReplay + 1}, PeerSetBehavior::DropAll, InboundLedgersBehavior::Good, PeerFeature::LedgerReplayEnabled); @@ -1503,7 +1502,7 @@ struct LedgerReplayerLong_test : public beast::unit_test::suite int const rounds = 4; NetworkOfTwo net( *this, - {(totalReplay * rounds) + 1}, + {.initLedgers = (totalReplay * rounds) + 1}, PeerSetBehavior::Good, InboundLedgersBehavior::Good, PeerFeature::LedgerReplayEnabled); @@ -1551,5 +1550,4 @@ BEAST_DEFINE_TESTSUITE_PRIO(LedgerReplayer, app, xrpl, 1); BEAST_DEFINE_TESTSUITE(LedgerReplayerTimeout, app, xrpl); BEAST_DEFINE_TESTSUITE_MANUAL(LedgerReplayerLong, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LendingHelpers_test.cpp b/src/test/app/LendingHelpers_test.cpp index 25fb507d2c..1e43c45104 100644 --- a/src/test/app/LendingHelpers_test.cpp +++ b/src/test/app/LendingHelpers_test.cpp @@ -13,8 +13,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LendingHelpers_test : public beast::unit_test::suite { @@ -1209,5 +1208,4 @@ public: BEAST_DEFINE_TESTSUITE(LendingHelpers, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/LoanBroker_test.cpp b/src/test/app/LoanBroker_test.cpp index 8efdd9872f..55818b131c 100644 --- a/src/test/app/LoanBroker_test.cpp +++ b/src/test/app/LoanBroker_test.cpp @@ -57,8 +57,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LoanBroker_test : public beast::unit_test::suite { @@ -1852,5 +1851,4 @@ public: BEAST_DEFINE_TESTSUITE(LoanBroker, tx, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Loan_test.cpp b/src/test/app/Loan_test.cpp index cd3fe1df2e..8d919d7dd3 100644 --- a/src/test/app/Loan_test.cpp +++ b/src/test/app/Loan_test.cpp @@ -80,8 +80,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Loan_test : public beast::unit_test::suite { @@ -182,8 +181,11 @@ protected: jtx::PrettyAsset const& asset_, Keylet const& brokerKeylet_, Keylet const& vaultKeylet_, - BrokerParameters const& p) - : asset(asset_), brokerID(brokerKeylet_.key), vaultID(vaultKeylet_.key), params(p) + BrokerParameters p) + : asset(asset_) + , brokerID(brokerKeylet_.key) + , vaultID(vaultKeylet_.key) + , params(std::move(p)) { } @@ -3671,10 +3673,9 @@ protected: // From FIND-001 testcase << "Batch Bypass Counterparty"; - bool const lendingBatchEnabled = !std::any_of( - Batch::disabledTxTypes.begin(), Batch::disabledTxTypes.end(), [](auto const& disabled) { - return disabled == ttLOAN_BROKER_SET; - }); + bool const lendingBatchEnabled = !std::ranges::any_of( + Batch::disabledTxTypes, + [](auto const& disabled) { return disabled == ttLOAN_BROKER_SET; }); using namespace jtx; using namespace std::chrono_literals; @@ -7384,5 +7385,4 @@ BEAST_DEFINE_TESTSUITE(Loan, tx, xrpl); BEAST_DEFINE_TESTSUITE_MANUAL(LoanBatch, tx, xrpl); BEAST_DEFINE_TESTSUITE_MANUAL(LoanArbitrary, tx, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/MPToken_test.cpp b/src/test/app/MPToken_test.cpp index d2af168186..a1c57ccbc2 100644 --- a/src/test/app/MPToken_test.cpp +++ b/src/test/app/MPToken_test.cpp @@ -66,8 +66,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class MPToken_test : public beast::unit_test::suite { @@ -6813,5 +6812,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(MPToken, app, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Manifest_test.cpp b/src/test/app/Manifest_test.cpp index b64a7f78f3..1025b73fe8 100644 --- a/src/test/app/Manifest_test.cpp +++ b/src/test/app/Manifest_test.cpp @@ -37,8 +37,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Manifest_test : public beast::unit_test::suite { @@ -97,7 +96,7 @@ public: { } } - ~Manifest_test() + ~Manifest_test() override { try { @@ -238,7 +237,7 @@ public: return result; }; auto sort = [](std::vector mv) -> std::vector { - std::sort(mv.begin(), mv.end(), [](Manifest const* lhs, Manifest const* rhs) { + std::ranges::sort(mv, [](Manifest const* lhs, Manifest const* rhs) { return lhs->serialized < rhs->serialized; }); return mv; @@ -951,5 +950,4 @@ public: BEAST_DEFINE_TESTSUITE(Manifest, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/MultiSign_test.cpp b/src/test/app/MultiSign_test.cpp index c27d9b642c..f41042644f 100644 --- a/src/test/app/MultiSign_test.cpp +++ b/src/test/app/MultiSign_test.cpp @@ -45,8 +45,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class MultiSign_test : public beast::unit_test::suite { @@ -363,7 +362,7 @@ public: env.require(owners(alice, 1)); msig phantoms{bogie, demon}; - std::reverse(phantoms.signers.begin(), phantoms.signers.end()); + std::ranges::reverse(phantoms.signers); std::uint32_t const aliceSeq = env.seq(alice); env(noop(alice), phantoms, @@ -1202,7 +1201,7 @@ public: STTx local = *(tx.stx); // Unsort the Signers array. auto& signers = local.peekFieldArray(sfSigners); - std::reverse(signers.begin(), signers.end()); + std::ranges::reverse(signers); // Signature should fail. auto const info = submitSTTx(local); BEAST_EXPECT( @@ -1564,5 +1563,4 @@ public: BEAST_DEFINE_TESTSUITE(MultiSign, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/NFTokenBurn_test.cpp b/src/test/app/NFTokenBurn_test.cpp index 69123649ce..08d7b4305e 100644 --- a/src/test/app/NFTokenBurn_test.cpp +++ b/src/test/app/NFTokenBurn_test.cpp @@ -400,7 +400,7 @@ class NFTokenBurn_test : public beast::unit_test::suite // Sort the NFTs so they are listed in storage order, not // creation order. - std::sort(nfts.begin(), nfts.end()); + std::ranges::sort(nfts); // Verify that the ledger does indeed contain exactly three pages // of NFTs with 32 entries in each page. @@ -654,7 +654,7 @@ class NFTokenBurn_test : public beast::unit_test::suite return; // Burn all the tokens in the first page. - std::reverse(nfts.begin(), nfts.end()); + std::ranges::reverse(nfts); for (int i = 0; i < 32; ++i) { env(token::burn(alice, {nfts.back()})); @@ -682,7 +682,7 @@ class NFTokenBurn_test : public beast::unit_test::suite BEAST_EXPECT(!lastNFTokenPage->isFieldPresent(sfNextPageMin)); // Burn all the tokens in the last page. - std::reverse(nfts.begin(), nfts.end()); + std::ranges::reverse(nfts); for (int i = 0; i < 32; ++i) { env(token::burn(alice, {nfts.back()})); @@ -1057,7 +1057,7 @@ class NFTokenBurn_test : public beast::unit_test::suite // Sort the NFTs so they are listed in storage order, not // creation order. - std::sort(nfts.begin(), nfts.end()); + std::ranges::sort(nfts); // Verify that the ledger does indeed contain exactly three pages // of NFTs with 32 entries in each page. diff --git a/src/test/app/NFTokenDir_test.cpp b/src/test/app/NFTokenDir_test.cpp index d731b9c2c6..5764e87f76 100644 --- a/src/test/app/NFTokenDir_test.cpp +++ b/src/test/app/NFTokenDir_test.cpp @@ -148,7 +148,7 @@ class NFTokenDir_test : public beast::unit_test::suite } // Buyer accepts all of the offers in reverse order. - std::reverse(offers.begin(), offers.end()); + std::ranges::reverse(offers); for (uint256 const& offer : offers) { env(token::acceptSellOffer(buyer, offer)); @@ -257,7 +257,7 @@ class NFTokenDir_test : public beast::unit_test::suite { uint256 ownedID; BEAST_EXPECT(ownedID.parseHex(ownedNFT[sfNFTokenID.jsonName].asString())); - auto const foundIter = std::find(nftIDs.begin(), nftIDs.end(), ownedID); + auto const foundIter = std::ranges::find(nftIDs, ownedID); // Assuming we find the NFT, erase it so we know it's been // found and can't be found again. @@ -465,7 +465,7 @@ class NFTokenDir_test : public beast::unit_test::suite { uint256 ownedID; BEAST_EXPECT(ownedID.parseHex(ownedNFT[sfNFTokenID.jsonName].asString())); - auto const foundIter = std::find(nftIDs.begin(), nftIDs.end(), ownedID); + auto const foundIter = std::ranges::find(nftIDs, ownedID); // Assuming we find the NFT, erase it so we know it's been // found and can't be found again. @@ -703,7 +703,7 @@ class NFTokenDir_test : public beast::unit_test::suite { uint256 ownedID; BEAST_EXPECT(ownedID.parseHex(ownedNFT[sfNFTokenID.jsonName].asString())); - auto const foundIter = std::find(nftIDs.begin(), nftIDs.end(), ownedID); + auto const foundIter = std::ranges::find(nftIDs, ownedID); // Assuming we find the NFT, erase it so we know it's been found // and can't be found again. diff --git a/src/test/app/NFToken_test.cpp b/src/test/app/NFToken_test.cpp index 441d889868..40934cc095 100644 --- a/src/test/app/NFToken_test.cpp +++ b/src/test/app/NFToken_test.cpp @@ -2519,9 +2519,9 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite sortedNFTs.reserve(nfts.size()); for (std::size_t i = 0; i < nfts.size(); ++i) sortedNFTs.push_back(nfts[i]); - std::sort( - sortedNFTs.begin(), - sortedNFTs.end(), + std::ranges::sort( + sortedNFTs, + [](Json::Value const& lhs, Json::Value const& rhs) { return lhs[jss::nft_serial] < rhs[jss::nft_serial]; }); @@ -5623,7 +5623,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite // The new NFT minted will not have the same ID // as any of the NFTs authorized minter minted - BEAST_EXPECT(std::find(nftIDs.begin(), nftIDs.end(), remintNFTokenID) == nftIDs.end()); + BEAST_EXPECT(std::ranges::find(nftIDs, remintNFTokenID) == nftIDs.end()); } // When an account mints and burns a batch of NFTokens using tickets, @@ -5722,7 +5722,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite // The new NFT minted will not have the same ID // as any of the NFTs authorized minter minted using tickets - BEAST_EXPECT(std::find(nftIDs.begin(), nftIDs.end(), remintNFTokenID) == nftIDs.end()); + BEAST_EXPECT(std::ranges::find(nftIDs, remintNFTokenID) == nftIDs.end()); } // When an authorized minter mints and burns a batch of NFTokens using // tickets, issuer's account needs to wait a longer time before it can @@ -5825,7 +5825,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite // The new NFT minted will not have the same ID // as one of NFTs authorized minter minted using tickets - BEAST_EXPECT(std::find(nftIDs.begin(), nftIDs.end(), remintNFTokenID) == nftIDs.end()); + BEAST_EXPECT(std::ranges::find(nftIDs, remintNFTokenID) == nftIDs.end()); } void @@ -6143,8 +6143,8 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite }); // Sort both array to prepare for comparison - std::sort(metaIDs.begin(), metaIDs.end()); - std::sort(actualNftIDs.begin(), actualNftIDs.end()); + std::ranges::sort(metaIDs); + std::ranges::sort(actualNftIDs); // Make sure the expect number of NFTs is correct BEAST_EXPECT(metaIDs.size() == actualNftIDs.size()); diff --git a/src/test/app/NetworkID_test.cpp b/src/test/app/NetworkID_test.cpp index d8666aff90..5ac97b8df3 100644 --- a/src/test/app/NetworkID_test.cpp +++ b/src/test/app/NetworkID_test.cpp @@ -21,8 +21,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class NetworkID_test : public beast::unit_test::suite { @@ -156,5 +155,4 @@ public: BEAST_DEFINE_TESTSUITE(NetworkID, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/NetworkOPs_test.cpp b/src/test/app/NetworkOPs_test.cpp index 976a70d803..e6673dc2f5 100644 --- a/src/test/app/NetworkOPs_test.cpp +++ b/src/test/app/NetworkOPs_test.cpp @@ -15,8 +15,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class NetworkOPs_test : public beast::unit_test::suite { @@ -62,5 +61,4 @@ public: BEAST_DEFINE_TESTSUITE(NetworkOPs, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/OfferMPT_test.cpp b/src/test/app/OfferMPT_test.cpp index 8af583089a..b07fe043d2 100644 --- a/src/test/app/OfferMPT_test.cpp +++ b/src/test/app/OfferMPT_test.cpp @@ -51,8 +51,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class OfferMPT_test : public beast::unit_test::suite { @@ -2033,37 +2032,37 @@ public: // clang-format off TestData const tests[]{ // acct fundXrp bookAmt preTrust offerAmt tec spentXrp balanceUSD offers owners scale - {"ann", reserve(env, 0) + 0 * f, 1, noPreAuth, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, // Account is at the reserve, and will dip below once fees are subtracted. - {"bev", reserve(env, 0) + 1 * f, 1, noPreAuth, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, // Account has just enough for the reserve and the fee. - {"cam", reserve(env, 0) + 2 * f, 0, noPreAuth, 1000, tecINSUF_RESERVE_OFFER, f, USD( 0), 0, 0}, // Account has enough for the reserve, the fee and the offer, and a bit more, but not enough for the reserve after the offer is placed. - {"deb", reserve(env, 0) + 2 * f, 1, noPreAuth, 1000, tesSUCCESS, 2 * f, USD( 1), 0, 1, 100000}, // Account has enough to buy a little USD then the offer runs dry. - {"eve", reserve(env, 1) + 0 * f, 0, noPreAuth, 1000, tesSUCCESS, f, USD( 0), 1, 1}, // No offer to cross - {"flo", reserve(env, 1) + 0 * f, 1, noPreAuth, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 0, 1}, - {"gay", reserve(env, 1) + 1 * f, 1000, noPreAuth, 1000, tesSUCCESS, XRP( 50) + f, USD( 50), 0, 1}, - {"hye", XRP(1000) + 1 * f, 1000, noPreAuth, 1000, tesSUCCESS, XRP( 800) + f, USD( 800), 0, 1}, - {"ivy", XRP( 1) + reserve(env, 1) + 1 * f, 1, noPreAuth, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 0, 1}, - {"joy", XRP( 1) + reserve(env, 2) + 1 * f, 1, noPreAuth, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 1, 2}, - {"kim", XRP( 900) + reserve(env, 2) + 1 * f, 999, noPreAuth, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"liz", XRP( 998) + reserve(env, 0) + 1 * f, 999, noPreAuth, 1000, tesSUCCESS, XRP( 998) + f, USD( 998), 0, 1}, - {"meg", XRP( 998) + reserve(env, 1) + 1 * f, 999, noPreAuth, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"nia", XRP( 998) + reserve(env, 2) + 1 * f, 999, noPreAuth, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 1, 2}, - {"ova", XRP( 999) + reserve(env, 0) + 1 * f, 1000, noPreAuth, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"pam", XRP( 999) + reserve(env, 1) + 1 * f, 1000, noPreAuth, 1000, tesSUCCESS, XRP(1000) + f, USD( 1000), 0, 1}, - {"rae", XRP( 999) + reserve(env, 2) + 1 * f, 1000, noPreAuth, 1000, tesSUCCESS, XRP(1000) + f, USD( 1000), 0, 1}, - {"sue", XRP(1000) + reserve(env, 2) + 1 * f, 0, noPreAuth, 1000, tesSUCCESS, f, USD( 0), 1, 1}, + {.account="ann", .fundXrp=reserve(env, 0) + 0 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account is at the reserve, and will dip below once fees are subtracted. + {.account="bev", .fundXrp=reserve(env, 0) + 1 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account has just enough for the reserve and the fee. + {.account="cam", .fundXrp=reserve(env, 0) + 2 * f, .bookAmount=0, .preAuth=noPreAuth, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account has enough for the reserve, the fee and the offer, and a bit more, but not enough for the reserve after the offer is placed. + {.account="deb", .fundXrp=reserve(env, 0) + 2 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=2 * f, .balanceUsd=USD( 1), .offers=0, .owners=1, .scale=100000}, // Account has enough to buy a little USD then the offer runs dry. + {.account="eve", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=0, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=f, .balanceUsd=USD( 0), .offers=1, .owners=1}, // No offer to cross + {.account="flo", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="gay", .fundXrp=reserve(env, 1) + 1 * f, .bookAmount=1000, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 50) + f, .balanceUsd=USD( 50), .offers=0, .owners=1}, + {.account="hye", .fundXrp=XRP(1000) + 1 * f, .bookAmount=1000, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 800) + f, .balanceUsd=USD( 800), .offers=0, .owners=1}, + {.account="ivy", .fundXrp=XRP( 1) + reserve(env, 1) + 1 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="joy", .fundXrp=XRP( 1) + reserve(env, 2) + 1 * f, .bookAmount=1, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=1, .owners=2}, + {.account="kim", .fundXrp=XRP( 900) + reserve(env, 2) + 1 * f, .bookAmount=999, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="liz", .fundXrp=XRP( 998) + reserve(env, 0) + 1 * f, .bookAmount=999, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 998) + f, .balanceUsd=USD( 998), .offers=0, .owners=1}, + {.account="meg", .fundXrp=XRP( 998) + reserve(env, 1) + 1 * f, .bookAmount=999, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="nia", .fundXrp=XRP( 998) + reserve(env, 2) + 1 * f, .bookAmount=999, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=1, .owners=2}, + {.account="ova", .fundXrp=XRP( 999) + reserve(env, 0) + 1 * f, .bookAmount=1000, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="pam", .fundXrp=XRP( 999) + reserve(env, 1) + 1 * f, .bookAmount=1000, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(1000) + f, .balanceUsd=USD( 1000), .offers=0, .owners=1}, + {.account="rae", .fundXrp=XRP( 999) + reserve(env, 2) + 1 * f, .bookAmount=1000, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(1000) + f, .balanceUsd=USD( 1000), .offers=0, .owners=1}, + {.account="sue", .fundXrp=XRP(1000) + reserve(env, 2) + 1 * f, .bookAmount=0, .preAuth=noPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=f, .balanceUsd=USD( 0), .offers=1, .owners=1}, //---------------- Pre-created MPT --------------------- // Unlike from IOU, an issuer can't pre-create MPToken for an account (see similar tests in Offer_test.cpp) - {"ned", reserve(env, 1) + 0 * f, 1, acctPreAuth, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"ole", reserve(env, 1) + 1 * f, 1, acctPreAuth, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"pat", reserve(env, 1) + 2 * f, 0, acctPreAuth, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"quy", reserve(env, 1) + 2 * f, 1, acctPreAuth, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"ron", reserve(env, 1) + 3 * f, 0, acctPreAuth, 1000, tecINSUF_RESERVE_OFFER, 2 * f, USD( 0), 0, 1}, - {"syd", reserve(env, 1) + 3 * f, 1, acctPreAuth, 1000, tesSUCCESS, 3 * f, USD( 1), 0, 1, 100000}, - {"ted", XRP( 20) + reserve(env, 1) + 2 * f, 1000, acctPreAuth, 1000, tesSUCCESS, XRP(20) + 2 * f, USD( 20), 0, 1}, - {"uli", reserve(env, 2) + 0 * f, 0, acctPreAuth, 1000, tecINSUF_RESERVE_OFFER, 2 * f, USD( 0), 0, 1}, - {"vic", reserve(env, 2) + 0 * f, 1, acctPreAuth, 1000, tesSUCCESS, XRP( 1) + 2 * f, USD( 1), 0, 1}, - {"wes", reserve(env, 2) + 1 * f, 0, acctPreAuth, 1000, tesSUCCESS, 2 * f, USD( 0), 1, 2}, - {"xan", reserve(env, 2) + 1 * f, 1, acctPreAuth, 1000, tesSUCCESS, XRP( 1) + 2 * f, USD( 1), 1, 2}, + {.account="ned", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="ole", .fundXrp=reserve(env, 1) + 1 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="pat", .fundXrp=reserve(env, 1) + 2 * f, .bookAmount=0, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="quy", .fundXrp=reserve(env, 1) + 2 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="ron", .fundXrp=reserve(env, 1) + 3 * f, .bookAmount=0, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="syd", .fundXrp=reserve(env, 1) + 3 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=3 * f, .balanceUsd=USD( 1), .offers=0, .owners=1, .scale=100000}, + {.account="ted", .fundXrp=XRP( 20) + reserve(env, 1) + 2 * f, .bookAmount=1000, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(20) + 2 * f, .balanceUsd=USD( 20), .offers=0, .owners=1}, + {.account="uli", .fundXrp=reserve(env, 2) + 0 * f, .bookAmount=0, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="vic", .fundXrp=reserve(env, 2) + 0 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + 2 * f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="wes", .fundXrp=reserve(env, 2) + 1 * f, .bookAmount=0, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=1, .owners=2}, + {.account="xan", .fundXrp=reserve(env, 2) + 1 * f, .bookAmount=1, .preAuth=acctPreAuth, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + 2 * f, .balanceUsd=USD( 1), .offers=1, .owners=2}, }; // clang-format on @@ -2487,34 +2486,34 @@ public: // Constructor with takerGets/takerPays TestData( - std::string&& account_, // Account operated on - STAmount const& fundXrp_, // XRP acct funded with - STAmount const& fundUSD_, // USD acct funded with - STAmount const& gwGets_, // gw's offer - STAmount const& gwPays_, // - STAmount const& acctGets_, // acct's offer - STAmount const& acctPays_, // - TER tec_, // Returned tec code - STAmount const& spentXrp_, // Amount removed from fundXrp - STAmount const& finalUsd_, // Final USD balance on acct - int offers_, // Offers on acct - int owners_, // Owners on acct - STAmount const& takerGets_, // Remainder of acct's offer - STAmount const& takerPays_) // + std::string&& account_, // Account operated on + STAmount fundXrp_, // XRP acct funded with + STAmount fundUSD_, // USD acct funded with + STAmount gwGets_, // gw's offer + STAmount gwPays_, // + STAmount acctGets_, // acct's offer + STAmount acctPays_, // + TER tec_, // Returned tec code + STAmount spentXrp_, // Amount removed from fundXrp + STAmount finalUsd_, // Final USD balance on acct + int offers_, // Offers on acct + int owners_, // Owners on acct + STAmount takerGets_, // Remainder of acct's offer + STAmount takerPays_) // : account(std::move(account_)) - , fundXrp(fundXrp_) - , fundUSD(fundUSD_) - , gwGets(gwGets_) - , gwPays(gwPays_) - , acctGets(acctGets_) - , acctPays(acctPays_) + , fundXrp(std::move(fundXrp_)) + , fundUSD(std::move(fundUSD_)) + , gwGets(std::move(gwGets_)) + , gwPays(std::move(gwPays_)) + , acctGets(std::move(acctGets_)) + , acctPays(std::move(acctPays_)) , tec(tec_) - , spentXrp(spentXrp_) - , finalUsd(finalUsd_) + , spentXrp(std::move(spentXrp_)) + , finalUsd(std::move(finalUsd_)) , offers(offers_) , owners(owners_) - , takerGets(takerGets_) - , takerPays(takerPays_) + , takerGets(std::move(takerGets_)) + , takerPays(std::move(takerPays_)) { } @@ -4151,9 +4150,8 @@ public: sortedOffersOnAccount(jtx::Env& env, jtx::Account const& acct) { std::vector> offers{offersOnAccount(env, acct)}; - std::sort( - offers.begin(), - offers.end(), + std::ranges::sort( + offers, [](std::shared_ptr const& rhs, std::shared_ptr const& lhs) { return (*rhs)[sfSequence] < (*lhs)[sfSequence]; }); @@ -4771,5 +4769,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(OfferMPT, tx, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Offer_test.cpp b/src/test/app/Offer_test.cpp index 4679bc2e9b..0c00c91f63 100644 --- a/src/test/app/Offer_test.cpp +++ b/src/test/app/Offer_test.cpp @@ -54,8 +54,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class OfferBaseUtil_test : public beast::unit_test::suite { @@ -2247,45 +2246,45 @@ public: // clang-format off TestData const tests[]{ // acct fundXrp bookAmt preTrust offerAmount tec spentXrp balanceUSD offers owners - {"ann", reserve(env, 0) + 0 * f, 1, noPreTrust, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, // Account is at the reserve, and will dip below once fees are subtracted. - {"bev", reserve(env, 0) + 1 * f, 1, noPreTrust, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, // Account has just enough for the reserve and the fee. - {"cam", reserve(env, 0) + 2 * f, 0, noPreTrust, 1000, tecINSUF_RESERVE_OFFER, f, USD( 0), 0, 0}, // Account has enough for the reserve, the fee and the offer, and a bit more, but not enough for the reserve after the offer is placed. - {"deb", drops(10) + reserve(env, 0) + 1 * f, 1, noPreTrust, 1000, tesSUCCESS, drops(10) + f, USD(0.00001), 0, 1}, // Account has enough to buy a little USD then the offer runs dry. - {"eve", reserve(env, 1) + 0 * f, 0, noPreTrust, 1000, tesSUCCESS, f, USD( 0), 1, 1}, // No offer to cross - {"flo", reserve(env, 1) + 0 * f, 1, noPreTrust, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 0, 1}, - {"gay", reserve(env, 1) + 1 * f, 1000, noPreTrust, 1000, tesSUCCESS, XRP( 50) + f, USD( 50), 0, 1}, - {"hye", XRP(1000) + 1 * f, 1000, noPreTrust, 1000, tesSUCCESS, XRP( 800) + f, USD( 800), 0, 1}, - {"ivy", XRP( 1) + reserve(env, 1) + 1 * f, 1, noPreTrust, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 0, 1}, - {"joy", XRP( 1) + reserve(env, 2) + 1 * f, 1, noPreTrust, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 1, 2}, - {"kim", XRP( 900) + reserve(env, 2) + 1 * f, 999, noPreTrust, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"liz", XRP( 998) + reserve(env, 0) + 1 * f, 999, noPreTrust, 1000, tesSUCCESS, XRP( 998) + f, USD( 998), 0, 1}, - {"meg", XRP( 998) + reserve(env, 1) + 1 * f, 999, noPreTrust, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"nia", XRP( 998) + reserve(env, 2) + 1 * f, 999, noPreTrust, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 1, 2}, - {"ova", XRP( 999) + reserve(env, 0) + 1 * f, 1000, noPreTrust, 1000, tesSUCCESS, XRP( 999) + f, USD( 999), 0, 1}, - {"pam", XRP( 999) + reserve(env, 1) + 1 * f, 1000, noPreTrust, 1000, tesSUCCESS, XRP(1000) + f, USD( 1000), 0, 1}, - {"rae", XRP( 999) + reserve(env, 2) + 1 * f, 1000, noPreTrust, 1000, tesSUCCESS, XRP(1000) + f, USD( 1000), 0, 1}, - {"sue", XRP(1000) + reserve(env, 2) + 1 * f, 0, noPreTrust, 1000, tesSUCCESS, f, USD( 0), 1, 1}, + {.account="ann", .fundXrp=reserve(env, 0) + 0 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account is at the reserve, and will dip below once fees are subtracted. + {.account="bev", .fundXrp=reserve(env, 0) + 1 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account has just enough for the reserve and the fee. + {.account="cam", .fundXrp=reserve(env, 0) + 2 * f, .bookAmount=0, .preTrust=noPreTrust, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, // Account has enough for the reserve, the fee and the offer, and a bit more, but not enough for the reserve after the offer is placed. + {.account="deb", .fundXrp=drops(10) + reserve(env, 0) + 1 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=drops(10) + f, .balanceUsd=USD(0.00001), .offers=0, .owners=1}, // Account has enough to buy a little USD then the offer runs dry. + {.account="eve", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=0, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=f, .balanceUsd=USD( 0), .offers=1, .owners=1}, // No offer to cross + {.account="flo", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="gay", .fundXrp=reserve(env, 1) + 1 * f, .bookAmount=1000, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 50) + f, .balanceUsd=USD( 50), .offers=0, .owners=1}, + {.account="hye", .fundXrp=XRP(1000) + 1 * f, .bookAmount=1000, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 800) + f, .balanceUsd=USD( 800), .offers=0, .owners=1}, + {.account="ivy", .fundXrp=XRP( 1) + reserve(env, 1) + 1 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="joy", .fundXrp=XRP( 1) + reserve(env, 2) + 1 * f, .bookAmount=1, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=1, .owners=2}, + {.account="kim", .fundXrp=XRP( 900) + reserve(env, 2) + 1 * f, .bookAmount=999, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="liz", .fundXrp=XRP( 998) + reserve(env, 0) + 1 * f, .bookAmount=999, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 998) + f, .balanceUsd=USD( 998), .offers=0, .owners=1}, + {.account="meg", .fundXrp=XRP( 998) + reserve(env, 1) + 1 * f, .bookAmount=999, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="nia", .fundXrp=XRP( 998) + reserve(env, 2) + 1 * f, .bookAmount=999, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=1, .owners=2}, + {.account="ova", .fundXrp=XRP( 999) + reserve(env, 0) + 1 * f, .bookAmount=1000, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 999) + f, .balanceUsd=USD( 999), .offers=0, .owners=1}, + {.account="pam", .fundXrp=XRP( 999) + reserve(env, 1) + 1 * f, .bookAmount=1000, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(1000) + f, .balanceUsd=USD( 1000), .offers=0, .owners=1}, + {.account="rae", .fundXrp=XRP( 999) + reserve(env, 2) + 1 * f, .bookAmount=1000, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(1000) + f, .balanceUsd=USD( 1000), .offers=0, .owners=1}, + {.account="sue", .fundXrp=XRP(1000) + reserve(env, 2) + 1 * f, .bookAmount=0, .preTrust=noPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=f, .balanceUsd=USD( 0), .offers=1, .owners=1}, //---------------- Pre-established trust lines --------------------- - {"abe", reserve(env, 0) + 0 * f, 1, gwPreTrust, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, - {"bud", reserve(env, 0) + 1 * f, 1, gwPreTrust, 1000, tecUNFUNDED_OFFER, f, USD( 0), 0, 0}, - {"che", reserve(env, 0) + 2 * f, 0, gwPreTrust, 1000, tecINSUF_RESERVE_OFFER, f, USD( 0), 0, 0}, - {"dan", drops(10) + reserve(env, 0) + 1 * f, 1, gwPreTrust, 1000, tesSUCCESS, drops(10) + f, USD(0.00001), 0, 0}, - {"eli", XRP( 20) + reserve(env, 0) + 1 * f, 1000, gwPreTrust, 1000, tesSUCCESS, XRP(20) + 1 * f, USD( 20), 0, 0}, - {"fyn", reserve(env, 1) + 0 * f, 0, gwPreTrust, 1000, tesSUCCESS, f, USD( 0), 1, 1}, - {"gar", reserve(env, 1) + 0 * f, 1, gwPreTrust, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 1, 1}, - {"hal", reserve(env, 1) + 1 * f, 1, gwPreTrust, 1000, tesSUCCESS, XRP( 1) + f, USD( 1), 1, 1}, + {.account="abe", .fundXrp=reserve(env, 0) + 0 * f, .bookAmount=1, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, + {.account="bud", .fundXrp=reserve(env, 0) + 1 * f, .bookAmount=1, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, + {.account="che", .fundXrp=reserve(env, 0) + 2 * f, .bookAmount=0, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=f, .balanceUsd=USD( 0), .offers=0, .owners=0}, + {.account="dan", .fundXrp=drops(10) + reserve(env, 0) + 1 * f, .bookAmount=1, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=drops(10) + f, .balanceUsd=USD(0.00001), .offers=0, .owners=0}, + {.account="eli", .fundXrp=XRP( 20) + reserve(env, 0) + 1 * f, .bookAmount=1000, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(20) + 1 * f, .balanceUsd=USD( 20), .offers=0, .owners=0}, + {.account="fyn", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=0, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=f, .balanceUsd=USD( 0), .offers=1, .owners=1}, + {.account="gar", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=1, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=1, .owners=1}, + {.account="hal", .fundXrp=reserve(env, 1) + 1 * f, .bookAmount=1, .preTrust=gwPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + f, .balanceUsd=USD( 1), .offers=1, .owners=1}, - {"ned", reserve(env, 1) + 0 * f, 1, acctPreTrust, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"ole", reserve(env, 1) + 1 * f, 1, acctPreTrust, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"pat", reserve(env, 1) + 2 * f, 0, acctPreTrust, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"quy", reserve(env, 1) + 2 * f, 1, acctPreTrust, 1000, tecUNFUNDED_OFFER, 2 * f, USD( 0), 0, 1}, - {"ron", reserve(env, 1) + 3 * f, 0, acctPreTrust, 1000, tecINSUF_RESERVE_OFFER, 2 * f, USD( 0), 0, 1}, - {"syd", drops(10) + reserve(env, 1) + 2 * f, 1, acctPreTrust, 1000, tesSUCCESS, drops(10) + 2 * f, USD(0.00001), 0, 1}, - {"ted", XRP( 20) + reserve(env, 1) + 2 * f, 1000, acctPreTrust, 1000, tesSUCCESS, XRP(20) + 2 * f, USD( 20), 0, 1}, - {"uli", reserve(env, 2) + 0 * f, 0, acctPreTrust, 1000, tecINSUF_RESERVE_OFFER, 2 * f, USD( 0), 0, 1}, - {"vic", reserve(env, 2) + 0 * f, 1, acctPreTrust, 1000, tesSUCCESS, XRP( 1) + 2 * f, USD( 1), 0, 1}, - {"wes", reserve(env, 2) + 1 * f, 0, acctPreTrust, 1000, tesSUCCESS, 2 * f, USD( 0), 1, 2}, - {"xan", reserve(env, 2) + 1 * f, 1, acctPreTrust, 1000, tesSUCCESS, XRP( 1) + 2 * f, USD( 1), 1, 2}, + {.account="ned", .fundXrp=reserve(env, 1) + 0 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="ole", .fundXrp=reserve(env, 1) + 1 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="pat", .fundXrp=reserve(env, 1) + 2 * f, .bookAmount=0, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="quy", .fundXrp=reserve(env, 1) + 2 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecUNFUNDED_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="ron", .fundXrp=reserve(env, 1) + 3 * f, .bookAmount=0, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="syd", .fundXrp=drops(10) + reserve(env, 1) + 2 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=drops(10) + 2 * f, .balanceUsd=USD(0.00001), .offers=0, .owners=1}, + {.account="ted", .fundXrp=XRP( 20) + reserve(env, 1) + 2 * f, .bookAmount=1000, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP(20) + 2 * f, .balanceUsd=USD( 20), .offers=0, .owners=1}, + {.account="uli", .fundXrp=reserve(env, 2) + 0 * f, .bookAmount=0, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tecINSUF_RESERVE_OFFER, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=0, .owners=1}, + {.account="vic", .fundXrp=reserve(env, 2) + 0 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + 2 * f, .balanceUsd=USD( 1), .offers=0, .owners=1}, + {.account="wes", .fundXrp=reserve(env, 2) + 1 * f, .bookAmount=0, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=2 * f, .balanceUsd=USD( 0), .offers=1, .owners=2}, + {.account="xan", .fundXrp=reserve(env, 2) + 1 * f, .bookAmount=1, .preTrust=acctPreTrust, .offerAmount=1000, .tec=tesSUCCESS, .spentXrp=XRP( 1) + 2 * f, .balanceUsd=USD( 1), .offers=1, .owners=2}, }; // clang-format on @@ -2696,34 +2695,34 @@ public: // Constructor with takerGets/takerPays TestData( - std::string&& account_, // Account operated on - STAmount const& fundXrp_, // XRP acct funded with - STAmount const& fundUSD_, // USD acct funded with - STAmount const& gwGets_, // gw's offer - STAmount const& gwPays_, // - STAmount const& acctGets_, // acct's offer - STAmount const& acctPays_, // - TER tec_, // Returned tec code - STAmount const& spentXrp_, // Amount removed from fundXrp - STAmount const& finalUsd_, // Final USD balance on acct - int offers_, // Offers on acct - int owners_, // Owners on acct - STAmount const& takerGets_, // Remainder of acct's offer - STAmount const& takerPays_) // + std::string&& account_, // Account operated on + STAmount fundXrp_, // XRP acct funded with + STAmount fundUSD_, // USD acct funded with + STAmount gwGets_, // gw's offer + STAmount gwPays_, // + STAmount acctGets_, // acct's offer + STAmount acctPays_, // + TER tec_, // Returned tec code + STAmount spentXrp_, // Amount removed from fundXrp + STAmount finalUsd_, // Final USD balance on acct + int offers_, // Offers on acct + int owners_, // Owners on acct + STAmount takerGets_, // Remainder of acct's offer + STAmount takerPays_) // : account(std::move(account_)) - , fundXrp(fundXrp_) - , fundUSD(fundUSD_) - , gwGets(gwGets_) - , gwPays(gwPays_) - , acctGets(acctGets_) - , acctPays(acctPays_) + , fundXrp(std::move(fundXrp_)) + , fundUSD(std::move(fundUSD_)) + , gwGets(std::move(gwGets_)) + , gwPays(std::move(gwPays_)) + , acctGets(std::move(acctGets_)) + , acctPays(std::move(acctPays_)) , tec(tec_) - , spentXrp(spentXrp_) - , finalUsd(finalUsd_) + , spentXrp(std::move(spentXrp_)) + , finalUsd(std::move(finalUsd_)) , offers(offers_) , owners(owners_) - , takerGets(takerGets_) - , takerPays(takerPays_) + , takerGets(std::move(takerGets_)) + , takerPays(std::move(takerPays_)) { } @@ -3336,12 +3335,12 @@ public: // clang-format off TestData const tests[]{ // acct fundXRP fundUSD fundEUR firstOfferTec secondOfferTec - {"ann", reserve(env, 3) + f * 4, USD(1000), EUR(1000), tesSUCCESS, tesSUCCESS}, - {"bev", reserve(env, 3) + f * 4, USD( 1), EUR(1000), tesSUCCESS, tesSUCCESS}, - {"cam", reserve(env, 3) + f * 4, USD(1000), EUR( 1), tesSUCCESS, tesSUCCESS}, - {"deb", reserve(env, 3) + f * 4, USD( 0), EUR( 1), tesSUCCESS, tecUNFUNDED_OFFER}, - {"eve", reserve(env, 3) + f * 4, USD( 1), EUR( 0), tecUNFUNDED_OFFER, tesSUCCESS}, - {"flo", reserve(env, 3) + 0, USD(1000), EUR(1000), tecINSUF_RESERVE_OFFER, tecINSUF_RESERVE_OFFER}, + {.acct="ann", .fundXRP=reserve(env, 3) + f * 4, .fundUSD=USD(1000), .fundEUR=EUR(1000), .firstOfferTec=tesSUCCESS, .secondOfferTec=tesSUCCESS}, + {.acct="bev", .fundXRP=reserve(env, 3) + f * 4, .fundUSD=USD( 1), .fundEUR=EUR(1000), .firstOfferTec=tesSUCCESS, .secondOfferTec=tesSUCCESS}, + {.acct="cam", .fundXRP=reserve(env, 3) + f * 4, .fundUSD=USD(1000), .fundEUR=EUR( 1), .firstOfferTec=tesSUCCESS, .secondOfferTec=tesSUCCESS}, + {.acct="deb", .fundXRP=reserve(env, 3) + f * 4, .fundUSD=USD( 0), .fundEUR=EUR( 1), .firstOfferTec=tesSUCCESS, .secondOfferTec=tecUNFUNDED_OFFER}, + {.acct="eve", .fundXRP=reserve(env, 3) + f * 4, .fundUSD=USD( 1), .fundEUR=EUR( 0), .firstOfferTec=tecUNFUNDED_OFFER, .secondOfferTec=tesSUCCESS}, + {.acct="flo", .fundXRP=reserve(env, 3) + 0, .fundUSD=USD(1000), .fundEUR=EUR(1000), .firstOfferTec=tecINSUF_RESERVE_OFFER, .secondOfferTec=tecINSUF_RESERVE_OFFER}, }; //clang-format on @@ -3922,10 +3921,10 @@ public: // clang-format off TestData const tests[]{ // btcStart --------------------- actor[0] --------------------- -------------------- actor[1] ------------------- - {0, 0, 1, BTC(20), {{"ann", 0, drops(3900000'000000 - (4 * baseFee)), BTC(20.0), USD(3000)}, {"abe", 0, drops(4100000'000000 - (3 * baseFee)), BTC( 0), USD(750)}}}, // no BTC xfer fee - {0, 1, 0, BTC(20), {{"bev", 0, drops(4100000'000000 - (4 * baseFee)), BTC( 7.5), USD(2000)}, {"bob", 0, drops(3900000'000000 - (3 * baseFee)), BTC(10), USD( 0)}}}, // no USD xfer fee - {0, 0, 0, BTC(20), {{"cam", 0, drops(4000000'000000 - (5 * baseFee)), BTC(20.0), USD(2000)} }}, // no xfer fee - {0, 1, 0, BTC( 5), {{"deb", 1, drops(4040000'000000 - (4 * baseFee)), BTC( 0.0), USD(2000)}, {"dan", 1, drops(3960000'000000 - (3 * baseFee)), BTC( 4), USD( 0)}}}, // no USD xfer fee + {.self=0, .leg0=0, .leg1=1, .btcStart=BTC(20), .actors={{"ann", 0, drops(3900000'000000 - (4 * baseFee)), BTC(20.0), USD(3000)}, {"abe", 0, drops(4100000'000000 - (3 * baseFee)), BTC( 0), USD(750)}}}, // no BTC xfer fee + {.self=0, .leg0=1, .leg1=0, .btcStart=BTC(20), .actors={{"bev", 0, drops(4100000'000000 - (4 * baseFee)), BTC( 7.5), USD(2000)}, {"bob", 0, drops(3900000'000000 - (3 * baseFee)), BTC(10), USD( 0)}}}, // no USD xfer fee + {.self=0, .leg0=0, .leg1=0, .btcStart=BTC(20), .actors={{"cam", 0, drops(4000000'000000 - (5 * baseFee)), BTC(20.0), USD(2000)} }}, // no xfer fee + {.self=0, .leg0=1, .leg1=0, .btcStart=BTC( 5), .actors={{"deb", 1, drops(4040000'000000 - (4 * baseFee)), BTC( 0.0), USD(2000)}, {"dan", 1, drops(3960000'000000 - (3 * baseFee)), BTC( 4), USD( 0)}}}, // no USD xfer fee }; // clang-format on @@ -3974,12 +3973,9 @@ public: auto actorOffers = offersOnAccount(env, actor.acct); auto const offerCount = std::distance( actorOffers.begin(), - std::remove_if( - actorOffers.begin(), - actorOffers.end(), - [](std::shared_ptr& offer) { - return (*offer)[sfTakerGets].signum() == 0; - })); + std::ranges::remove_if(actorOffers, [](std::shared_ptr& offer) { + return (*offer)[sfTakerGets].signum() == 0; + }).begin()); BEAST_EXPECT(offerCount == actor.offers); env.require(balance(actor.acct, actor.xrp)); @@ -4073,8 +4069,8 @@ public: // clang-format off TestData const tests[]{ // btcStart ------------------- actor[0] -------------------- ------------------- actor[1] -------------------- - {0, 0, 1, BTC(5), {{"gay", 1, drops(3950000'000000 - (4 * baseFee)), BTC(5), USD(2500)}, {"gar", 1, drops(4050000'000000 - (3 * baseFee)), BTC(0), USD(1375)}}}, // no BTC xfer fee - {0, 0, 0, BTC(5), {{"hye", 2, drops(4000000'000000 - (5 * baseFee)), BTC(5), USD(2000)} }} // no xfer fee + {.self=0, .leg0=0, .leg1=1, .btcStart=BTC(5), .actors={{"gay", 1, drops(3950000'000000 - (4 * baseFee)), BTC(5), USD(2500)}, {"gar", 1, drops(4050000'000000 - (3 * baseFee)), BTC(0), USD(1375)}}}, // no BTC xfer fee + {.self=0, .leg0=0, .leg1=0, .btcStart=BTC(5), .actors={{"hye", 2, drops(4000000'000000 - (5 * baseFee)), BTC(5), USD(2000)} }} // no xfer fee }; // clang-format on @@ -4123,12 +4119,9 @@ public: auto actorOffers = offersOnAccount(env, actor.acct); auto const offerCount = std::distance( actorOffers.begin(), - std::remove_if( - actorOffers.begin(), - actorOffers.end(), - [](std::shared_ptr& offer) { - return (*offer)[sfTakerGets].signum() == 0; - })); + std::ranges::remove_if(actorOffers, [](std::shared_ptr& offer) { + return (*offer)[sfTakerGets].signum() == 0; + }).begin()); BEAST_EXPECT(offerCount == actor.offers); env.require(balance(actor.acct, actor.xrp)); @@ -4680,9 +4673,8 @@ public: sortedOffersOnAccount(jtx::Env& env, jtx::Account const& acct) { std::vector> offers{offersOnAccount(env, acct)}; - std::sort( - offers.begin(), - offers.end(), + std::ranges::sort( + offers, [](std::shared_ptr const& rhs, std::shared_ptr const& lhs) { return (*rhs)[sfSequence] < (*lhs)[sfSequence]; }); @@ -5224,5 +5216,4 @@ BEAST_DEFINE_TESTSUITE_PRIO(OfferWOSmallQOffers, app, xrpl, 2); BEAST_DEFINE_TESTSUITE_PRIO(OfferAllFeatures, app, xrpl, 2); BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Offer_manual, app, xrpl, 20); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Oracle_test.cpp b/src/test/app/Oracle_test.cpp index 42dfe8fb11..43d4a13e2b 100644 --- a/src/test/app/Oracle_test.cpp +++ b/src/test/app/Oracle_test.cpp @@ -31,10 +31,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace oracle { +namespace xrpl::test::jtx::oracle { struct Oracle_test : public beast::unit_test::suite { @@ -821,10 +818,4 @@ public: BEAST_DEFINE_TESTSUITE(Oracle, app, xrpl); -} // namespace oracle - -} // namespace jtx - -} // namespace test - -} // namespace xrpl +} // namespace xrpl::test::jtx::oracle diff --git a/src/test/app/OversizeMeta_test.cpp b/src/test/app/OversizeMeta_test.cpp index 9c4e45b187..17f4410cf6 100644 --- a/src/test/app/OversizeMeta_test.cpp +++ b/src/test/app/OversizeMeta_test.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { // Make sure "plump" order books don't have problems class PlumpBook_test : public beast::unit_test::suite @@ -179,5 +178,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(FindOversizeCross, app, xrpl, 50); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PathMPT_test.cpp b/src/test/app/PathMPT_test.cpp index 9126d28f40..482d120342 100644 --- a/src/test/app/PathMPT_test.cpp +++ b/src/test/app/PathMPT_test.cpp @@ -39,8 +39,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { namespace detail { static Json::Value @@ -117,16 +116,16 @@ public: Resource::Consumer c; RPC::JsonContext context{ - {env.journal, - app, - loadType, - app.getOPs(), - app.getLedgerMaster(), - c, - Role::USER, - {}, - {}, - RPC::apiVersionIfUnspecified}, + {.j = env.journal, + .app = app, + .loadType = loadType, + .netOps = app.getOPs(), + .ledgerMaster = app.getLedgerMaster(), + .consumer = c, + .role = Role::USER, + .coro = {}, + .infoSub = {}, + .apiVersion = RPC::apiVersionIfUnspecified}, {}, {}}; Json::Value result; @@ -461,5 +460,4 @@ public: BEAST_DEFINE_TESTSUITE(PathMPT, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Path_test.cpp b/src/test/app/Path_test.cpp index 3214986f8d..505d052faa 100644 --- a/src/test/app/Path_test.cpp +++ b/src/test/app/Path_test.cpp @@ -56,8 +56,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { //------------------------------------------------------------------------------ @@ -156,16 +155,16 @@ public: Resource::Consumer c; RPC::JsonContext context{ - {env.journal, - app, - loadType, - app.getOPs(), - app.getLedgerMaster(), - c, - Role::USER, - {}, - {}, - RPC::apiVersionIfUnspecified}, + {.j = env.journal, + .app = app, + .loadType = loadType, + .netOps = app.getOPs(), + .ledgerMaster = app.getLedgerMaster(), + .consumer = c, + .role = Role::USER, + .coro = {}, + .infoSub = {}, + .apiVersion = RPC::apiVersionIfUnspecified}, {}, {}}; @@ -267,16 +266,16 @@ public: Resource::Consumer c; RPC::JsonContext context{ - {env.journal, - app, - loadType, - app.getOPs(), - app.getLedgerMaster(), - c, - Role::USER, - {}, - {}, - RPC::apiVersionIfUnspecified}, + {.j = env.journal, + .app = app, + .loadType = loadType, + .netOps = app.getOPs(), + .ledgerMaster = app.getLedgerMaster(), + .consumer = c, + .role = Role::USER, + .coro = {}, + .infoSub = {}, + .apiVersion = RPC::apiVersionIfUnspecified}, {}, {}}; Json::Value result; @@ -1913,5 +1912,4 @@ public: BEAST_DEFINE_TESTSUITE(Path, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PayChan_test.cpp b/src/test/app/PayChan_test.cpp index 7d8cbb4266..758d16931c 100644 --- a/src/test/app/PayChan_test.cpp +++ b/src/test/app/PayChan_test.cpp @@ -52,8 +52,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { using namespace jtx::paychan; struct PayChan_test : public beast::unit_test::suite @@ -1650,6 +1649,7 @@ struct PayChan_test : public beast::unit_test::suite Account const& acc, std::shared_ptr const& chan) -> bool { xrpl::Dir const ownerDir(view, keylet::ownerDir(acc.id())); + // NOLINTNEXTLINE(modernize-use-ranges) return std::find(ownerDir.begin(), ownerDir.end(), chan) != ownerDir.end(); }; @@ -1980,5 +1980,4 @@ public: }; BEAST_DEFINE_TESTSUITE(PayChan, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PayStrandMPT_test.cpp b/src/test/app/PayStrandMPT_test.cpp index 6854e382f5..44f25d54dc 100644 --- a/src/test/app/PayStrandMPT_test.cpp +++ b/src/test/app/PayStrandMPT_test.cpp @@ -32,20 +32,19 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct PayStrandMPT_test : public beast::unit_test::suite { static jtx::DirectStepInfo makeEndpointStep(jtx::Account const& src, jtx::Account const& dst, jtx::IOU const& iou) { - return jtx::DirectStepInfo{src, dst, iou.currency}; + return jtx::DirectStepInfo{.src = src, .dst = dst, .currency = iou.currency}; } static jtx::MPTEndpointStepInfo makeEndpointStep(jtx::Account const& src, jtx::Account const& dst, jtx::MPT const& mpt) { - return jtx::MPTEndpointStepInfo{src, dst, mpt.mpt()}; + return jtx::MPTEndpointStepInfo{.src = src, .dst = dst, .mptid = mpt.mpt()}; } void @@ -650,5 +649,4 @@ struct PayStrandMPT_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(PayStrandMPT, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PayStrand_test.cpp b/src/test/app/PayStrand_test.cpp index 1fe3387310..24efb4b155 100644 --- a/src/test/app/PayStrand_test.cpp +++ b/src/test/app/PayStrand_test.cpp @@ -47,8 +47,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { enum class TrustFlag { freeze, auth, noripple }; @@ -1160,5 +1159,4 @@ struct PayStrand_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(PayStrand, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PermissionedDEX_test.cpp b/src/test/app/PermissionedDEX_test.cpp index e2c567ec7f..600f753c96 100644 --- a/src/test/app/PermissionedDEX_test.cpp +++ b/src/test/app/PermissionedDEX_test.cpp @@ -45,8 +45,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { using namespace jtx; @@ -1485,5 +1484,4 @@ public: BEAST_DEFINE_TESTSUITE(PermissionedDEX, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PermissionedDomains_test.cpp b/src/test/app/PermissionedDomains_test.cpp index 719ab5e7be..f94fc53f71 100644 --- a/src/test/app/PermissionedDomains_test.cpp +++ b/src/test/app/PermissionedDomains_test.cpp @@ -29,8 +29,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { using namespace jtx; @@ -549,5 +548,4 @@ public: BEAST_DEFINE_TESTSUITE(PermissionedDomains, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/PseudoTx_test.cpp b/src/test/app/PseudoTx_test.cpp index 40d9977325..22c0cff075 100644 --- a/src/test/app/PseudoTx_test.cpp +++ b/src/test/app/PseudoTx_test.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct PseudoTx_test : public beast::unit_test::suite { @@ -28,7 +27,7 @@ struct PseudoTx_test : public beast::unit_test::suite { std::vector res; - res.emplace_back(STTx(ttFEE, [&](auto& obj) { + res.emplace_back(ttFEE, [&](auto& obj) { obj[sfAccount] = AccountID(); obj[sfLedgerSequence] = seq; if (rules.enabled(featureXRPFees)) @@ -44,13 +43,13 @@ struct PseudoTx_test : public beast::unit_test::suite obj[sfReserveIncrement] = 0; obj[sfReferenceFeeUnits] = 0; } - })); + }); - res.emplace_back(STTx(ttAMENDMENT, [&](auto& obj) { + res.emplace_back(ttAMENDMENT, [&](auto& obj) { obj.setAccountID(sfAccount, AccountID()); obj.setFieldH256(sfAmendment, uint256(2)); obj.setFieldU32(sfLedgerSequence, seq); - })); + }); return res; } @@ -60,12 +59,12 @@ struct PseudoTx_test : public beast::unit_test::suite { std::vector res; - res.emplace_back(STTx(ttACCOUNT_SET, [&](auto& obj) { obj[sfAccount] = AccountID(1); })); + res.emplace_back(ttACCOUNT_SET, [&](auto& obj) { obj[sfAccount] = AccountID(1); }); - res.emplace_back(STTx(ttPAYMENT, [&](auto& obj) { + res.emplace_back(ttPAYMENT, [&](auto& obj) { obj.setAccountID(sfAccount, AccountID(2)); obj.setAccountID(sfDestination, AccountID(3)); - })); + }); return res; } @@ -116,5 +115,4 @@ struct PseudoTx_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(PseudoTx, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/RCLValidations_test.cpp b/src/test/app/RCLValidations_test.cpp index 0dae805696..164ded6138 100644 --- a/src/test/app/RCLValidations_test.cpp +++ b/src/test/app/RCLValidations_test.cpp @@ -19,8 +19,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class RCLValidations_test : public beast::unit_test::suite { @@ -325,5 +324,4 @@ public: BEAST_DEFINE_TESTSUITE(RCLValidations, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/ReducedOffer_test.cpp b/src/test/app/ReducedOffer_test.cpp index 19e91fb846..a6d7160071 100644 --- a/src/test/app/ReducedOffer_test.cpp +++ b/src/test/app/ReducedOffer_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ReducedOffer_test : public beast::unit_test::suite { @@ -685,5 +684,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(ReducedOffer, app, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Regression_test.cpp b/src/test/app/Regression_test.cpp index 4dcf1507f3..c38013d1f3 100644 --- a/src/test/app/Regression_test.cpp +++ b/src/test/app/Regression_test.cpp @@ -51,8 +51,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Regression_test : public beast::unit_test::suite { @@ -349,5 +348,4 @@ struct Regression_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(Regression, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/SHAMapStore_test.cpp b/src/test/app/SHAMapStore_test.cpp index cdd8df972b..75e4c0c721 100644 --- a/src/test/app/SHAMapStore_test.cpp +++ b/src/test/app/SHAMapStore_test.cpp @@ -32,8 +32,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class SHAMapStore_test : public beast::unit_test::suite { @@ -179,10 +178,10 @@ public: auto ledgerTmp = env.rpc("ledger", "0"); BEAST_EXPECT(bad(ledgerTmp)); - ledgers.emplace(std::make_pair(1, env.rpc("ledger", "1"))); + ledgers.emplace(1, env.rpc("ledger", "1")); BEAST_EXPECT(goodLedger(env, ledgers[1], "1")); - ledgers.emplace(std::make_pair(2, env.rpc("ledger", "2"))); + ledgers.emplace(2, env.rpc("ledger", "2")); BEAST_EXPECT(goodLedger(env, ledgers[2], "2")); ledgerTmp = env.rpc("ledger", "current"); @@ -209,7 +208,7 @@ public: for (auto i = 3; i < deleteInterval + lastRotated; ++i) { - ledgers.emplace(std::make_pair(i, env.rpc("ledger", std::to_string(i)))); + ledgers.emplace(i, env.rpc("ledger", std::to_string(i))); BEAST_EXPECT( goodLedger(env, ledgers[i], std::to_string(i), true) && !getHash(ledgers[i]).empty()); @@ -246,7 +245,7 @@ public: ledgerTmp = env.rpc("ledger", "current"); BEAST_EXPECT(goodLedger(env, ledgerTmp, std::to_string(i + 3))); - ledgers.emplace(std::make_pair(i, env.rpc("ledger", std::to_string(i)))); + ledgers.emplace(i, env.rpc("ledger", std::to_string(i))); BEAST_EXPECT( store.getLastRotated() == lastRotated || i == lastRotated + deleteInterval - 2); BEAST_EXPECT( @@ -598,5 +597,4 @@ public: // VFALCO This test fails because of thread asynchronous issues BEAST_DEFINE_TESTSUITE(SHAMapStore, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/SetAuth_test.cpp b/src/test/app/SetAuth_test.cpp index 1cfa1225ff..5982fc282d 100644 --- a/src/test/app/SetAuth_test.cpp +++ b/src/test/app/SetAuth_test.cpp @@ -18,8 +18,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct SetAuth_test : public beast::unit_test::suite { @@ -74,5 +73,4 @@ struct SetAuth_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(SetAuth, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/TheoreticalQuality_test.cpp b/src/test/app/TheoreticalQuality_test.cpp index 9cf9d0d68d..2316b3249f 100644 --- a/src/test/app/TheoreticalQuality_test.cpp +++ b/src/test/app/TheoreticalQuality_test.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct RippleCalcTestParams { @@ -544,5 +543,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(TheoreticalQuality, app, xrpl, 3); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/Ticket_test.cpp b/src/test/app/Ticket_test.cpp index 8ee41d12de..0dc9f0155f 100644 --- a/src/test/app/Ticket_test.cpp +++ b/src/test/app/Ticket_test.cpp @@ -228,8 +228,8 @@ class Ticket_test : public beast::unit_test::suite // Verify that all the expected Tickets were created. BEAST_EXPECT(ticketSeqs.size() == count); - std::sort(ticketSeqs.begin(), ticketSeqs.end()); - BEAST_EXPECT(std::adjacent_find(ticketSeqs.begin(), ticketSeqs.end()) == ticketSeqs.end()); + std::ranges::sort(ticketSeqs); + BEAST_EXPECT(std::ranges::adjacent_find(ticketSeqs) == ticketSeqs.end()); BEAST_EXPECT(*ticketSeqs.rbegin() == acctRootFinalSeq - 1); } diff --git a/src/test/app/Transaction_ordering_test.cpp b/src/test/app/Transaction_ordering_test.cpp index ece3e25bae..af5001b06e 100644 --- a/src/test/app/Transaction_ordering_test.cpp +++ b/src/test/app/Transaction_ordering_test.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Transaction_ordering_test : public beast::unit_test::suite { @@ -150,5 +149,4 @@ struct Transaction_ordering_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(Transaction_ordering, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/TrustSet_test.cpp b/src/test/app/TrustSet_test.cpp index 9d117cb7a4..6d24b695c7 100644 --- a/src/test/app/TrustSet_test.cpp +++ b/src/test/app/TrustSet_test.cpp @@ -24,9 +24,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class TrustSet_test : public beast::unit_test::suite { @@ -621,5 +619,4 @@ public: } }; BEAST_DEFINE_TESTSUITE(TrustSet, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/TxQ_test.cpp b/src/test/app/TxQ_test.cpp index 12808e7596..248c8121f4 100644 --- a/src/test/app/TxQ_test.cpp +++ b/src/test/app/TxQ_test.cpp @@ -55,9 +55,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class TxQPosNegFlows_test : public beast::unit_test::suite { @@ -4695,5 +4693,4 @@ class TxQMetaInfo_test : public TxQPosNegFlows_test BEAST_DEFINE_TESTSUITE_PRIO(TxQPosNegFlows, app, xrpl, 1); BEAST_DEFINE_TESTSUITE_PRIO(TxQMetaInfo, app, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/ValidatorKeys_test.cpp b/src/test/app/ValidatorKeys_test.cpp index 23f0432c5e..bbc77671bc 100644 --- a/src/test/app/ValidatorKeys_test.cpp +++ b/src/test/app/ValidatorKeys_test.cpp @@ -20,8 +20,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ValidatorKeys_test : public beast::unit_test::suite { @@ -176,5 +175,4 @@ public: BEAST_DEFINE_TESTSUITE(ValidatorKeys, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/ValidatorList_test.cpp b/src/test/app/ValidatorList_test.cpp index ab1fc72c9e..63c2ca37d8 100644 --- a/src/test/app/ValidatorList_test.cpp +++ b/src/test/app/ValidatorList_test.cpp @@ -49,8 +49,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ValidatorList_test : public beast::unit_test::suite { @@ -125,9 +124,9 @@ private: auto const masterPublic = derivePublicKey(KeyType::ed25519, secret); auto const signingKeys = randomKeyPair(KeyType::secp256k1); return { - masterPublic, - signingKeys.first, - base64_encode(makeManifestString( + .masterPublic = masterPublic, + .signingPublic = signingKeys.first, + .manifest = base64_encode(makeManifestString( masterPublic, secret, signingKeys.first, signingKeys.second, 1))}; } @@ -1899,11 +1898,11 @@ private: auto const sig2 = signList(blob2, pubSigningKeys); return PreparedList{ - publisherPublic, - manifest, - {{blob1, sig1, {}}, {blob2, sig2, {}}}, - version, - {expiration1, expiration2}}; + .publisherPublic = publisherPublic, + .manifest = manifest, + .blobs = {{blob1, sig1, {}}, {blob2, sig2, {}}}, + .version = version, + .expirations = {expiration1, expiration2}}; }; // Configure two publishers and prepare 2 lists @@ -3950,5 +3949,4 @@ public: BEAST_DEFINE_TESTSUITE(ValidatorList, app, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/app/ValidatorSite_test.cpp b/src/test/app/ValidatorSite_test.cpp index 7e88f20f4c..f652689b2b 100644 --- a/src/test/app/ValidatorSite_test.cpp +++ b/src/test/app/ValidatorSite_test.cpp @@ -177,7 +177,7 @@ private: for (auto const& cfg : paths) { - servers.push_back(cfg); + servers.emplace_back(cfg); auto& item = servers.back(); item.isRetry = cfg.path == "/bad-resource"; item.list.reserve(listSize); diff --git a/src/test/app/XChain_test.cpp b/src/test/app/XChain_test.cpp index 4b1197efe9..852bbbbb8b 100644 --- a/src/test/app/XChain_test.cpp +++ b/src/test/app/XChain_test.cpp @@ -2331,15 +2331,15 @@ struct XChain_test : public beast::unit_test::suite, public jtx::XChainBridgeObj Account const ua{"ua"}; // unfunded account we want to create BridgeDef xrp_b{ - doorA, - xrpIssue(), - Account::master, - xrpIssue(), - XRP(1), // reward - XRP(20), // minAccountCreate - 4, // quorum - signers, - Json::nullValue}; + .doorA = doorA, + .issueA = xrpIssue(), + .doorB = Account::master, + .issueB = xrpIssue(), + .reward = XRP(1), // reward + .minAccountCreate = XRP(20), // minAccountCreate + .quorum = 4, // quorum + .signers = signers, + .jvb = Json::nullValue}; xrp_b.initBridge(mcEnv, scEnv); @@ -4529,30 +4529,30 @@ public: // create XRP -> XRP bridge // ------------------------ BridgeDef xrp_b{ - doorXRPLocking, - xrpIssue(), - Account::master, - xrpIssue(), - XRP(1), - XRP(20), - quorum, - signers, - Json::nullValue}; + .doorA = doorXRPLocking, + .issueA = xrpIssue(), + .doorB = Account::master, + .issueB = xrpIssue(), + .reward = XRP(1), + .minAccountCreate = XRP(20), + .quorum = quorum, + .signers = signers, + .jvb = Json::nullValue}; initBridge(xrp_b); // create USD -> USD bridge // ------------------------ BridgeDef usd_b{ - doorUSDLocking, - usdLocking, - doorUSDIssuing, - usdIssuing, - XRP(1), - XRP(20), - quorum, - signers, - Json::nullValue}; + .doorA = doorUSDLocking, + .issueA = usdLocking, + .doorB = doorUSDIssuing, + .issueB = usdIssuing, + .reward = XRP(1), + .minAccountCreate = XRP(20), + .quorum = quorum, + .signers = signers, + .jvb = Json::nullValue}; initBridge(usd_b); @@ -4561,79 +4561,262 @@ public: // give time enough for ua[0] to be funded now so it can reserve // the claimID // ----------------------------------------------------------------- - ac(0, st, xrp_b, {a[0], ua[0], XRP(777), xrp_b.reward, true}); - xfer(8, st, xrp_b, {a[0], ua[0], a[2], XRP(3), true}); + ac(0, + st, + xrp_b, + {.from = a[0], .to = ua[0], .amt = XRP(777), .reward = xrp_b.reward, .a2b = true}); + xfer( + 8, + st, + xrp_b, + {.from = a[0], .to = ua[0], .finaldest = a[2], .amt = XRP(3), .a2b = true}); runSimulation(st); // try the same thing in the other direction // ----------------------------------------- - ac(0, st, xrp_b, {a[0], ua[0], XRP(777), xrp_b.reward, false}); - xfer(8, st, xrp_b, {a[0], ua[0], a[2], XRP(3), false}); + ac(0, + st, + xrp_b, + {.from = a[0], .to = ua[0], .amt = XRP(777), .reward = xrp_b.reward, .a2b = false}); + xfer( + 8, + st, + xrp_b, + {.from = a[0], .to = ua[0], .finaldest = a[2], .amt = XRP(3), .a2b = false}); runSimulation(st); // run multiple XRP transfers // -------------------------- - xfer(0, st, xrp_b, {a[0], a[0], a[1], XRP(6), true, WithClaim::no}); - xfer(1, st, xrp_b, {a[0], a[0], a[1], XRP(8), false, WithClaim::no}); - xfer(1, st, xrp_b, {a[1], a[1], a[1], XRP(1), true}); - xfer(2, st, xrp_b, {a[0], a[0], a[1], XRP(3), false}); - xfer(2, st, xrp_b, {a[1], a[1], a[1], XRP(5), false}); - xfer(2, st, xrp_b, {a[0], a[0], a[1], XRP(7), false, WithClaim::no}); - xfer(2, st, xrp_b, {a[1], a[1], a[1], XRP(9), true}); + xfer( + 0, + st, + xrp_b, + {.from = a[0], + .to = a[0], + .finaldest = a[1], + .amt = XRP(6), + .a2b = true, + .with_claim = WithClaim::no}); + xfer( + 1, + st, + xrp_b, + {.from = a[0], + .to = a[0], + .finaldest = a[1], + .amt = XRP(8), + .a2b = false, + .with_claim = WithClaim::no}); + xfer( + 1, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = XRP(1), .a2b = true}); + xfer( + 2, + st, + xrp_b, + {.from = a[0], .to = a[0], .finaldest = a[1], .amt = XRP(3), .a2b = false}); + xfer( + 2, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = XRP(5), .a2b = false}); + xfer( + 2, + st, + xrp_b, + {.from = a[0], + .to = a[0], + .finaldest = a[1], + .amt = XRP(7), + .a2b = false, + .with_claim = WithClaim::no}); + xfer( + 2, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = XRP(9), .a2b = true}); runSimulation(st); // run one USD transfer // -------------------- - xfer(0, st, usd_b, {a[0], a[1], a[2], usdLocking(3), true}); + xfer( + 0, + st, + usd_b, + {.from = a[0], .to = a[1], .finaldest = a[2], .amt = usdLocking(3), .a2b = true}); runSimulation(st); // run multiple USD transfers // -------------------------- - xfer(0, st, usd_b, {a[0], a[0], a[1], usdLocking(6), true}); - xfer(1, st, usd_b, {a[0], a[0], a[1], usdIssuing(8), false}); - xfer(1, st, usd_b, {a[1], a[1], a[1], usdLocking(1), true}); - xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(3), false}); - xfer(2, st, usd_b, {a[1], a[1], a[1], usdIssuing(5), false}); - xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(7), false}); - xfer(2, st, usd_b, {a[1], a[1], a[1], usdLocking(9), true}); + xfer( + 0, + st, + usd_b, + {.from = a[0], .to = a[0], .finaldest = a[1], .amt = usdLocking(6), .a2b = true}); + xfer( + 1, + st, + usd_b, + {.from = a[0], .to = a[0], .finaldest = a[1], .amt = usdIssuing(8), .a2b = false}); + xfer( + 1, + st, + usd_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = usdLocking(1), .a2b = true}); + xfer( + 2, + st, + usd_b, + {.from = a[0], .to = a[0], .finaldest = a[1], .amt = usdIssuing(3), .a2b = false}); + xfer( + 2, + st, + usd_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = usdIssuing(5), .a2b = false}); + xfer( + 2, + st, + usd_b, + {.from = a[0], .to = a[0], .finaldest = a[1], .amt = usdIssuing(7), .a2b = false}); + xfer( + 2, + st, + usd_b, + {.from = a[1], .to = a[1], .finaldest = a[1], .amt = usdLocking(9), .a2b = true}); runSimulation(st); // run mixed transfers // ------------------- - xfer(0, st, xrp_b, {a[0], a[0], a[0], XRP(1), true}); - xfer(0, st, usd_b, {a[1], a[3], a[3], usdIssuing(3), false}); - xfer(0, st, usd_b, {a[3], a[2], a[1], usdIssuing(5), false}); + xfer( + 0, + st, + xrp_b, + {.from = a[0], .to = a[0], .finaldest = a[0], .amt = XRP(1), .a2b = true}); + xfer( + 0, + st, + usd_b, + {.from = a[1], .to = a[3], .finaldest = a[3], .amt = usdIssuing(3), .a2b = false}); + xfer( + 0, + st, + usd_b, + {.from = a[3], .to = a[2], .finaldest = a[1], .amt = usdIssuing(5), .a2b = false}); - xfer(1, st, xrp_b, {a[0], a[0], a[0], XRP(4), false}); - xfer(1, st, xrp_b, {a[1], a[1], a[0], XRP(8), true}); - xfer(1, st, usd_b, {a[4], a[1], a[1], usdLocking(7), true}); + xfer( + 1, + st, + xrp_b, + {.from = a[0], .to = a[0], .finaldest = a[0], .amt = XRP(4), .a2b = false}); + xfer( + 1, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[0], .amt = XRP(8), .a2b = true}); + xfer( + 1, + st, + usd_b, + {.from = a[4], .to = a[1], .finaldest = a[1], .amt = usdLocking(7), .a2b = true}); - xfer(3, st, xrp_b, {a[1], a[1], a[0], XRP(7), true}); - xfer(3, st, xrp_b, {a[0], a[4], a[3], XRP(2), false}); - xfer(3, st, xrp_b, {a[1], a[1], a[0], XRP(9), true}); - xfer(3, st, usd_b, {a[3], a[1], a[1], usdIssuing(11), false}); + xfer( + 3, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[0], .amt = XRP(7), .a2b = true}); + xfer( + 3, + st, + xrp_b, + {.from = a[0], .to = a[4], .finaldest = a[3], .amt = XRP(2), .a2b = false}); + xfer( + 3, + st, + xrp_b, + {.from = a[1], .to = a[1], .finaldest = a[0], .amt = XRP(9), .a2b = true}); + xfer( + 3, + st, + usd_b, + {.from = a[3], .to = a[1], .finaldest = a[1], .amt = usdIssuing(11), .a2b = false}); runSimulation(st); // run multiple account create to stress attestation batching // ---------------------------------------------------------- - ac(0, st, xrp_b, {a[0], ua[1], XRP(301), xrp_b.reward, true}); - ac(0, st, xrp_b, {a[1], ua[2], XRP(302), xrp_b.reward, true}); - ac(1, st, xrp_b, {a[0], ua[3], XRP(303), xrp_b.reward, true}); - ac(2, st, xrp_b, {a[1], ua[4], XRP(304), xrp_b.reward, true}); - ac(3, st, xrp_b, {a[0], ua[5], XRP(305), xrp_b.reward, true}); - ac(4, st, xrp_b, {a[1], ua[6], XRP(306), xrp_b.reward, true}); - ac(6, st, xrp_b, {a[0], ua[7], XRP(307), xrp_b.reward, true}); - ac(7, st, xrp_b, {a[2], ua[8], XRP(308), xrp_b.reward, true}); - ac(9, st, xrp_b, {a[0], ua[9], XRP(309), xrp_b.reward, true}); - ac(9, st, xrp_b, {a[0], ua[9], XRP(309), xrp_b.reward, true}); - ac(10, st, xrp_b, {a[0], ua[10], XRP(310), xrp_b.reward, true}); - ac(12, st, xrp_b, {a[0], ua[11], XRP(311), xrp_b.reward, true}); - ac(12, st, xrp_b, {a[3], ua[12], XRP(312), xrp_b.reward, true}); - ac(12, st, xrp_b, {a[4], ua[13], XRP(313), xrp_b.reward, true}); - ac(12, st, xrp_b, {a[3], ua[14], XRP(314), xrp_b.reward, true}); - ac(12, st, xrp_b, {a[6], ua[15], XRP(315), xrp_b.reward, true}); - ac(13, st, xrp_b, {a[7], ua[16], XRP(316), xrp_b.reward, true}); - ac(15, st, xrp_b, {a[3], ua[17], XRP(317), xrp_b.reward, true}); + ac(0, + st, + xrp_b, + {.from = a[0], .to = ua[1], .amt = XRP(301), .reward = xrp_b.reward, .a2b = true}); + ac(0, + st, + xrp_b, + {.from = a[1], .to = ua[2], .amt = XRP(302), .reward = xrp_b.reward, .a2b = true}); + ac(1, + st, + xrp_b, + {.from = a[0], .to = ua[3], .amt = XRP(303), .reward = xrp_b.reward, .a2b = true}); + ac(2, + st, + xrp_b, + {.from = a[1], .to = ua[4], .amt = XRP(304), .reward = xrp_b.reward, .a2b = true}); + ac(3, + st, + xrp_b, + {.from = a[0], .to = ua[5], .amt = XRP(305), .reward = xrp_b.reward, .a2b = true}); + ac(4, + st, + xrp_b, + {.from = a[1], .to = ua[6], .amt = XRP(306), .reward = xrp_b.reward, .a2b = true}); + ac(6, + st, + xrp_b, + {.from = a[0], .to = ua[7], .amt = XRP(307), .reward = xrp_b.reward, .a2b = true}); + ac(7, + st, + xrp_b, + {.from = a[2], .to = ua[8], .amt = XRP(308), .reward = xrp_b.reward, .a2b = true}); + ac(9, + st, + xrp_b, + {.from = a[0], .to = ua[9], .amt = XRP(309), .reward = xrp_b.reward, .a2b = true}); + ac(9, + st, + xrp_b, + {.from = a[0], .to = ua[9], .amt = XRP(309), .reward = xrp_b.reward, .a2b = true}); + ac(10, + st, + xrp_b, + {.from = a[0], .to = ua[10], .amt = XRP(310), .reward = xrp_b.reward, .a2b = true}); + ac(12, + st, + xrp_b, + {.from = a[0], .to = ua[11], .amt = XRP(311), .reward = xrp_b.reward, .a2b = true}); + ac(12, + st, + xrp_b, + {.from = a[3], .to = ua[12], .amt = XRP(312), .reward = xrp_b.reward, .a2b = true}); + ac(12, + st, + xrp_b, + {.from = a[4], .to = ua[13], .amt = XRP(313), .reward = xrp_b.reward, .a2b = true}); + ac(12, + st, + xrp_b, + {.from = a[3], .to = ua[14], .amt = XRP(314), .reward = xrp_b.reward, .a2b = true}); + ac(12, + st, + xrp_b, + {.from = a[6], .to = ua[15], .amt = XRP(315), .reward = xrp_b.reward, .a2b = true}); + ac(13, + st, + xrp_b, + {.from = a[7], .to = ua[16], .amt = XRP(316), .reward = xrp_b.reward, .a2b = true}); + ac(15, + st, + xrp_b, + {.from = a[3], .to = ua[17], .amt = XRP(317), .reward = xrp_b.reward, .a2b = true}); runSimulation(st, true); // balances verification working now. } diff --git a/src/test/basics/Buffer_test.cpp b/src/test/basics/Buffer_test.cpp index 19f646cfdd..1fd0ed9e09 100644 --- a/src/test/basics/Buffer_test.cpp +++ b/src/test/basics/Buffer_test.cpp @@ -8,8 +8,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Buffer_test : beast::unit_test::suite { @@ -104,8 +103,8 @@ struct Buffer_test : beast::unit_test::suite { testcase("Move Construction / Assignment"); - static_assert(std::is_nothrow_move_constructible::value, ""); - static_assert(std::is_nothrow_move_assignable::value, ""); + static_assert(std::is_nothrow_move_constructible_v, ""); + static_assert(std::is_nothrow_move_assignable_v, ""); { // Move-construct from empty buf Buffer x; @@ -266,5 +265,4 @@ struct Buffer_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(Buffer, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/basics/DetectCrash_test.cpp b/src/test/basics/DetectCrash_test.cpp index 0dd2787dff..b47975873e 100644 --- a/src/test/basics/DetectCrash_test.cpp +++ b/src/test/basics/DetectCrash_test.cpp @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct DetectCrash_test : public beast::unit_test::suite { @@ -24,5 +23,4 @@ struct DetectCrash_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_MANUAL(DetectCrash, basics, beast); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/basics/Expected_test.cpp b/src/test/basics/Expected_test.cpp index 3fb2457764..b76955f53a 100644 --- a/src/test/basics/Expected_test.cpp +++ b/src/test/basics/Expected_test.cpp @@ -14,8 +14,7 @@ #endif // BOOST_VERSION #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Expected_test : beast::unit_test::suite { @@ -219,5 +218,4 @@ struct Expected_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(Expected, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/basics/IntrusiveShared_test.cpp b/src/test/basics/IntrusiveShared_test.cpp index 96517d9e48..23b0c43499 100644 --- a/src/test/basics/IntrusiveShared_test.cpp +++ b/src/test/basics/IntrusiveShared_test.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { /** Experimentally, we discovered that using std::barrier performs extremely @@ -128,7 +127,7 @@ public: assert(state.size() > id_); state[id_].store(TrackedState::alive, std::memory_order_relaxed); } - ~TIBase() + ~TIBase() override { using enum TrackedState; @@ -240,7 +239,7 @@ public: BEAST_EXPECT(b->use_count() == 1); for (int i = 0; i < 10; ++i) { - weak.push_back(b); + weak.emplace_back(b); BEAST_EXPECT(b->use_count() == 1); } BEAST_EXPECT(TIBase::getState(id) == alive); @@ -531,11 +530,11 @@ public: { if (isStrongDist(eng)) { - result.push_back(SharedIntrusive(toClone)); + result.emplace_back(SharedIntrusive(toClone)); } else { - result.push_back(WeakIntrusive(toClone)); + result.emplace_back(WeakIntrusive(toClone)); } } return result; @@ -582,7 +581,7 @@ public: toClone.resize(numThreads); auto strong = make_SharedIntrusive(); strong->tracingCallback_ = tracingCallback; - std::fill(toClone.begin(), toClone.end(), strong); + std::ranges::fill(toClone, strong); } // ------ Sync Point ------ @@ -662,7 +661,7 @@ public: auto numToCreate = toCreateDist(eng); result.reserve(numToCreate); for (int i = 0; i < numToCreate; ++i) - result.push_back(SharedIntrusive(toClone)); + result.emplace_back(SharedIntrusive(toClone)); return result; }; constexpr int loopIters = 2 * 1024; @@ -709,7 +708,7 @@ public: toClone.resize(numThreads); auto strong = make_SharedIntrusive(); strong->tracingCallback_ = tracingCallback; - std::fill(toClone.begin(), toClone.end(), strong); + std::ranges::fill(toClone, strong); } // ------ Sync Point ------ @@ -830,7 +829,7 @@ public: toLock.resize(numThreads); auto strong = make_SharedIntrusive(); strong->tracingCallback_ = tracingCallback; - std::fill(toLock.begin(), toLock.end(), strong); + std::ranges::fill(toLock, strong); } // ------ Sync Point ------ @@ -877,5 +876,4 @@ public: }; // namespace tests BEAST_DEFINE_TESTSUITE(IntrusiveShared, basics, xrpl); -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/basics/PerfLog_test.cpp b/src/test/basics/PerfLog_test.cpp index c433e63f84..cd00b180e7 100644 --- a/src/test/basics/PerfLog_test.cpp +++ b/src/test/basics/PerfLog_test.cpp @@ -105,7 +105,7 @@ class PerfLog_test : public beast::unit_test::suite perfLog(WithFile withFile) { perf::PerfLog::Setup const setup{ - withFile == WithFile::no ? "" : logFile(), logInterval()}; + .perfLog = withFile == WithFile::no ? "" : logFile(), .logInterval = logInterval()}; return perf::make_PerfLog(setup, app_, j_, [this]() { signalStop(); return; @@ -178,7 +178,7 @@ class PerfLog_test : public beast::unit_test::suite // Note that the longest durations should be at the front of the // vector since they were started first. - std::sort(currents.begin(), currents.end(), [](Cur const& lhs, Cur const& rhs) { + std::ranges::sort(currents, [](Cur const& lhs, Cur const& rhs) { if (lhs.dur != rhs.dur) return (rhs.dur < lhs.dur); return (lhs.name < rhs.name); diff --git a/src/test/basics/Units_test.cpp b/src/test/basics/Units_test.cpp index fb79c4978a..8769a0d386 100644 --- a/src/test/basics/Units_test.cpp +++ b/src/test/basics/Units_test.cpp @@ -9,8 +9,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class units_test : public beast::unit_test::suite { @@ -342,5 +341,4 @@ public: BEAST_DEFINE_TESTSUITE(units, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/basics/base58_test.cpp b/src/test/basics/base58_test.cpp index 5e791bb7e1..948195b424 100644 --- a/src/test/basics/base58_test.cpp +++ b/src/test/basics/base58_test.cpp @@ -25,8 +25,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { namespace { [[nodiscard]] inline auto @@ -101,7 +100,7 @@ printAsChar(std::span a, std::span b) auto asString = [](std::span s) { std::string r; r.resize(s.size()); - std::copy(s.begin(), s.end(), r.begin()); + std::ranges::copy(s, r.begin()); return r; }; auto sa = asString(a); @@ -287,7 +286,7 @@ class base58_test : public beast::unit_test::suite b256Data.data(), b256Data.size(), tmpBuf.data(), tmpBuf.size()); BEAST_EXPECT(s.size()); b58Result[i] = outBuf.subspan(0, s.size()); - std::copy(s.begin(), s.end(), b58Result[i].begin()); + std::ranges::copy(s, b58Result[i].begin()); } } if (BEAST_EXPECT(b58Result[0].size() == b58Result[1].size())) @@ -316,7 +315,7 @@ class base58_test : public beast::unit_test::suite std::string const s = xrpl::b58_ref::detail::decodeBase58(st); BEAST_EXPECT(s.size()); b256Result[i] = outBuf.subspan(0, s.size()); - std::copy(s.begin(), s.end(), b256Result[i].begin()); + std::ranges::copy(s, b256Result[i].begin()); } } @@ -353,7 +352,7 @@ class base58_test : public beast::unit_test::suite xrpl::b58_ref::encodeBase58Token(tokType, b256Data.data(), b256Data.size()); BEAST_EXPECT(s.size()); b58Result[i] = outBuf.subspan(0, s.size()); - std::copy(s.begin(), s.end(), b58Result[i].begin()); + std::ranges::copy(s, b58Result[i].begin()); } } if (BEAST_EXPECT(b58Result[0].size() == b58Result[1].size())) @@ -382,7 +381,7 @@ class base58_test : public beast::unit_test::suite std::string const s = xrpl::b58_ref::decodeBase58Token(st, tokType); BEAST_EXPECT(s.size()); b256Result[i] = outBuf.subspan(0, s.size()); - std::copy(s.begin(), s.end(), b256Result[i].begin()); + std::ranges::copy(s, b256Result[i].begin()); } } @@ -435,6 +434,6 @@ class base58_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(base58, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test + #endif // _MSC_VER diff --git a/src/test/basics/base_uint_test.cpp b/src/test/basics/base_uint_test.cpp index 7eca024856..8148f3bdce 100644 --- a/src/test/basics/base_uint_test.cpp +++ b/src/test/basics/base_uint_test.cpp @@ -19,8 +19,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { // a non-hashing Hasher that just copies the bytes. // Used to test hash_append in base_uint @@ -51,8 +50,8 @@ struct nonhash struct base_uint_test : beast::unit_test::suite { using test96 = base_uint<96>; - static_assert(std::is_copy_constructible::value); - static_assert(std::is_copy_assignable::value); + static_assert(std::is_copy_constructible_v); + static_assert(std::is_copy_assignable_v); void testComparisons() @@ -123,8 +122,8 @@ struct base_uint_test : beast::unit_test::suite { testcase("base_uint: general purpose tests"); - static_assert(!std::is_constructible>::value); - static_assert(!std::is_assignable>::value); + static_assert(!std::is_constructible_v>); + static_assert(!std::is_assignable_v>); testComparisons(); @@ -356,5 +355,4 @@ struct base_uint_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(base_uint, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/basics/hardened_hash_test.cpp b/src/test/basics/hardened_hash_test.cpp index b52a94e5d3..361a961312 100644 --- a/src/test/basics/hardened_hash_test.cpp +++ b/src/test/basics/hardened_hash_test.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { template class test_user_type_member @@ -55,8 +54,7 @@ public: } }; -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail //------------------------------------------------------------------------------ @@ -83,7 +81,7 @@ class unsigned_integer { private: static_assert( - std::is_integral::value && std::is_unsigned::value, + std::is_integral_v && std::is_unsigned_v, "UInt must be an unsigned integral type"); static_assert(Bits % (8 * sizeof(UInt)) == 0, "Bits must be a multiple of 8*sizeof(UInt)"); diff --git a/src/test/basics/join_test.cpp b/src/test/basics/join_test.cpp index 7854b3d022..c03a027971 100644 --- a/src/test/basics/join_test.cpp +++ b/src/test/basics/join_test.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct join_test : beast::unit_test::suite { @@ -81,5 +80,4 @@ struct join_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(join, basics, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/beast/IPEndpointCommon.h b/src/test/beast/IPEndpointCommon.h index 73cbe7d95b..2f839af5e2 100644 --- a/src/test/beast/IPEndpointCommon.h +++ b/src/test/beast/IPEndpointCommon.h @@ -1,8 +1,7 @@ #include #include -namespace beast { -namespace IP { +namespace beast::IP { inline Endpoint randomEP(bool v4 = true) @@ -39,5 +38,4 @@ randomEP(bool v4 = true) rand_int(1, UINT16_MAX)}; } -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/test/beast/IPEndpoint_test.cpp b/src/test/beast/IPEndpoint_test.cpp index ec8b148f3f..759a3fe3ad 100644 --- a/src/test/beast/IPEndpoint_test.cpp +++ b/src/test/beast/IPEndpoint_test.cpp @@ -22,8 +22,7 @@ #include #include -namespace beast { -namespace IP { +namespace beast::IP { //------------------------------------------------------------------------------ @@ -467,5 +466,4 @@ public: BEAST_DEFINE_TESTSUITE(IPEndpoint, beast, beast); -} // namespace IP -} // namespace beast +} // namespace beast::IP diff --git a/src/test/beast/aged_associative_container_test.cpp b/src/test/beast/aged_associative_container_test.cpp index 21681ff31d..a979cdbb38 100644 --- a/src/test/beast/aged_associative_container_test.cpp +++ b/src/test/beast/aged_associative_container_test.cpp @@ -45,6 +45,8 @@ public: template struct CompT { + CompT() = delete; + explicit CompT(int) { } @@ -60,7 +62,6 @@ public: } private: - CompT() = delete; std::less m_less; }; @@ -68,6 +69,8 @@ public: class HashT { public: + HashT() = delete; + explicit HashT(int) { } @@ -79,7 +82,6 @@ public: } private: - HashT() = delete; std::hash m_hash; }; @@ -87,6 +89,8 @@ public: struct EqualT { public: + EqualT() = delete; + explicit EqualT(int) { } @@ -98,7 +102,6 @@ public: } private: - EqualT() = delete; std::equal_to m_eq; }; @@ -157,7 +160,6 @@ public: { } #else - private: AllocT() = delete; #endif }; @@ -401,22 +403,22 @@ public: //-------------------------------------------------------------------------- template - typename std::enable_if::type + std::enable_if_t checkMapContents(Container& c, Values const& v); template - typename std::enable_if::type + std::enable_if_t checkMapContents(Container, Values const&) { } // unordered template - typename std::enable_if::type::is_unordered::value>::type + std::enable_if_t::type::is_unordered::value> checkUnorderedContentsRefRef(C&& c, Values const& v); template - typename std::enable_if::type::is_unordered::value>::type + std::enable_if_t::type::is_unordered::value> checkUnorderedContentsRefRef(C&&, Values const&) { } @@ -437,32 +439,32 @@ public: // ordered template - typename std::enable_if::type + std::enable_if_t testConstructEmpty(); // unordered template - typename std::enable_if::type + std::enable_if_t testConstructEmpty(); // ordered template - typename std::enable_if::type + std::enable_if_t testConstructRange(); // unordered template - typename std::enable_if::type + std::enable_if_t testConstructRange(); // ordered template - typename std::enable_if::type + std::enable_if_t testConstructInitList(); // unordered template - typename std::enable_if::type + std::enable_if_t testConstructInitList(); //-------------------------------------------------------------------------- @@ -479,11 +481,11 @@ public: // Unordered containers don't have reverse iterators template - typename std::enable_if::type + std::enable_if_t testReverseIterator(); template - typename std::enable_if::type + std::enable_if_t testReverseIterator() { } @@ -528,11 +530,11 @@ public: // map, unordered_map template - typename std::enable_if::type + std::enable_if_t testArrayCreate(); template - typename std::enable_if::type + std::enable_if_t testArrayCreate() { } @@ -572,11 +574,11 @@ public: // ordered template - typename std::enable_if::type + std::enable_if_t testCompare(); template - typename std::enable_if::type + std::enable_if_t testCompare() { } @@ -585,12 +587,12 @@ public: // ordered template - typename std::enable_if::type + std::enable_if_t testObservers(); // unordered template - typename std::enable_if::type + std::enable_if_t testObservers(); //-------------------------------------------------------------------------- @@ -613,7 +615,7 @@ public: // Check contents via at() and operator[] // map, unordered_map template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::checkMapContents(Container& c, Values const& v) { if (v.empty()) @@ -639,10 +641,10 @@ aged_associative_container_test_base::checkMapContents(Container& c, Values cons // unordered template -typename std::enable_if::type::is_unordered::value>::type +std::enable_if_t::type::is_unordered::value> aged_associative_container_test_base::checkUnorderedContentsRefRef(C&& c, Values const& v) { - using Cont = typename std::remove_reference::type; + using Cont = std::remove_reference_t; using Traits = TestTraits; using size_type = typename Cont::size_type; @@ -668,7 +670,7 @@ template void aged_associative_container_test_base::checkContentsRefRef(C&& c, Values const& v) { - using Cont = typename std::remove_reference::type; + using Cont = std::remove_reference_t; using size_type = typename Cont::size_type; BEAST_EXPECT(c.size() == v.size()); @@ -713,7 +715,7 @@ aged_associative_container_test_base::checkContents(Cont& c) // ordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructEmpty() { using Traits = TestTraits; @@ -749,7 +751,7 @@ aged_associative_container_test_base::testConstructEmpty() // unordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructEmpty() { using Traits = TestTraits; @@ -807,7 +809,7 @@ aged_associative_container_test_base::testConstructEmpty() // ordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructRange() { using Traits = TestTraits; @@ -854,7 +856,7 @@ aged_associative_container_test_base::testConstructRange() // unordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructRange() { using Traits = TestTraits; @@ -920,7 +922,7 @@ aged_associative_container_test_base::testConstructRange() // ordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructInitList() { using Traits = TestTraits; @@ -936,7 +938,7 @@ aged_associative_container_test_base::testConstructInitList() // unordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testConstructInitList() { using Traits = TestTraits; @@ -1082,7 +1084,7 @@ aged_associative_container_test_base::testIterator() } template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testReverseIterator() { using Traits = TestTraits; @@ -1358,7 +1360,7 @@ aged_associative_container_test_base::testChronological() // map, unordered_map template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testArrayCreate() { using Traits = TestTraits; @@ -1641,7 +1643,7 @@ aged_associative_container_test_base::testRangeErase() // ordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testCompare() { using Traits = TestTraits; @@ -1672,7 +1674,7 @@ aged_associative_container_test_base::testCompare() // ordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testObservers() { using Traits = TestTraits; @@ -1690,7 +1692,7 @@ aged_associative_container_test_base::testObservers() // unordered template -typename std::enable_if::type +std::enable_if_t aged_associative_container_test_base::testObservers() { using Traits = TestTraits; @@ -1742,45 +1744,43 @@ public: using T = int; static_assert( - std::is_same, detail::aged_ordered_container>::value, + std::is_same_v, detail::aged_ordered_container>, "bad alias: aged_set"); static_assert( - std::is_same, detail::aged_ordered_container>:: - value, + std::is_same_v, detail::aged_ordered_container>, "bad alias: aged_multiset"); static_assert( - std::is_same, detail::aged_ordered_container>::value, + std::is_same_v, detail::aged_ordered_container>, "bad alias: aged_map"); static_assert( - std::is_same, detail::aged_ordered_container>:: - value, + std::is_same_v, detail::aged_ordered_container>, "bad alias: aged_multimap"); static_assert( - std::is_same< + std::is_same_v< aged_unordered_set, - detail::aged_unordered_container>::value, + detail::aged_unordered_container>, "bad alias: aged_unordered_set"); static_assert( - std::is_same< + std::is_same_v< aged_unordered_multiset, - detail::aged_unordered_container>::value, + detail::aged_unordered_container>, "bad alias: aged_unordered_multiset"); static_assert( - std::is_same< + std::is_same_v< aged_unordered_map, - detail::aged_unordered_container>::value, + detail::aged_unordered_container>, "bad alias: aged_unordered_map"); static_assert( - std::is_same< + std::is_same_v< aged_unordered_multimap, - detail::aged_unordered_container>::value, + detail::aged_unordered_container>, "bad alias: aged_unordered_multimap"); void diff --git a/src/test/beast/beast_CurrentThreadName_test.cpp b/src/test/beast/beast_CurrentThreadName_test.cpp index fa3ce3fee6..d3d3850d75 100644 --- a/src/test/beast/beast_CurrentThreadName_test.cpp +++ b/src/test/beast/beast_CurrentThreadName_test.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class CurrentThreadName_test : public beast::unit_test::suite { @@ -106,5 +105,4 @@ public: BEAST_DEFINE_TESTSUITE(CurrentThreadName, beast, beast); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/beast/define_print.cpp b/src/test/beast/define_print.cpp index 92e57ca9d0..e3da3e7fe1 100644 --- a/src/test/beast/define_print.cpp +++ b/src/test/beast/define_print.cpp @@ -13,8 +13,7 @@ // Include this .cpp in your project to gain access to the printing suite -namespace beast { -namespace unit_test { +namespace beast::unit_test { /** A suite that prints the list of globally defined suites. */ class print_test : public suite @@ -45,5 +44,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL(print, beast, beast); -} // namespace unit_test -} // namespace beast +} // namespace beast::unit_test diff --git a/src/test/conditions/PreimageSha256_test.cpp b/src/test/conditions/PreimageSha256_test.cpp index e5d3c93add..3e6ee24d57 100644 --- a/src/test/conditions/PreimageSha256_test.cpp +++ b/src/test/conditions/PreimageSha256_test.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace cryptoconditions { +namespace xrpl::cryptoconditions { class PreimageSha256_test : public beast::unit_test::suite { @@ -166,6 +165,4 @@ class PreimageSha256_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(PreimageSha256, conditions, xrpl); -} // namespace cryptoconditions - -} // namespace xrpl +} // namespace xrpl::cryptoconditions diff --git a/src/test/consensus/ByzantineFailureSim_test.cpp b/src/test/consensus/ByzantineFailureSim_test.cpp index a82064dd8f..19de5ac83c 100644 --- a/src/test/consensus/ByzantineFailureSim_test.cpp +++ b/src/test/consensus/ByzantineFailureSim_test.cpp @@ -14,8 +14,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ByzantineFailureSim_test : public beast::unit_test::suite { @@ -87,5 +86,4 @@ class ByzantineFailureSim_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_MANUAL(ByzantineFailureSim, consensus, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/Consensus_test.cpp b/src/test/consensus/Consensus_test.cpp index 3d2933d4c0..c8be3f09f5 100644 --- a/src/test/consensus/Consensus_test.cpp +++ b/src/test/consensus/Consensus_test.cpp @@ -29,8 +29,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Consensus_test : public beast::unit_test::suite { @@ -1051,7 +1050,7 @@ public: // Simulate clients submitting 1 tx every 5 seconds to a random // validator - Rate const rate{1, 5s}; + Rate const rate{.count = 1, .duration = 5s}; auto peerSelector = makeSelector( network.begin(), network.end(), std::vector(network.size(), 1.), sim.rng); auto txSubmitter = makeSubmitter( @@ -1444,5 +1443,4 @@ public: }; BEAST_DEFINE_TESTSUITE(Consensus, consensus, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/DistributedValidatorsSim_test.cpp b/src/test/consensus/DistributedValidatorsSim_test.cpp index cd44318e4b..70a7e59988 100644 --- a/src/test/consensus/DistributedValidatorsSim_test.cpp +++ b/src/test/consensus/DistributedValidatorsSim_test.cpp @@ -20,8 +20,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** In progress simulations for diversifying and distributing validators */ @@ -70,7 +69,7 @@ class DistributedValidators_test : public beast::unit_test::suite // Run for 10 minutes, submitting 100 tx/second std::chrono::nanoseconds const simDuration = 10min; std::chrono::nanoseconds const quiet = 10s; - Rate const rate{100, 1000ms}; + Rate const rate{.count = 100, .duration = 1000ms}; // Initialize timers HeartbeatTimer heart(sim.scheduler); @@ -166,7 +165,7 @@ class DistributedValidators_test : public beast::unit_test::suite // Run for 10 minutes, submitting 100 tx/second std::chrono::nanoseconds const simDuration = 10min; std::chrono::nanoseconds const quiet = 10s; - Rate const rate{100, 1000ms}; + Rate const rate{.count = 100, .duration = 1000ms}; // Initialize timers HeartbeatTimer heart(sim.scheduler); @@ -251,5 +250,4 @@ class DistributedValidators_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(DistributedValidators, consensus, xrpl, 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/LedgerTiming_test.cpp b/src/test/consensus/LedgerTiming_test.cpp index 400fe620e7..749a2488b3 100644 --- a/src/test/consensus/LedgerTiming_test.cpp +++ b/src/test/consensus/LedgerTiming_test.cpp @@ -6,8 +6,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LedgerTiming_test : public beast::unit_test::suite { @@ -116,5 +115,4 @@ class LedgerTiming_test : public beast::unit_test::suite }; BEAST_DEFINE_TESTSUITE(LedgerTiming, consensus, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/LedgerTrie_test.cpp b/src/test/consensus/LedgerTrie_test.cpp index 9795c8d311..1ae6e99d80 100644 --- a/src/test/consensus/LedgerTrie_test.cpp +++ b/src/test/consensus/LedgerTrie_test.cpp @@ -8,8 +8,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class LedgerTrie_test : public beast::unit_test::suite { @@ -709,5 +708,4 @@ class LedgerTrie_test : public beast::unit_test::suite }; BEAST_DEFINE_TESTSUITE(LedgerTrie, consensus, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/NegativeUNL_test.cpp b/src/test/consensus/NegativeUNL_test.cpp index e634b04124..220ca5ef12 100644 --- a/src/test/consensus/NegativeUNL_test.cpp +++ b/src/test/consensus/NegativeUNL_test.cpp @@ -36,8 +36,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /* * This file implements the following negative UNL related tests: @@ -786,7 +785,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite */ { // 1. no skip list - NetworkHistory history = {*this, {10, 0, false, false, 1}}; + NetworkHistory history = { + *this, + {.numNodes = 10, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 1}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -798,7 +803,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite { // 2. short skip list - NetworkHistory history = {*this, {10, 0, false, false, 256 / 2}}; + NetworkHistory history = { + *this, + {.numNodes = 10, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 256 / 2}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -810,7 +821,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite { // 3. local node not enough history - NetworkHistory history = {*this, {10, 0, false, false, 256 + 2}}; + NetworkHistory history = { + *this, + {.numNodes = 10, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 256 + 2}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -829,7 +846,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite { // 4. a node double validated some seq // 5. local node had enough validations but on a wrong chain - NetworkHistory history = {*this, {10, 0, false, false, 256 + 2}}; + NetworkHistory history = { + *this, + {.numNodes = 10, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 256 + 2}}; // We need two chains for these tests bool const wrongChainSuccess = history.goodHistory; BEAST_EXPECT(wrongChainSuccess); @@ -890,7 +913,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite { // 6. a good case - NetworkHistory history = {*this, {10, 0, false, false, 256 + 1}}; + NetworkHistory history = { + *this, + {.numNodes = 10, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 256 + 1}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -962,7 +991,13 @@ class NegativeUNLVoteInternal_test : public beast::unit_test::suite * 8. 2 new validators have bad scores, not in negUnl * 9. expired the new validators have bad scores, not in negUnl */ - NetworkHistory history = {*this, {35, 0, false, false, 0}}; + NetworkHistory history = { + *this, + {.numNodes = 35, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 0}}; hash_set negUnl_012; for (std::uint32_t i = 0; i < 3; ++i) @@ -1337,7 +1372,13 @@ class NegativeUNLVoteScoreTable_test : public beast::unit_test::suite { for (std::uint32_t sp = 0; sp < 4; ++sp) { - NetworkHistory history = {*this, {unlSize, 0, false, false, 256 + 2}}; + NetworkHistory history = { + *this, + {.numNodes = unlSize, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = 256 + 2}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1452,7 +1493,13 @@ class NegativeUNLVoteGoodScore_test : public beast::unit_test::suite { //== all good score, negativeUNL empty //-- txSet.size = 0 - NetworkHistory history = {*this, {51, 0, false, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 51, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1467,7 +1514,13 @@ class NegativeUNLVoteGoodScore_test : public beast::unit_test::suite { // all good score, negativeUNL not empty (use hasToDisable) //-- txSet.size = 1 - NetworkHistory history = {*this, {37, 0, true, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 37, + .negUNLSize = 0, + .hasToDisable = true, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1497,7 +1550,13 @@ class NegativeUNLVoteOffline_test : public beast::unit_test::suite { //== 2 nodes offline, negativeUNL empty (use hasToReEnable) //-- txSet.size = 1 - NetworkHistory history = {*this, {29, 1, false, true, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 29, + .negUNLSize = 1, + .hasToDisable = false, + .hasToReEnable = true, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1513,7 +1572,13 @@ class NegativeUNLVoteOffline_test : public beast::unit_test::suite { // 2 nodes offline, in negativeUNL //-- txSet.size = 0 - NetworkHistory history = {*this, {30, 1, true, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 30, + .negUNLSize = 1, + .hasToDisable = true, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1547,7 +1612,13 @@ class NegativeUNLVoteMaxListed_test : public beast::unit_test::suite { // 2 nodes offline, not in negativeUNL, but maxListed //-- txSet.size = 0 - NetworkHistory history = {*this, {32, 8, true, true, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 32, + .negUNLSize = 8, + .hasToDisable = true, + .hasToReEnable = true, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1578,7 +1649,13 @@ class NegativeUNLVoteRetiredValidator_test : public beast::unit_test::suite { //== 2 nodes offline including me, not in negativeUNL //-- txSet.size = 0 - NetworkHistory history = {*this, {35, 0, false, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 35, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1593,7 +1670,13 @@ class NegativeUNLVoteRetiredValidator_test : public beast::unit_test::suite { // 2 nodes offline, not in negativeUNL, but I'm not a validator //-- txSet.size = 0 - NetworkHistory history = {*this, {40, 0, false, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 40, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1608,7 +1691,13 @@ class NegativeUNLVoteRetiredValidator_test : public beast::unit_test::suite { //== 2 in negativeUNL, but not in unl, no other remove candidates //-- txSet.size = 1 - NetworkHistory history = {*this, {25, 2, false, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 25, + .negUNLSize = 2, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1642,7 +1731,13 @@ class NegativeUNLVoteNewValidator_test : public beast::unit_test::suite { //== 2 new validators have bad scores //-- txSet.size = 0 - NetworkHistory history = {*this, {15, 0, false, false, {}}}; + NetworkHistory history = { + *this, + {.numNodes = 15, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = {}}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1668,7 +1763,12 @@ class NegativeUNLVoteNewValidator_test : public beast::unit_test::suite //== 2 expired new validators have bad scores //-- txSet.size = 1 NetworkHistory history = { - *this, {21, 0, false, false, NegativeUNLVote::newValidatorDisableSkip * 2}}; + *this, + {.numNodes = 21, + .negUNLSize = 0, + .hasToDisable = false, + .hasToReEnable = false, + .numLedgers = NegativeUNLVote::newValidatorDisableSkip * 2}}; BEAST_EXPECT(history.goodHistory); if (history.goodHistory) { @@ -1886,5 +1986,4 @@ createTx(bool disabling, LedgerIndex seq, PublicKey const& txKey) return STTx(ttUNL_MODIFY, fill); } -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/RCLCensorshipDetector_test.cpp b/src/test/consensus/RCLCensorshipDetector_test.cpp index aeb93b5ad9..1ebf85c848 100644 --- a/src/test/consensus/RCLCensorshipDetector_test.cpp +++ b/src/test/consensus/RCLCensorshipDetector_test.cpp @@ -6,8 +6,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class RCLCensorshipDetector_test : public beast::unit_test::suite { @@ -81,5 +80,4 @@ public: }; BEAST_DEFINE_TESTSUITE(RCLCensorshipDetector, consensus, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/ScaleFreeSim_test.cpp b/src/test/consensus/ScaleFreeSim_test.cpp index 2120431791..23952ab850 100644 --- a/src/test/consensus/ScaleFreeSim_test.cpp +++ b/src/test/consensus/ScaleFreeSim_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ScaleFreeSim_test : public beast::unit_test::suite { @@ -68,7 +67,7 @@ class ScaleFreeSim_test : public beast::unit_test::suite // Run for 10 minutes, submitting 100 tx/second std::chrono::nanoseconds const simDuration = 10min; std::chrono::nanoseconds const quiet = 10s; - Rate const rate{100, 1000ms}; + Rate const rate{.count = 100, .duration = 1000ms}; // txs, start/stop/step, target auto peerSelector = makeSelector(network.begin(), network.end(), ranks, sim.rng); @@ -108,5 +107,4 @@ class ScaleFreeSim_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(ScaleFreeSim, consensus, xrpl, 80); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/consensus/Validations_test.cpp b/src/test/consensus/Validations_test.cpp index 9318122dbd..2cb8ae2f6c 100644 --- a/src/test/consensus/Validations_test.cpp +++ b/src/test/consensus/Validations_test.cpp @@ -19,9 +19,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { class Validations_test : public beast::unit_test::suite { using clock_type = beast::abstract_clock const; @@ -1057,6 +1055,4 @@ class Validations_test : public beast::unit_test::suite }; BEAST_DEFINE_TESTSUITE(Validations, consensus, xrpl); -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/core/ClosureCounter_test.cpp b/src/test/core/ClosureCounter_test.cpp index ea8458b3aa..d8e95a1dda 100644 --- a/src/test/core/ClosureCounter_test.cpp +++ b/src/test/core/ClosureCounter_test.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { //------------------------------------------------------------------------------ @@ -320,5 +319,4 @@ public: BEAST_DEFINE_TESTSUITE(ClosureCounter, core, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/core/Config_test.cpp b/src/test/core/Config_test.cpp index 824ab3d511..a3137b8e69 100644 --- a/src/test/core/Config_test.cpp +++ b/src/test/core/Config_test.cpp @@ -265,9 +265,7 @@ public: return absolute(file()).string(); } - ~ValidatorsTxtGuard() - { - } + ~ValidatorsTxtGuard() = default; }; } // namespace detail @@ -1278,20 +1276,41 @@ r.ripple.com:51235 }; std::array const tests = { - {{"password = aaaa\\#bbbb", "password", "aaaa#bbbb", false}, - {"password = aaaa#bbbb", "password", "aaaa", true}, - {"password = aaaa #bbbb", "password", "aaaa", true}, + {{.line = "password = aaaa\\#bbbb", + .field = "password", + .expect = "aaaa#bbbb", + .had_comment = false}, + {.line = "password = aaaa#bbbb", + .field = "password", + .expect = "aaaa", + .had_comment = true}, + {.line = "password = aaaa #bbbb", + .field = "password", + .expect = "aaaa", + .had_comment = true}, // since the value is all comment, this doesn't parse as k=v : - {"password = #aaaa #bbbb", "", "password =", true}, - {"password = aaaa\\# #bbbb", "password", "aaaa#", true}, - {"password = aaaa\\##bbbb", "password", "aaaa#", true}, - {"aaaa#bbbb", "", "aaaa", true}, - {"aaaa\\#bbbb", "", "aaaa#bbbb", false}, - {"aaaa\\##bbbb", "", "aaaa#", true}, - {"aaaa #bbbb", "", "aaaa", true}, - {"1 #comment", "", "1", true}, - {"#whole thing is comment", "", "", false}, - {" #whole comment with space", "", "", false}}}; + {.line = "password = #aaaa #bbbb", + .field = "", + .expect = "password =", + .had_comment = true}, + {.line = "password = aaaa\\# #bbbb", + .field = "password", + .expect = "aaaa#", + .had_comment = true}, + {.line = "password = aaaa\\##bbbb", + .field = "password", + .expect = "aaaa#", + .had_comment = true}, + {.line = "aaaa#bbbb", .field = "", .expect = "aaaa", .had_comment = true}, + {.line = "aaaa\\#bbbb", .field = "", .expect = "aaaa#bbbb", .had_comment = false}, + {.line = "aaaa\\##bbbb", .field = "", .expect = "aaaa#", .had_comment = true}, + {.line = "aaaa #bbbb", .field = "", .expect = "aaaa", .had_comment = true}, + {.line = "1 #comment", .field = "", .expect = "1", .had_comment = true}, + {.line = "#whole thing is comment", .field = "", .expect = "", .had_comment = false}, + {.line = " #whole comment with space", + .field = "", + .expect = "", + .had_comment = false}}}; for (auto const& t : tests) { diff --git a/src/test/core/Coroutine_test.cpp b/src/test/core/Coroutine_test.cpp index 952ea073de..38bafe08fd 100644 --- a/src/test/core/Coroutine_test.cpp +++ b/src/test/core/Coroutine_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Coroutine_test : public beast::unit_test::suite { @@ -175,5 +174,4 @@ public: BEAST_DEFINE_TESTSUITE(Coroutine, core, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/core/JobQueue_test.cpp b/src/test/core/JobQueue_test.cpp index eac8b17239..8163c7b057 100644 --- a/src/test/core/JobQueue_test.cpp +++ b/src/test/core/JobQueue_test.cpp @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { //------------------------------------------------------------------------------ @@ -142,5 +141,4 @@ public: BEAST_DEFINE_TESTSUITE(JobQueue, core, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/core/SociDB_test.cpp b/src/test/core/SociDB_test.cpp index a3f8376901..29aeca7ce5 100644 --- a/src/test/core/SociDB_test.cpp +++ b/src/test/core/SociDB_test.cpp @@ -80,7 +80,7 @@ public: { } } - ~SociDB_test() + ~SociDB_test() override { try { @@ -129,10 +129,8 @@ public: for (int i = 0; i < stringResult.size(); ++i) { auto si = std::distance( - stringData.begin(), - std::find(stringData.begin(), stringData.end(), stringResult[i])); - auto ii = std::distance( - intData.begin(), std::find(intData.begin(), intData.end(), intResult[i])); + stringData.begin(), std::ranges::find(stringData, stringResult[i])); + auto ii = std::distance(intData.begin(), std::ranges::find(intData, intResult[i])); BEAST_EXPECT(si == ii && si < stringResult.size()); } }; diff --git a/src/test/csf/BasicNetwork.h b/src/test/csf/BasicNetwork.h index 384b4634ad..63d85c3070 100644 --- a/src/test/csf/BasicNetwork.h +++ b/src/test/csf/BasicNetwork.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Peer to peer network simulator. The network is formed from a set of Peer objects representing @@ -224,6 +222,4 @@ BasicNetwork::send(Peer const& from, Peer const& to, Function&& f) }); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/BasicNetwork_test.cpp b/src/test/csf/BasicNetwork_test.cpp index 221a4d750c..d81638c214 100644 --- a/src/test/csf/BasicNetwork_test.cpp +++ b/src/test/csf/BasicNetwork_test.cpp @@ -6,8 +6,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class BasicNetwork_test : public beast::unit_test::suite { @@ -132,5 +131,4 @@ public: BEAST_DEFINE_TESTSUITE(BasicNetwork, csf, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/csf/CollectorRef.h b/src/test/csf/CollectorRef.h index 735a42ab16..23baa020b8 100644 --- a/src/test/csf/CollectorRef.h +++ b/src/test/csf/CollectorRef.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Holds a type-erased reference to an arbitrary collector. @@ -139,31 +137,31 @@ class CollectorRef Any& operator=(Any&&) = default; - virtual void + void on(PeerID node, tp when, Share const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Share const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Share const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Share const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Share const& e) override { t_.on(node, when, e); @@ -175,25 +173,25 @@ class CollectorRef t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Receive const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Receive const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Receive const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Receive const& e) override { t_.on(node, when, e); @@ -205,61 +203,61 @@ class CollectorRef t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Relay const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Relay const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Relay const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, Relay const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, SubmitTx const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, StartRound const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, CloseLedger const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, AcceptLedger const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, WrongPrevLedger const& e) override { t_.on(node, when, e); } - virtual void + void on(PeerID node, tp when, FullyValidateLedger const& e) override { t_.on(node, when, e); @@ -324,6 +322,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Digraph.h b/src/test/csf/Digraph.h index 66ef73390a..a5678cc539 100644 --- a/src/test/csf/Digraph.h +++ b/src/test/csf/Digraph.h @@ -18,8 +18,7 @@ struct NoEdgeData } // namespace detail -namespace test { -namespace csf { +namespace test::csf { /** Directed graph @@ -225,6 +224,6 @@ public: } }; -} // namespace csf -} // namespace test +} // namespace test::csf + } // namespace xrpl diff --git a/src/test/csf/Digraph_test.cpp b/src/test/csf/Digraph_test.cpp index f2d5938546..8f5a0fea1b 100644 --- a/src/test/csf/Digraph_test.cpp +++ b/src/test/csf/Digraph_test.cpp @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Digraph_test : public beast::unit_test::suite { @@ -79,5 +78,4 @@ public: BEAST_DEFINE_TESTSUITE(Digraph, csf, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/csf/Histogram.h b/src/test/csf/Histogram.h index cbc2d42d6c..6eef1b08c1 100644 --- a/src/test/csf/Histogram.h +++ b/src/test/csf/Histogram.h @@ -6,9 +6,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Basic histogram. @@ -108,6 +106,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Histogram_test.cpp b/src/test/csf/Histogram_test.cpp index f22b8e534b..6de04ad1ab 100644 --- a/src/test/csf/Histogram_test.cpp +++ b/src/test/csf/Histogram_test.cpp @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Histogram_test : public beast::unit_test::suite { @@ -64,5 +63,4 @@ public: BEAST_DEFINE_TESTSUITE(Histogram, csf, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/csf/Peer.h b/src/test/csf/Peer.h index f502ca2bc7..5cf2757ab1 100644 --- a/src/test/csf/Peer.h +++ b/src/test/csf/Peer.h @@ -20,9 +20,7 @@ #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { namespace bc = boost::container; @@ -493,7 +491,7 @@ struct Peer Result onClose(Ledger const& prevLedger, NetClock::time_point closeTime, ConsensusMode mode) { - issue(CloseLedger{prevLedger, openTxs}); + issue(CloseLedger{.prevLedger = prevLedger, .txs = openTxs}); return Result( TxSet{openTxs}, @@ -533,15 +531,14 @@ struct Peer prevLedger, acceptedTxs.txs(), closeResolution, result.position.closeTime()); ledgers[newLedger.id()] = newLedger; - issue(AcceptLedger{newLedger, lastClosedLedger}); + issue(AcceptLedger{.ledger = newLedger, .prior = lastClosedLedger}); prevProposers = result.proposers; prevRoundTime = result.roundTime.read(); lastClosedLedger = newLedger; - auto const it = std::remove_if(openTxs.begin(), openTxs.end(), [&](Tx const& tx) { - return acceptedTxs.exists(tx.id()); - }); - openTxs.erase(it, openTxs.end()); + auto const removed = std::ranges::remove_if( + openTxs, [&](Tx const& tx) { return acceptedTxs.exists(tx.id()); }); + openTxs.erase(removed.begin(), removed.end()); // Only send validation if the new ledger is compatible with our // fully validated ledger @@ -595,7 +592,7 @@ struct Peer if (netLgr != ledgerID) { JLOG(j.trace()) << Json::Compact(validations.getJsonTrie()); - issue(WrongPrevLedger{ledgerID, netLgr}); + issue(WrongPrevLedger{.wrong = ledgerID, .right = netLgr}); } return netLgr; @@ -668,7 +665,7 @@ struct Peer quorum = static_cast(std::ceil(numTrustedPeers * 0.8)); if (count >= quorum && ledger.isAncestor(fullyValidatedLedger)) { - issue(FullyValidateLedger{ledger, fullyValidatedLedger}); + issue(FullyValidateLedger{.ledger = ledger, .prior = fullyValidatedLedger}); fullyValidatedLedger = ledger; } } @@ -757,7 +754,7 @@ struct Peer // TODO: This always suppresses relay of peer positions already seen // Should it allow forwarding if for a recent ledger ? auto& dest = peerPositions[p.prevLedger()]; - if (std::find(dest.begin(), dest.end(), p) != dest.end()) + if (std::ranges::find(dest, p) != dest.end()) return false; dest.push_back(p); @@ -878,7 +875,7 @@ struct Peer if (bestLCL == Ledger::ID{0}) bestLCL = lastClosedLedger.id(); - issue(StartRound{bestLCL, lastClosedLedger}); + issue(StartRound{.bestLedger = bestLCL, .prevLedger = lastClosedLedger}); // Not yet modeling dynamic UNL. hash_set const nowUntrusted; @@ -948,6 +945,4 @@ struct Peer } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/PeerGroup.h b/src/test/csf/PeerGroup.h index 5df6de84a6..6503ac62df 100644 --- a/src/test/csf/PeerGroup.h +++ b/src/test/csf/PeerGroup.h @@ -6,9 +6,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** A group of simulation Peers @@ -35,11 +33,11 @@ public: } PeerGroup(std::vector&& peers) : peers_{std::move(peers)} { - std::sort(peers_.begin(), peers_.end()); + std::ranges::sort(peers_); } PeerGroup(std::vector const& peers) : peers_{peers} { - std::sort(peers_.begin(), peers_.end()); + std::ranges::sort(peers_); } PeerGroup(std::set const& peers) : peers_{peers.begin(), peers.end()} @@ -79,15 +77,14 @@ public: bool contains(Peer const* p) { - return std::find(peers_.begin(), peers_.end(), p) != peers_.end(); + return std::ranges::find(peers_, p) != peers_.end(); } bool contains(PeerID id) { - return std::find_if(peers_.begin(), peers_.end(), [id](Peer const* p) { - return p->id == id; - }) != peers_.end(); + return std::ranges::find_if(peers_, [id](Peer const* p) { return p->id == id; }) != + peers_.end(); } std::size_t @@ -215,12 +212,7 @@ public: operator+(PeerGroup const& a, PeerGroup const& b) { PeerGroup res; - std::set_union( - a.peers_.begin(), - a.peers_.end(), - b.peers_.begin(), - b.peers_.end(), - std::back_inserter(res.peers_)); + std::ranges::set_union(a.peers_, b.peers_, std::back_inserter(res.peers_)); return res; } @@ -230,12 +222,7 @@ public: { PeerGroup res; - std::set_difference( - a.peers_.begin(), - a.peers_.end(), - b.peers_.begin(), - b.peers_.end(), - std::back_inserter(res.peers_)); + std::ranges::set_difference(a.peers_, b.peers_, std::back_inserter(res.peers_)); return res; } @@ -346,6 +333,4 @@ randomRankedConnect( } } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Proposal.h b/src/test/csf/Proposal.h index 641fd2010a..06486daed3 100644 --- a/src/test/csf/Proposal.h +++ b/src/test/csf/Proposal.h @@ -6,14 +6,10 @@ #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Proposal is a position taken in the consensus process and is represented directly from the generic types. */ using Proposal = ConsensusProposal; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Scheduler.h b/src/test/csf/Scheduler.h index 984d97e277..82753124d9 100644 --- a/src/test/csf/Scheduler.h +++ b/src/test/csf/Scheduler.h @@ -9,9 +9,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Simulated discrete-event scheduler. @@ -429,6 +427,4 @@ Scheduler::step_for(std::chrono::duration const& amount) return step_until(now() + amount); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Scheduler_test.cpp b/src/test/csf/Scheduler_test.cpp index ef64915f6b..6b14a771d3 100644 --- a/src/test/csf/Scheduler_test.cpp +++ b/src/test/csf/Scheduler_test.cpp @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Scheduler_test : public beast::unit_test::suite { @@ -66,5 +65,4 @@ public: BEAST_DEFINE_TESTSUITE(Scheduler, csf, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/csf/Sim.h b/src/test/csf/Sim.h index e5f64cae1f..ca85d79f47 100644 --- a/src/test/csf/Sim.h +++ b/src/test/csf/Sim.h @@ -13,9 +13,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Sink that prepends simulation time to messages */ class BasicSink : public beast::Journal::Sink @@ -151,6 +149,4 @@ public: branches() const; }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/SimTime.h b/src/test/csf/SimTime.h index 2131de9b41..662f3fe19c 100644 --- a/src/test/csf/SimTime.h +++ b/src/test/csf/SimTime.h @@ -4,9 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { using RealClock = std::chrono::system_clock; using RealDuration = RealClock::duration; @@ -16,6 +14,4 @@ using SimClock = beast::manual_clock; using SimDuration = typename SimClock::duration; using SimTime = typename SimClock::time_point; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/TrustGraph.h b/src/test/csf/TrustGraph.h index 85d1b4d975..096104bc15 100644 --- a/src/test/csf/TrustGraph.h +++ b/src/test/csf/TrustGraph.h @@ -10,9 +10,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Trust graph @@ -147,6 +145,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Tx.h b/src/test/csf/Tx.h index fc57348443..8e8f6ea7e4 100644 --- a/src/test/csf/Tx.h +++ b/src/test/csf/Tx.h @@ -12,10 +12,9 @@ #include #include #include +#include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { //! A single transaction class Tx @@ -96,7 +95,7 @@ public: }; TxSet() = default; - TxSet(TxSetType const& s) : txs_{s}, id_{calcID(txs_)} + TxSet(TxSetType s) : txs_{std::move(s)}, id_{calcID(txs_)} { } @@ -212,6 +211,4 @@ hash_append(Hasher& h, Tx const& tx) hash_append(h, tx.id()); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/Validation.h b/src/test/csf/Validation.h index ba4da148f4..2adf64196b 100644 --- a/src/test/csf/Validation.h +++ b/src/test/csf/Validation.h @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { struct PeerIDTag; //< Uniquely identifies a peer @@ -58,7 +56,7 @@ public: , seq_{seq} , signTime_{sign} , seenTime_{seen} - , key_{key} + , key_{std::move(key)} , nodeID_{nodeID} , full_{full} , loadFee_{loadFee} @@ -172,6 +170,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/collectors.h b/src/test/csf/collectors.h index ddd7c65784..8da86cc287 100644 --- a/src/test/csf/collectors.h +++ b/src/test/csf/collectors.h @@ -11,9 +11,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { // A collector is any class that implements // @@ -633,7 +631,7 @@ struct JumpCollector { // Not a direct child -> parent switch if (e.ledger.parentID() != e.prior.id()) - closeJumps.emplace_back(Jump{who, when, e.prior, e.ledger}); + closeJumps.emplace_back(Jump{.id = who, .when = when, .from = e.prior, .to = e.ledger}); } void @@ -641,10 +639,11 @@ struct JumpCollector { // Not a direct child -> parent switch if (e.ledger.parentID() != e.prior.id()) - fullyValidatedJumps.emplace_back(Jump{who, when, e.prior, e.ledger}); + { + fullyValidatedJumps.emplace_back( + Jump{.id = who, .when = when, .from = e.prior, .to = e.ledger}); + } } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/events.h b/src/test/csf/events.h index 2aae22d125..ea163d3a80 100644 --- a/src/test/csf/events.h +++ b/src/test/csf/events.h @@ -7,9 +7,7 @@ #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { // Events are emitted by peers at a variety of points during the simulation. // Each event is emitted by a particular peer at a particular time. Collectors @@ -126,6 +124,4 @@ struct FullyValidateLedger Ledger prior; }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/impl/Sim.cpp b/src/test/csf/impl/Sim.cpp index 4b93b5c131..8cf6869522 100644 --- a/src/test/csf/impl/Sim.cpp +++ b/src/test/csf/impl/Sim.cpp @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { void Sim::run(int ledgers) @@ -46,7 +44,7 @@ Sim::synchronized(PeerGroup const& g) if (g.size() < 1) return true; Peer const* ref = g[0]; - return std::all_of(g.begin(), g.end(), [&ref](Peer const* p) { + return std::ranges::all_of(g, [&ref](Peer const* p) { return p->lastClosedLedger.id() == ref->lastClosedLedger.id() && p->fullyValidatedLedger.id() == ref->fullyValidatedLedger.id(); }); @@ -69,6 +67,4 @@ Sim::branches(PeerGroup const& g) const return oracle.branches(ledgers); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/impl/ledgers.cpp b/src/test/csf/impl/ledgers.cpp index f2405e12c9..a4203b2a15 100644 --- a/src/test/csf/impl/ledgers.cpp +++ b/src/test/csf/impl/ledgers.cpp @@ -13,9 +13,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { Ledger::Instance const Ledger::genesis; @@ -166,6 +164,4 @@ LedgerOracle::branches(std::set const& ledgers) // The size of tips is the number of branches return tips.size(); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/ledgers.h b/src/test/csf/ledgers.h index 67a7427af6..3869fb7bd4 100644 --- a/src/test/csf/ledgers.h +++ b/src/test/csf/ledgers.h @@ -14,9 +14,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** A ledger is a set of observed transactions and a sequence number identifying the ledger. @@ -59,9 +57,7 @@ private: // ID by the oracle struct Instance { - Instance() - { - } + Instance() = default; // Sequence number Seq seq{0}; @@ -332,6 +328,4 @@ struct LedgerHistoryHelper } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/random.h b/src/test/csf/random.h index 406252ff0d..a5c54ec9bf 100644 --- a/src/test/csf/random.h +++ b/src/test/csf/random.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { /** Return a randomly shuffled copy of vector based on weights w. @@ -76,7 +74,7 @@ public: { using tag = typename std::iterator_traits::iterator_category; static_assert( - std::is_same::value, + std::is_same_v, "Selector only supports random access iterators."); // TODO: Allow for forward iterators } @@ -149,6 +147,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/submitters.h b/src/test/csf/submitters.h index ae81b3e89c..be45b4ea2a 100644 --- a/src/test/csf/submitters.h +++ b/src/test/csf/submitters.h @@ -7,9 +7,7 @@ #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { // Submitters are classes for simulating submission of transactions to the // network @@ -62,7 +60,7 @@ class Submitter } template - static std::enable_if_t::value, SimDuration> + static std::enable_if_t, SimDuration> asDuration(T t) { return SimDuration{static_cast(t)}; @@ -105,6 +103,4 @@ makeSubmitter( return Submitter(dist, start, end, sel, s, g); } -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/csf/timers.h b/src/test/csf/timers.h index beb4e142d9..2f2ec4dc93 100644 --- a/src/test/csf/timers.h +++ b/src/test/csf/timers.h @@ -6,9 +6,7 @@ #include #include -namespace xrpl { -namespace test { -namespace csf { +namespace xrpl::test::csf { // Timers are classes that schedule repeated events and are mostly independent // of simulation-specific details. @@ -60,6 +58,4 @@ public: } }; -} // namespace csf -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::csf diff --git a/src/test/jtx/AMM.h b/src/test/jtx/AMM.h index 5697952ada..faad982bcc 100644 --- a/src/test/jtx/AMM.h +++ b/src/test/jtx/AMM.h @@ -14,9 +14,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class LPToken { @@ -139,9 +137,9 @@ class AMM public: AMM(Env& env, - Account const& account, - STAmount const& asset1, - STAmount const& asset2, + Account account, + STAmount asset1, + STAmount asset2, bool log = false, std::uint16_t tfee = 0, std::uint32_t fee = 0, @@ -525,6 +523,4 @@ ammClawback( std::optional const& amount); } // namespace amm -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/AMMTest.h b/src/test/jtx/AMMTest.h index a3d126646d..8f46ef6f59 100644 --- a/src/test/jtx/AMMTest.h +++ b/src/test/jtx/AMMTest.h @@ -7,9 +7,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class AMM; @@ -152,6 +150,4 @@ protected: pathTestEnv(); }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/AbstractClient.h b/src/test/jtx/AbstractClient.h index 94e58f60cd..2002b3a7d8 100644 --- a/src/test/jtx/AbstractClient.h +++ b/src/test/jtx/AbstractClient.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { /* Abstract XRPL client interface. @@ -38,5 +37,4 @@ public: version() const = 0; }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/Account.h b/src/test/jtx/Account.h index 6f796e08b3..1e39f5a546 100644 --- a/src/test/jtx/Account.h +++ b/src/test/jtx/Account.h @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class IOU; @@ -143,6 +141,4 @@ operator<=>(Account const& lhs, Account const& rhs) noexcept return lhs.id() <=> rhs.id(); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/CaptureLogs.h b/src/test/jtx/CaptureLogs.h index 8c8da6817b..0e9598decd 100644 --- a/src/test/jtx/CaptureLogs.h +++ b/src/test/jtx/CaptureLogs.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** * @brief Log manager for CaptureSinks. This class holds the stream @@ -66,5 +65,4 @@ public: } }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/CheckMessageLogs.h b/src/test/jtx/CheckMessageLogs.h index 286cfa1844..4c6bd35036 100644 --- a/src/test/jtx/CheckMessageLogs.h +++ b/src/test/jtx/CheckMessageLogs.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** Log manager that searches for a specific message substring */ @@ -55,5 +54,4 @@ public: } }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/Env.h b/src/test/jtx/Env.h index e88b07becd..75c0195f40 100644 --- a/src/test/jtx/Env.h +++ b/src/test/jtx/Env.h @@ -40,9 +40,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Wrapper that captures std::source_location when implicitly constructed. This solves the problem of combining std::source_location with variadic @@ -885,6 +883,4 @@ Env::rpc(std::string const& cmd, Args&&... args) return rpc(std::unordered_map(), cmd, std::forward(args)...); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/Env_ss.h b/src/test/jtx/Env_ss.h index d6f5fd1a29..e9f6ae3bb1 100644 --- a/src/test/jtx/Env_ss.h +++ b/src/test/jtx/Env_ss.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** A transaction testing environment wrapper. Transactions submitted in sign-and-submit mode @@ -66,6 +64,4 @@ public: } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/Env_test.cpp b/src/test/jtx/Env_test.cpp index 78c72765cf..6cef617ea7 100644 --- a/src/test/jtx/Env_test.cpp +++ b/src/test/jtx/Env_test.cpp @@ -63,8 +63,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Env_test : public beast::unit_test::suite { @@ -110,10 +109,10 @@ public: PrettyAmount(0u); // NOLINT(bugprone-unused-raii) PrettyAmount(1u); // NOLINT(bugprone-unused-raii) PrettyAmount(-1); // NOLINT(bugprone-unused-raii) - static_assert(!std::is_trivially_constructible::value, ""); - static_assert(!std::is_trivially_constructible::value, ""); - static_assert(!std::is_trivially_constructible::value, ""); - static_assert(!std::is_trivially_constructible::value, ""); + static_assert(!std::is_trivially_constructible_v, ""); + static_assert(!std::is_trivially_constructible_v, ""); + static_assert(!std::is_trivially_constructible_v, ""); + static_assert(!std::is_trivially_constructible_v, ""); try { @@ -903,5 +902,4 @@ public: BEAST_DEFINE_TESTSUITE(Env, jtx, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/JSONRPCClient.h b/src/test/jtx/JSONRPCClient.h index 41129a36ec..a2ff815f48 100644 --- a/src/test/jtx/JSONRPCClient.h +++ b/src/test/jtx/JSONRPCClient.h @@ -6,12 +6,10 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** Returns a client using JSON-RPC over HTTP/S. */ std::unique_ptr makeJSONRPCClient(Config const& cfg, unsigned rpc_version = 2); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/JTx.h b/src/test/jtx/JTx.h index bf43d0aa75..a4db523ff5 100644 --- a/src/test/jtx/JTx.h +++ b/src/test/jtx/JTx.h @@ -12,9 +12,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class Env; @@ -152,6 +150,4 @@ private: prop_list props_; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/ManualTimeKeeper.h b/src/test/jtx/ManualTimeKeeper.h index b054db96dd..1fd94858d6 100644 --- a/src/test/jtx/ManualTimeKeeper.h +++ b/src/test/jtx/ManualTimeKeeper.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ManualTimeKeeper : public TimeKeeper { @@ -28,5 +27,4 @@ public: } }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/Oracle.h b/src/test/jtx/Oracle.h index c64334e5d4..42376b3599 100644 --- a/src/test/jtx/Oracle.h +++ b/src/test/jtx/Oracle.h @@ -4,10 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { -namespace oracle { +namespace xrpl::test::jtx::oracle { using AnyValue = std::variant; using OraclesData = std::vector, std::optional>>; @@ -177,7 +174,4 @@ public: } }; -} // namespace oracle -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::oracle diff --git a/src/test/jtx/PathSet.h b/src/test/jtx/PathSet.h index 86b38f7eaf..4db3b7d62e 100644 --- a/src/test/jtx/PathSet.h +++ b/src/test/jtx/PathSet.h @@ -6,8 +6,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { /** Count offer */ @@ -186,5 +185,4 @@ private: } }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/SignerUtils.h b/src/test/jtx/SignerUtils.h index 994868e4a2..dd68701303 100644 --- a/src/test/jtx/SignerUtils.h +++ b/src/test/jtx/SignerUtils.h @@ -2,11 +2,11 @@ #include +#include +#include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { struct Reg { @@ -17,7 +17,7 @@ struct Reg { } - Reg(Account const& acct_, Account const& regularSig) : acct(acct_), sig(regularSig) + Reg(Account acct_, Account regularSig) : acct(std::move(acct_)), sig(std::move(regularSig)) { } @@ -40,11 +40,7 @@ struct Reg inline void sortSigners(std::vector& signers) { - std::sort(signers.begin(), signers.end(), [](Reg const& lhs, Reg const& rhs) { - return lhs.acct < rhs.acct; - }); + std::ranges::sort(signers, [](Reg const& lhs, Reg const& rhs) { return lhs.acct < rhs.acct; }); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/TestHelpers.h b/src/test/jtx/TestHelpers.h index c0004e3d6a..70692d1675 100644 --- a/src/test/jtx/TestHelpers.h +++ b/src/test/jtx/TestHelpers.h @@ -13,12 +13,12 @@ #include #include +#include #include +#include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Generic helper class for helper classes that set a field on a JTx. @@ -40,7 +40,7 @@ protected: SV value_; public: - explicit JTxField(SF const& sfield, SV const& value) : sfield_(sfield), value_(value) + explicit JTxField(SF const& sfield, SV value) : sfield_(sfield), value_(std::move(value)) { } @@ -68,7 +68,7 @@ protected: SV value_; public: - explicit JTxField(SF const& sfield, SV const& value) : sfield_(sfield), value_(value) + explicit JTxField(SF const& sfield, SV value) : sfield_(sfield), value_(std::move(value)) { } @@ -367,7 +367,7 @@ void stpath_append_one(STPath& st, Account const& account); template -std::enable_if_t::value> +std::enable_if_t> stpath_append_one(STPath& st, T const& t) { stpath_append_one(st, Account{t}); @@ -424,7 +424,7 @@ same(STPathSet const& st1, Args const&... args) for (auto const& p : st2) { - if (std::find(st1.begin(), st1.end(), p) == st1.end()) + if (std::ranges::find(st1, p) == st1.end()) return false; } return true; @@ -1035,6 +1035,4 @@ testHelper3TokensMix(TTester&& tester) tester(detail::issueHelperIOU, detail::issueHelperIOU, detail::issueHelperMPT); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/TrustedPublisherServer.h b/src/test/jtx/TrustedPublisherServer.h index b0a8e3a017..097dae97bb 100644 --- a/src/test/jtx/TrustedPublisherServer.h +++ b/src/test/jtx/TrustedPublisherServer.h @@ -21,9 +21,9 @@ #include #include +#include -namespace xrpl { -namespace test { +namespace xrpl::test { class TrustedPublisherServer : public std::enable_shared_from_this { @@ -75,7 +75,7 @@ class TrustedPublisherServer : public std::enable_shared_from_this #include -namespace xrpl { -namespace test { +namespace xrpl::test { class WSClient : public AbstractClient { @@ -33,5 +32,4 @@ makeWSClient( unsigned rpc_version = 2, std::unordered_map const& headers = {}); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/WSClient_test.cpp b/src/test/jtx/WSClient_test.cpp index 7a5d150a51..157b7665a8 100644 --- a/src/test/jtx/WSClient_test.cpp +++ b/src/test/jtx/WSClient_test.cpp @@ -7,8 +7,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class WSClient_test : public beast::unit_test::suite { @@ -33,5 +32,4 @@ public: BEAST_DEFINE_TESTSUITE(WSClient, jtx, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/account_txn_id.h b/src/test/jtx/account_txn_id.h index 71ac606418..424ce13b14 100644 --- a/src/test/jtx/account_txn_id.h +++ b/src/test/jtx/account_txn_id.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { struct account_txn_id { @@ -19,6 +17,4 @@ public: void operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/acctdelete.h b/src/test/jtx/acctdelete.h index c081eb92a5..774baca7a1 100644 --- a/src/test/jtx/acctdelete.h +++ b/src/test/jtx/acctdelete.h @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Delete account. If successful transfer remaining XRP to dest. */ Json::Value @@ -19,7 +17,4 @@ acctdelete(Account const& account, Account const& dest); void incLgrSeqForAccDel(jtx::Env& env, jtx::Account const& acc, std::uint32_t margin = 0); -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/amount.h b/src/test/jtx/amount.h index 0f6db6bdcd..122af2faa1 100644 --- a/src/test/jtx/amount.h +++ b/src/test/jtx/amount.h @@ -13,6 +13,7 @@ #include #include #include +#include namespace xrpl { namespace detail { @@ -24,8 +25,7 @@ struct epsilon_multiple } // namespace detail -namespace test { -namespace jtx { +namespace test::jtx { /* @@ -74,7 +74,8 @@ public: PrettyAmount& operator=(PrettyAmount const&) = default; - PrettyAmount(STAmount const& amount, std::string const& name) : amount_(amount), name_(name) + PrettyAmount(STAmount amount, std::string name) + : amount_(std::move(amount)), name_(std::move(name)) { } @@ -360,9 +361,7 @@ drops(XRPAmount i) // The smallest possible IOU STAmount struct epsilon_t { - epsilon_t() - { - } + epsilon_t() = default; detail::epsilon_multiple operator()(std::size_t n) const @@ -386,8 +385,8 @@ public: Account account; xrpl::Currency currency; - IOU(Account const& account_, xrpl::Currency const& currency_) - : account(account_), currency(currency_) + IOU(Account account_, xrpl::Currency const& currency_) + : account(std::move(account_)), currency(currency_) { } @@ -427,7 +426,7 @@ public: template < class T, - class = std::enable_if_t= sizeof(int) && std::is_arithmetic::value>> + class = std::enable_if_t= sizeof(int) && std::is_arithmetic_v>> PrettyAmount operator()(T v) const { @@ -476,10 +475,10 @@ public: std::string name; xrpl::MPTID issuanceID; - MPT(std::string const& n, xrpl::MPTID const& issuanceID_) : name(n), issuanceID(issuanceID_) + MPT(std::string n, xrpl::MPTID const& issuanceID_) : name(std::move(n)), issuanceID(issuanceID_) { } - MPT(std::string const& n = "") : name(n), issuanceID(noMPT()) + MPT(std::string n = "") : name(std::move(n)), issuanceID(noMPT()) { } MPT(Asset const& asset) : issuanceID(asset.get()) @@ -585,11 +584,11 @@ struct AnyAmount AnyAmount& operator=(AnyAmount const&) = default; - AnyAmount(STAmount const& amount) : is_any(false), value(amount) + AnyAmount(STAmount amount) : is_any(false), value(std::move(amount)) { } - AnyAmount(STAmount const& amount, any_t const*) : is_any(true), value(amount) + AnyAmount(STAmount amount, any_t const*) : is_any(true), value(std::move(amount)) { } @@ -614,6 +613,6 @@ any_t::operator()(STAmount const& sta) const */ extern any_t const any; -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/attester.h b/src/test/jtx/attester.h index 6904135f21..1c38684890 100644 --- a/src/test/jtx/attester.h +++ b/src/test/jtx/attester.h @@ -13,8 +13,7 @@ class SecretKey; class STXChainBridge; class STAmount; -namespace test { -namespace jtx { +namespace test::jtx { Buffer sign_claim_attestation( @@ -40,6 +39,6 @@ sign_create_account_attestation( bool wasLockingChainSend, std::uint64_t createCount, AccountID const& dst); -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/balance.h b/src/test/jtx/balance.h index 2181429908..a75583b1a3 100644 --- a/src/test/jtx/balance.h +++ b/src/test/jtx/balance.h @@ -3,9 +3,9 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +#include + +namespace xrpl::test::jtx { /** A balance matches. @@ -23,17 +23,17 @@ private: STAmount const value_; public: - balance(Account const& account, none_t) : none_(true), account_(account), value_(XRP) + balance(Account account, none_t) : none_(true), account_(std::move(account)), value_(XRP) { } - balance(Account const& account, None const& value) - : none_(true), account_(account), value_(value.asset) + balance(Account account, None const& value) + : none_(true), account_(std::move(account)), value_(value.asset) { } - balance(Account const& account, STAmount const& value) - : none_(false), account_(account), value_(value) + balance(Account account, STAmount value) + : none_(false), account_(std::move(account)), value_(std::move(value)) { } @@ -41,6 +41,4 @@ public: operator()(Env&) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/basic_prop.h b/src/test/jtx/basic_prop.h index 080eecd34b..d2b4805651 100644 --- a/src/test/jtx/basic_prop.h +++ b/src/test/jtx/basic_prop.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { struct basic_prop { @@ -38,6 +36,4 @@ struct prop_type : basic_prop } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/batch.h b/src/test/jtx/batch.h index 0fc1fb1f68..90a7bef8cc 100644 --- a/src/test/jtx/batch.h +++ b/src/test/jtx/batch.h @@ -12,13 +12,10 @@ #include #include #include - -namespace xrpl { -namespace test { -namespace jtx { +#include /** Batch operations */ -namespace batch { +namespace xrpl::test::jtx::batch { /** Calculate Batch Fee. */ XRPAmount @@ -38,10 +35,10 @@ private: public: inner( - Json::Value const& txn, + Json::Value txn, std::uint32_t const& sequence, std::optional const& ticket = std::nullopt) - : txn_(txn), seq_(sequence), ticket_(ticket) + : txn_(std::move(txn)), seq_(sequence), ticket_(ticket) { txn_[jss::SigningPubKey] = ""; txn_[jss::Sequence] = seq_; @@ -108,16 +105,16 @@ public: Account master; std::vector signers; - msig(Account const& masterAccount, std::vector signers_) - : master(masterAccount), signers(std::move(signers_)) + msig(Account masterAccount, std::vector signers_) + : master(std::move(masterAccount)), signers(std::move(signers_)) { sortSigners(signers); } template requires std::convertible_to - explicit msig(Account const& masterAccount, AccountType&& a0, Accounts&&... aN) - : master(masterAccount) + explicit msig(Account masterAccount, AccountType&& a0, Accounts&&... aN) + : master(std::move(masterAccount)) , signers{std::forward(a0), std::forward(aN)...} { sortSigners(signers); @@ -127,9 +124,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace batch - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::batch diff --git a/src/test/jtx/check.h b/src/test/jtx/check.h index 9a1c6b2d2c..fc1d8054c6 100644 --- a/src/test/jtx/check.h +++ b/src/test/jtx/check.h @@ -4,9 +4,9 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +#include + +namespace xrpl::test::jtx { /** Check operations. */ namespace check { @@ -19,7 +19,7 @@ cash(jtx::Account const& dest, uint256 const& checkId, STAmount const& amount); struct DeliverMin { STAmount value; - explicit DeliverMin(STAmount const& deliverMin) : value(deliverMin) + explicit DeliverMin(STAmount deliverMin) : value(std::move(deliverMin)) { } }; @@ -37,7 +37,4 @@ cancel(jtx::Account const& dest, uint256 const& checkId); /** Match the number of checks on the account. */ using checks = owner_count; -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/credentials.h b/src/test/jtx/credentials.h index 56d127fca9..fd6d31f56d 100644 --- a/src/test/jtx/credentials.h +++ b/src/test/jtx/credentials.h @@ -4,11 +4,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace credentials { +namespace xrpl::test::jtx::credentials { inline Keylet keylet( @@ -80,7 +76,4 @@ ledgerEntry( Json::Value ledgerEntry(jtx::Env& env, std::string const& credIdx); -} // namespace credentials -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::credentials diff --git a/src/test/jtx/delegate.h b/src/test/jtx/delegate.h index 7aecb54922..197750a511 100644 --- a/src/test/jtx/delegate.h +++ b/src/test/jtx/delegate.h @@ -3,11 +3,9 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +#include -namespace delegate { +namespace xrpl::test::jtx::delegate { Json::Value set(jtx::Account const& account, @@ -23,7 +21,7 @@ private: jtx::Account delegate_; public: - explicit as(jtx::Account const& account) : delegate_(account) + explicit as(jtx::Account account) : delegate_(std::move(account)) { } @@ -34,7 +32,4 @@ public: } }; -} // namespace delegate -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::delegate diff --git a/src/test/jtx/delivermin.h b/src/test/jtx/delivermin.h index 3edb38ffef..6dc0bea2ad 100644 --- a/src/test/jtx/delivermin.h +++ b/src/test/jtx/delivermin.h @@ -4,9 +4,9 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +#include + +namespace xrpl::test::jtx { /** Sets the DeliverMin on a JTx. */ class deliver_min @@ -15,7 +15,7 @@ private: STAmount amount_; public: - deliver_min(STAmount const& amount) : amount_(amount) + deliver_min(STAmount amount) : amount_(std::move(amount)) { } @@ -23,6 +23,4 @@ public: operator()(Env&, JTx& jtx) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/deposit.h b/src/test/jtx/deposit.h index d7762e9ae3..d74db770c7 100644 --- a/src/test/jtx/deposit.h +++ b/src/test/jtx/deposit.h @@ -3,12 +3,8 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - /** Deposit preauthorize operations */ -namespace deposit { +namespace xrpl::test::jtx::deposit { /** Preauthorize for deposit. Invoke as deposit::auth. */ Json::Value @@ -52,9 +48,4 @@ authCredentials(jtx::Account const& account, std::vector c Json::Value unauthCredentials(jtx::Account const& account, std::vector const& auth); -} // namespace deposit - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::deposit diff --git a/src/test/jtx/did.h b/src/test/jtx/did.h index e6b06f8f7c..faf4b2046c 100644 --- a/src/test/jtx/did.h +++ b/src/test/jtx/did.h @@ -4,12 +4,8 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - /** DID operations. */ -namespace did { +namespace xrpl::test::jtx::did { Json::Value set(jtx::Account const& account); @@ -74,9 +70,4 @@ public: Json::Value del(jtx::Account const& account); -} // namespace did - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::did diff --git a/src/test/jtx/directory.h b/src/test/jtx/directory.h index e9fff35434..0940c23623 100644 --- a/src/test/jtx/directory.h +++ b/src/test/jtx/directory.h @@ -9,10 +9,8 @@ #include #include -namespace xrpl::test::jtx { - /** Directory operations. */ -namespace directory { +namespace xrpl::test::jtx::directory { enum Error { DirectoryRootNotFound, @@ -53,6 +51,4 @@ maximumPageIndex(Env const& env) -> std::uint64_t return dirNodeMaxPages - 1; } -} // namespace directory - -} // namespace xrpl::test::jtx +} // namespace xrpl::test::jtx::directory diff --git a/src/test/jtx/domain.h b/src/test/jtx/domain.h index cb67ce3622..993c89ee19 100644 --- a/src/test/jtx/domain.h +++ b/src/test/jtx/domain.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the domain on a JTx. */ class domain @@ -21,6 +19,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/envconfig.h b/src/test/jtx/envconfig.h index b6fede686f..dcfafc426e 100644 --- a/src/test/jtx/envconfig.h +++ b/src/test/jtx/envconfig.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { // frequently used macros defined here for convenience. #define PORT_WS "port_ws" @@ -159,5 +158,4 @@ makeConfig( std::map extraVoting = {}); } // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/escrow.h b/src/test/jtx/escrow.h index 8fe9d9f5f9..8bb505a592 100644 --- a/src/test/jtx/escrow.h +++ b/src/test/jtx/escrow.h @@ -8,12 +8,8 @@ #include -namespace xrpl { -namespace test { -namespace jtx { - /** Escrow operations. */ -namespace escrow { +namespace xrpl::test::jtx::escrow { Json::Value create(AccountID const& account, AccountID const& to, STAmount const& amount); @@ -79,9 +75,4 @@ auto const condition = JTxFieldWrapper(sfCondition); auto const fulfillment = JTxFieldWrapper(sfFulfillment); -} // namespace escrow - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::escrow diff --git a/src/test/jtx/fee.h b/src/test/jtx/fee.h index 281066f0aa..f586e2a082 100644 --- a/src/test/jtx/fee.h +++ b/src/test/jtx/fee.h @@ -8,9 +8,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the fee on a JTx. */ class fee @@ -47,6 +45,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/flags.h b/src/test/jtx/flags.h index c4fb5cb34c..4bf095e685 100644 --- a/src/test/jtx/flags.h +++ b/src/test/jtx/flags.h @@ -6,6 +6,8 @@ #include #include +#include + namespace xrpl { namespace detail { @@ -87,8 +89,7 @@ protected: } // namespace detail -namespace test { -namespace jtx { +namespace test::jtx { // JSON generators @@ -111,7 +112,7 @@ private: public: template - flags(Account const& account, Args... args) : flags_helper(args...), account_(account) + flags(Account account, Args... args) : flags_helper(args...), account_(std::move(account)) { } @@ -127,7 +128,7 @@ private: public: template - nflags(Account const& account, Args... args) : flags_helper(args...), account_(account) + nflags(Account account, Args... args) : flags_helper(args...), account_(std::move(account)) { } @@ -135,6 +136,6 @@ public: operator()(Env& env) const; }; -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/impl/AMM.cpp b/src/test/jtx/impl/AMM.cpp index a0e868905f..6f68033fc4 100644 --- a/src/test/jtx/impl/AMM.cpp +++ b/src/test/jtx/impl/AMM.cpp @@ -38,9 +38,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { static Number number(STAmount const& a) @@ -63,9 +61,9 @@ AMM::initialTokens() AMM::AMM( Env& env, - Account const& account, - STAmount const& asset1, - STAmount const& asset2, + Account account, + STAmount asset1, + STAmount asset2, bool log, std::uint16_t tfee, std::uint32_t fee, @@ -75,14 +73,14 @@ AMM::AMM( std::optional const& ter, bool close) : env_(env) - , creatorAccount_(account) - , asset1_(asset1) - , asset2_(asset2) + , creatorAccount_(std::move(account)) + , asset1_(std::move(asset1)) + , asset2_(std::move(asset2)) , ammID_(keylet::amm(asset1_.asset(), asset2_.asset()).key) , log_(log) , doClose_(close) , lastPurchasePrice_(0) - , msig_(ms) + , msig_(std::move(ms)) , fee_(fee) , ammAccount_(create(tfee, flags, seq, ter)) , lptIssue_(xrpl::ammLPTIssue(asset1_.asset(), asset2_.asset(), ammAccount_)) @@ -312,10 +310,8 @@ AMM::expectAuctionSlot(std::vector const& authAccounts) const [&](std::uint32_t, std::optional, IOUAmount const&, STArray const& accounts) { for (auto const& account : accounts) { - if (std::find( - authAccounts.cbegin(), - authAccounts.cend(), - account.getAccountID(sfAccount)) == authAccounts.end()) + if (std::ranges::find(authAccounts, account.getAccountID(sfAccount)) == + authAccounts.end()) return false; } return true; @@ -922,6 +918,4 @@ ammClawback( return jv; } } // namespace amm -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/AMMTest.cpp b/src/test/jtx/impl/AMMTest.cpp index 2c45a26850..24d831be7d 100644 --- a/src/test/jtx/impl/AMMTest.cpp +++ b/src/test/jtx/impl/AMMTest.cpp @@ -28,9 +28,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { [[maybe_unused]] std::vector fund( @@ -221,6 +219,4 @@ AMMTest::pathTestEnv() return cfg; })); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/Account.cpp b/src/test/jtx/impl/Account.cpp index 7a43fdc23d..4e09940487 100644 --- a/src/test/jtx/impl/Account.cpp +++ b/src/test/jtx/impl/Account.cpp @@ -19,9 +19,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { std::unordered_map, Account, beast::uhash<>> Account::cache_; @@ -95,6 +93,4 @@ Account::operator[](std::string const& s) const return IOU(*this, currency); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/Env.cpp b/src/test/jtx/impl/Env.cpp index b2b191a84d..f03e26b567 100644 --- a/src/test/jtx/impl/Env.cpp +++ b/src/test/jtx/impl/Env.cpp @@ -65,9 +65,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { //------------------------------------------------------------------------------ @@ -696,6 +694,4 @@ Env::disableFeature(uint256 const feature) app().config().features.erase(feature); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/JSONRPCClient.cpp b/src/test/jtx/impl/JSONRPCClient.cpp index 07216a23ad..c44371c13e 100644 --- a/src/test/jtx/impl/JSONRPCClient.cpp +++ b/src/test/jtx/impl/JSONRPCClient.cpp @@ -31,8 +31,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class JSONRPCClient : public AbstractClient { @@ -159,5 +158,4 @@ makeJSONRPCClient(Config const& cfg, unsigned rpc_version) return std::make_unique(cfg, rpc_version); } -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/impl/Oracle.cpp b/src/test/jtx/impl/Oracle.cpp index c98d649fb2..7e49cdcd3d 100644 --- a/src/test/jtx/impl/Oracle.cpp +++ b/src/test/jtx/impl/Oracle.cpp @@ -28,10 +28,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace oracle { +namespace xrpl::test::jtx::oracle { Oracle::Oracle(Env& env, CreateArg const& arg, bool submit) : env_(env) { @@ -137,7 +134,7 @@ Oracle::expectPrice(DataSeries const& series) const return false; for (auto const& data : series) { - if (std::find_if(leSeries.begin(), leSeries.end(), [&](STObject const& o) -> bool { + if (std::ranges::find_if(leSeries, [&](STObject const& o) -> bool { auto const& baseAsset = o.getFieldCurrency(sfBaseAsset); auto const& quoteAsset = o.getFieldCurrency(sfQuoteAsset); auto const& price = o.getFieldU64(sfAssetPrice); @@ -422,7 +419,4 @@ validDocumentID(AnyValue const& v) } } -} // namespace oracle -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::oracle diff --git a/src/test/jtx/impl/TestHelpers.cpp b/src/test/jtx/impl/TestHelpers.cpp index 51fede19d7..2495e151f3 100644 --- a/src/test/jtx/impl/TestHelpers.cpp +++ b/src/test/jtx/impl/TestHelpers.cpp @@ -61,9 +61,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { // Functions used in debugging Json::Value @@ -217,16 +215,16 @@ find_paths_request( Resource::Consumer c; RPC::JsonContext context{ - {env.journal, - app, - loadType, - app.getOPs(), - app.getLedgerMaster(), - c, - Role::USER, - {}, - {}, - RPC::apiVersionIfUnspecified}, + {.j = env.journal, + .app = app, + .loadType = loadType, + .netOps = app.getOPs(), + .ledgerMaster = app.getLedgerMaster(), + .consumer = c, + .role = Role::USER, + .coro = {}, + .infoSub = {}, + .apiVersion = RPC::apiVersionIfUnspecified}, {}, {}}; @@ -415,7 +413,7 @@ expectOffers( if (sle->getType() == ltOFFER) { ++cnt; - if (std::find_if(toMatch.begin(), toMatch.end(), [&](auto const& a) { + if (std::ranges::find_if(toMatch, [&](auto const& a) { return a.in == sle->getFieldAmount(sfTakerPays) && a.out == sle->getFieldAmount(sfTakerGets); }) != toMatch.end()) @@ -858,6 +856,4 @@ pay(AccountID const& account, uint256 const& loanID, STAmount const& amount, std } } // namespace loan -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/WSClient.cpp b/src/test/jtx/impl/WSClient.cpp index ad5958a2e6..617e2b8881 100644 --- a/src/test/jtx/impl/WSClient.cpp +++ b/src/test/jtx/impl/WSClient.cpp @@ -42,8 +42,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class WSClientImpl : public WSClient { @@ -335,5 +334,4 @@ makeWSClient( return std::make_unique(cfg, v2, rpc_version, headers); } -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/impl/account_txn_id.cpp b/src/test/jtx/impl/account_txn_id.cpp index ff067dbca5..a556ea8e91 100644 --- a/src/test/jtx/impl/account_txn_id.cpp +++ b/src/test/jtx/impl/account_txn_id.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void account_txn_id::operator()(Env&, JTx& jt) const @@ -16,6 +14,4 @@ account_txn_id::operator()(Env&, JTx& jt) const jt["AccountTxnID"] = strHex(hash_); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/acctdelete.cpp b/src/test/jtx/impl/acctdelete.cpp index 11afb7d38b..433ed5ec92 100644 --- a/src/test/jtx/impl/acctdelete.cpp +++ b/src/test/jtx/impl/acctdelete.cpp @@ -10,9 +10,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { // Delete account. If successful transfer remaining XRP to dest. Json::Value @@ -45,6 +43,4 @@ incLgrSeqForAccDel(jtx::Env& env, jtx::Account const& acc, std::uint32_t margin) env.test.BEAST_EXPECT(openLedgerSeq(env) == env.seq(acc) + 255 - margin); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/amount.cpp b/src/test/jtx/impl/amount.cpp index 521f178a2c..1a02e07bdf 100644 --- a/src/test/jtx/impl/amount.cpp +++ b/src/test/jtx/impl/amount.cpp @@ -16,9 +16,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { PrettyAmount:: operator AnyAmount() const @@ -120,6 +118,4 @@ operator<<(std::ostream& os, MPT const& mpt) any_t const any{}; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/attester.cpp b/src/test/jtx/impl/attester.cpp index 36c5870332..74c0ae24ed 100644 --- a/src/test/jtx/impl/attester.cpp +++ b/src/test/jtx/impl/attester.cpp @@ -10,9 +10,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Buffer sign_claim_attestation( @@ -56,6 +54,4 @@ sign_create_account_attestation( return sign(pk, sk, makeSlice(toSign)); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/balance.cpp b/src/test/jtx/impl/balance.cpp index de1c4b977c..1c7b4c0c25 100644 --- a/src/test/jtx/impl/balance.cpp +++ b/src/test/jtx/impl/balance.cpp @@ -11,9 +11,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { #define TEST_EXPECT(cond) env.test.expect(cond, __FILE__, __LINE__) #define TEST_EXPECTS(cond, reason) \ @@ -82,6 +80,4 @@ balance::operator()(Env& env) const value_.asset().value()); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/batch.cpp b/src/test/jtx/impl/batch.cpp index 126b7c4d75..d45f195b66 100644 --- a/src/test/jtx/impl/batch.cpp +++ b/src/test/jtx/impl/batch.cpp @@ -28,11 +28,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace batch { +namespace xrpl::test::jtx::batch { XRPAmount calcBatchFee(test::jtx::Env const& env, uint32_t const& numSigners, uint32_t const& txns) @@ -138,8 +134,4 @@ msig::operator()(Env& env, JTx& jt) const } } -} // namespace batch - -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::batch diff --git a/src/test/jtx/impl/check.cpp b/src/test/jtx/impl/check.cpp index 610fa48755..d03700e2c3 100644 --- a/src/test/jtx/impl/check.cpp +++ b/src/test/jtx/impl/check.cpp @@ -8,11 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace check { +namespace xrpl::test::jtx::check { // Cash a check requiring that a specific amount be delivered. Json::Value @@ -49,8 +45,4 @@ cancel(jtx::Account const& dest, uint256 const& checkId) return jv; } -} // namespace check - -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::check diff --git a/src/test/jtx/impl/creds.cpp b/src/test/jtx/impl/creds.cpp index 380ab7a2e9..4d38d6d88b 100644 --- a/src/test/jtx/impl/creds.cpp +++ b/src/test/jtx/impl/creds.cpp @@ -10,11 +10,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace credentials { +namespace xrpl::test::jtx::credentials { Json::Value create(jtx::Account const& subject, jtx::Account const& issuer, std::string_view credType) @@ -80,9 +76,4 @@ ledgerEntry(jtx::Env& env, std::string const& credIdx) return env.rpc("json", "ledger_entry", to_string(jvParams)); } -} // namespace credentials - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::credentials diff --git a/src/test/jtx/impl/delegate.cpp b/src/test/jtx/impl/delegate.cpp index a1e4a42639..e4e5e4ca96 100644 --- a/src/test/jtx/impl/delegate.cpp +++ b/src/test/jtx/impl/delegate.cpp @@ -11,11 +11,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace delegate { +namespace xrpl::test::jtx::delegate { Json::Value set(jtx::Account const& account, @@ -51,7 +47,4 @@ entry(jtx::Env& env, jtx::Account const& account, jtx::Account const& authorize) return env.rpc("json", "ledger_entry", to_string(jvParams)); } -} // namespace delegate -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::delegate diff --git a/src/test/jtx/impl/delivermin.cpp b/src/test/jtx/impl/delivermin.cpp index bdb3ce35fd..140f4d7c66 100644 --- a/src/test/jtx/impl/delivermin.cpp +++ b/src/test/jtx/impl/delivermin.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void deliver_min::operator()(Env& env, JTx& jt) const @@ -15,6 +13,4 @@ deliver_min::operator()(Env& env, JTx& jt) const jt.jv[jss::DeliverMin] = amount_.getJson(JsonOptions::none); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/deposit.cpp b/src/test/jtx/impl/deposit.cpp index c550719391..5e432b6aa8 100644 --- a/src/test/jtx/impl/deposit.cpp +++ b/src/test/jtx/impl/deposit.cpp @@ -9,11 +9,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace deposit { +namespace xrpl::test::jtx::deposit { // Add DepositPreauth. Json::Value @@ -73,8 +69,4 @@ unauthCredentials(jtx::Account const& account, std::vector return jv; } -} // namespace deposit - -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::deposit diff --git a/src/test/jtx/impl/dids.cpp b/src/test/jtx/impl/dids.cpp index 33cc10e895..9b3a08bbfa 100644 --- a/src/test/jtx/impl/dids.cpp +++ b/src/test/jtx/impl/dids.cpp @@ -7,12 +7,8 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - /** DID operations. */ -namespace did { +namespace xrpl::test::jtx::did { Json::Value set(jtx::Account const& account) @@ -42,9 +38,4 @@ del(jtx::Account const& account) return jv; } -} // namespace did - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::did diff --git a/src/test/jtx/impl/directory.cpp b/src/test/jtx/impl/directory.cpp index cc756aec46..ac4d81bdfb 100644 --- a/src/test/jtx/impl/directory.cpp +++ b/src/test/jtx/impl/directory.cpp @@ -18,10 +18,8 @@ #include #include -namespace xrpl::test::jtx { - /** Directory operations. */ -namespace directory { +namespace xrpl::test::jtx::directory { auto bumpLastPage( @@ -138,6 +136,4 @@ adjustOwnerNode(ApplyView& view, uint256 key, std::uint64_t page) return false; } -} // namespace directory - -} // namespace xrpl::test::jtx +} // namespace xrpl::test::jtx::directory diff --git a/src/test/jtx/impl/domain.cpp b/src/test/jtx/impl/domain.cpp index 8255159310..70d4daf002 100644 --- a/src/test/jtx/impl/domain.cpp +++ b/src/test/jtx/impl/domain.cpp @@ -6,9 +6,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void domain::operator()(Env&, JTx& jt) const @@ -16,6 +14,4 @@ domain::operator()(Env&, JTx& jt) const jt[sfDomainID.jsonName] = to_string(v_); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/envconfig.cpp b/src/test/jtx/impl/envconfig.cpp index 47e9d9e098..ae05e4f1dd 100644 --- a/src/test/jtx/impl/envconfig.cpp +++ b/src/test/jtx/impl/envconfig.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { std::atomic envUseIPv4{false}; @@ -209,5 +208,4 @@ makeConfig( } } // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/jtx/impl/escrow.cpp b/src/test/jtx/impl/escrow.cpp index e5509fe8c5..3d5d1e2bac 100644 --- a/src/test/jtx/impl/escrow.cpp +++ b/src/test/jtx/impl/escrow.cpp @@ -14,12 +14,8 @@ #include -namespace xrpl { -namespace test { -namespace jtx { - /** Escrow operations. */ -namespace escrow { +namespace xrpl::test::jtx::escrow { Json::Value create(AccountID const& account, AccountID const& to, STAmount const& amount) @@ -66,9 +62,4 @@ rate(Env& env, Account const& account, std::uint32_t const& seq) return Rate{0}; } -} // namespace escrow - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::escrow diff --git a/src/test/jtx/impl/fee.cpp b/src/test/jtx/impl/fee.cpp index 76acf16d64..edc3b5adf9 100644 --- a/src/test/jtx/impl/fee.cpp +++ b/src/test/jtx/impl/fee.cpp @@ -7,9 +7,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void fee::operator()(Env& env, JTx& jt) const @@ -28,6 +26,4 @@ fee::operator()(Env& env, JTx& jt) const } } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/flags.cpp b/src/test/jtx/impl/flags.cpp index cb4f89a38f..3caa2ece17 100644 --- a/src/test/jtx/impl/flags.cpp +++ b/src/test/jtx/impl/flags.cpp @@ -9,9 +9,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value fset(Account const& account, std::uint32_t on, std::uint32_t off) @@ -62,6 +60,4 @@ nflags::operator()(Env& env) const } } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/invoice_id.cpp b/src/test/jtx/impl/invoice_id.cpp index b0c18d573e..ce3eb783ac 100644 --- a/src/test/jtx/impl/invoice_id.cpp +++ b/src/test/jtx/impl/invoice_id.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void invoice_id::operator()(Env&, JTx& jt) const @@ -16,6 +14,4 @@ invoice_id::operator()(Env&, JTx& jt) const jt["InvoiceID"] = strHex(hash_); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/jtx_json.cpp b/src/test/jtx/impl/jtx_json.cpp index e60e3d1b6d..0360dba351 100644 --- a/src/test/jtx/impl/jtx_json.cpp +++ b/src/test/jtx/impl/jtx_json.cpp @@ -11,9 +11,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { json::json(std::string const& s) { @@ -37,6 +35,4 @@ json::operator()(Env&, JTx& jt) const jv[iter.key().asString()] = *iter; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/last_ledger_sequence.cpp b/src/test/jtx/impl/last_ledger_sequence.cpp index 94fb128a08..dc4bae6212 100644 --- a/src/test/jtx/impl/last_ledger_sequence.cpp +++ b/src/test/jtx/impl/last_ledger_sequence.cpp @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void last_ledger_seq::operator()(Env&, JTx& jt) const @@ -13,6 +11,4 @@ last_ledger_seq::operator()(Env&, JTx& jt) const jt["LastLedgerSequence"] = num_; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/ledgerStateFixes.cpp b/src/test/jtx/impl/ledgerStateFixes.cpp index def48d8bd8..99cd03cbb6 100644 --- a/src/test/jtx/impl/ledgerStateFixes.cpp +++ b/src/test/jtx/impl/ledgerStateFixes.cpp @@ -6,11 +6,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace ledgerStateFix { +namespace xrpl::test::jtx::ledgerStateFix { // Fix NFTokenPage links on owner's account. acct pays fee. Json::Value @@ -24,8 +20,4 @@ nftPageLinks(jtx::Account const& acct, jtx::Account const& owner) return jv; } -} // namespace ledgerStateFix - -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::ledgerStateFix diff --git a/src/test/jtx/impl/memo.cpp b/src/test/jtx/impl/memo.cpp index 842cdcfb2e..f092f48d70 100644 --- a/src/test/jtx/impl/memo.cpp +++ b/src/test/jtx/impl/memo.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void memo::operator()(Env&, JTx& jt) const @@ -51,6 +49,4 @@ memo_type::operator()(Env&, JTx& jt) const m["MemoType"] = strHex(s_); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/mpt.cpp b/src/test/jtx/impl/mpt.cpp index 55d73dfcca..e2fd95144c 100644 --- a/src/test/jtx/impl/mpt.cpp +++ b/src/test/jtx/impl/mpt.cpp @@ -34,12 +34,11 @@ #include #include #include +#include #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void mptflags::operator()(Env& env) const @@ -72,8 +71,8 @@ MPTTester::makeHolders(std::vector const& holders) return accounts; } -MPTTester::MPTTester(Env& env, Account const& issuer, MPTInit const& arg) - : env_(env), issuer_(issuer), holders_(makeHolders(arg.holders)), close_(arg.close) +MPTTester::MPTTester(Env& env, Account issuer, MPTInit const& arg) + : env_(env), issuer_(std::move(issuer)), holders_(makeHolders(arg.holders)), close_(arg.close) { if (arg.fund) { @@ -99,11 +98,11 @@ MPTTester::MPTTester(Env& env, Account const& issuer, MPTInit const& arg) MPTTester::MPTTester( Env& env, - Account const& issuer, + Account issuer, MPTID const& id, std::vector const& holders, bool close) - : env_(env), issuer_(issuer), holders_(makeHolders(holders)), id_(id), close_(close) + : env_(env), issuer_(std::move(issuer)), holders_(makeHolders(holders)), id_(id), close_(close) { } @@ -698,6 +697,4 @@ MPTTester::operator()(std::int64_t amount) const return MPT("", issuanceID())(amount); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/multisign.cpp b/src/test/jtx/impl/multisign.cpp index 192e0d5a5f..e21a3621be 100644 --- a/src/test/jtx/impl/multisign.cpp +++ b/src/test/jtx/impl/multisign.cpp @@ -25,9 +25,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value signers(Account const& account, std::uint32_t quorum, std::vector const& v) @@ -111,6 +109,4 @@ msig::operator()(Env& env, JTx& jt) const } } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/offer.cpp b/src/test/jtx/impl/offer.cpp index f2fc6c2764..abb777484a 100644 --- a/src/test/jtx/impl/offer.cpp +++ b/src/test/jtx/impl/offer.cpp @@ -8,9 +8,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value offer( @@ -39,6 +37,4 @@ offer_cancel(Account const& account, std::uint32_t offerSeq) return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/owners.cpp b/src/test/jtx/impl/owners.cpp index 9099099d49..fde456f3ab 100644 --- a/src/test/jtx/impl/owners.cpp +++ b/src/test/jtx/impl/owners.cpp @@ -38,8 +38,7 @@ owned_count_helper( } // namespace detail -namespace test { -namespace jtx { +namespace test::jtx { void owners::operator()(Env& env) const @@ -47,6 +46,6 @@ owners::operator()(Env& env) const env.test.expect(env.le(account_)->getFieldU32(sfOwnerCount) == value_); } -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/impl/paths.cpp b/src/test/jtx/impl/paths.cpp index 5231ed9a37..f508d0d3b6 100644 --- a/src/test/jtx/impl/paths.cpp +++ b/src/test/jtx/impl/paths.cpp @@ -20,9 +20,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void paths::operator()(Env& env, JTx& jt) const @@ -118,6 +116,4 @@ path::operator()(Env& env, JTx& jt) const jt.jv["Paths"].append(jv_); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/pay.cpp b/src/test/jtx/impl/pay.cpp index bc8515bf0f..34b6b13d86 100644 --- a/src/test/jtx/impl/pay.cpp +++ b/src/test/jtx/impl/pay.cpp @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value pay(AccountID const& account, AccountID const& to, AnyAmount amount) @@ -30,6 +28,4 @@ pay(Account const& account, Account const& to, AnyAmount amount) return pay(account.id(), to.id(), amount); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/permissioned_dex.cpp b/src/test/jtx/impl/permissioned_dex.cpp index d8c200fe99..012932fed5 100644 --- a/src/test/jtx/impl/permissioned_dex.cpp +++ b/src/test/jtx/impl/permissioned_dex.cpp @@ -13,9 +13,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { uint256 setupDomain( @@ -69,6 +67,4 @@ PermissionedDEX::PermissionedDEX(Env& env) } } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/permissioned_domains.cpp b/src/test/jtx/impl/permissioned_domains.cpp index 178deee4a7..ff3146e67a 100644 --- a/src/test/jtx/impl/permissioned_domains.cpp +++ b/src/test/jtx/impl/permissioned_domains.cpp @@ -22,10 +22,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace pdomain { +namespace xrpl::test::jtx::pdomain { // helpers // Make json for PermissionedDomainSet transaction @@ -171,7 +168,4 @@ getNewDomain(std::shared_ptr const& meta) return ret; } -} // namespace pdomain -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::pdomain diff --git a/src/test/jtx/impl/quality2.cpp b/src/test/jtx/impl/quality2.cpp index 51b1de4083..32aca1b1cd 100644 --- a/src/test/jtx/impl/quality2.cpp +++ b/src/test/jtx/impl/quality2.cpp @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { qualityInPercent::qualityInPercent(double percent) // NOLINTNEXTLINE(cppcoreguidelines-use-default-member-init) @@ -56,6 +54,4 @@ qualityOutPercent::operator()(Env&, JTx& jt) const insertQualityIntoJtx(sfQualityOut, qOut_, jt); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/rate.cpp b/src/test/jtx/impl/rate.cpp index b9c848a4a4..dab02b33c4 100644 --- a/src/test/jtx/impl/rate.cpp +++ b/src/test/jtx/impl/rate.cpp @@ -9,9 +9,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value rate(Account const& account, double multiplier) @@ -25,6 +23,4 @@ rate(Account const& account, double multiplier) return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/regkey.cpp b/src/test/jtx/impl/regkey.cpp index 5c1a43f122..2f4c1bccdd 100644 --- a/src/test/jtx/impl/regkey.cpp +++ b/src/test/jtx/impl/regkey.cpp @@ -7,9 +7,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value regkey(Account const& account, disabled_t) @@ -30,6 +28,4 @@ regkey(Account const& account, Account const& signer) return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/sendmax.cpp b/src/test/jtx/impl/sendmax.cpp index 94d8341910..c33cab79fa 100644 --- a/src/test/jtx/impl/sendmax.cpp +++ b/src/test/jtx/impl/sendmax.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void sendmax::operator()(Env& env, JTx& jt) const @@ -15,6 +13,4 @@ sendmax::operator()(Env& env, JTx& jt) const jt.jv[jss::SendMax] = amount_.getJson(JsonOptions::none); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/seq.cpp b/src/test/jtx/impl/seq.cpp index 26a9bc0a2a..cab970974b 100644 --- a/src/test/jtx/impl/seq.cpp +++ b/src/test/jtx/impl/seq.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void seq::operator()(Env&, JTx& jt) const @@ -19,6 +17,4 @@ seq::operator()(Env&, JTx& jt) const jt[jss::Sequence] = *num_; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/sig.cpp b/src/test/jtx/impl/sig.cpp index e50f7a731b..fe246f8f90 100644 --- a/src/test/jtx/impl/sig.cpp +++ b/src/test/jtx/impl/sig.cpp @@ -4,9 +4,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void sig::operator()(Env&, JTx& jt) const @@ -36,6 +34,4 @@ sig::operator()(Env&, JTx& jt) const } } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/tag.cpp b/src/test/jtx/impl/tag.cpp index aa738e4009..9c1dab724c 100644 --- a/src/test/jtx/impl/tag.cpp +++ b/src/test/jtx/impl/tag.cpp @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void dtag::operator()(Env&, JTx& jt) const @@ -19,6 +17,4 @@ stag::operator()(Env&, JTx& jt) const jt.jv["SourceTag"] = value_; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/ticket.cpp b/src/test/jtx/impl/ticket.cpp index 1f41ccb768..f0975e6151 100644 --- a/src/test/jtx/impl/ticket.cpp +++ b/src/test/jtx/impl/ticket.cpp @@ -10,11 +10,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace ticket { +namespace xrpl::test::jtx::ticket { Json::Value create(Account const& account, std::uint32_t count) @@ -34,8 +30,4 @@ use::operator()(Env&, JTx& jt) const jt[sfTicketSequence.jsonName] = ticketSeq_; } -} // namespace ticket - -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::ticket diff --git a/src/test/jtx/impl/token.cpp b/src/test/jtx/impl/token.cpp index 0c315be85a..c3779c3c56 100644 --- a/src/test/jtx/impl/token.cpp +++ b/src/test/jtx/impl/token.cpp @@ -17,10 +17,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace token { +namespace xrpl::test::jtx::token { Json::Value mint(jtx::Account const& account, std::uint32_t nfTokenTaxon) @@ -222,7 +219,4 @@ modify(jtx::Account const& account, uint256 const& nftokenID) return jv; } -} // namespace token -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::token diff --git a/src/test/jtx/impl/trust.cpp b/src/test/jtx/impl/trust.cpp index ab99b4a19f..5450e0892d 100644 --- a/src/test/jtx/impl/trust.cpp +++ b/src/test/jtx/impl/trust.cpp @@ -12,9 +12,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { Json::Value trust(Account const& account, STAmount const& amount, std::uint32_t flags) @@ -63,6 +61,4 @@ claw(Account const& account, STAmount const& amount, std::optional cons return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/txflags.cpp b/src/test/jtx/impl/txflags.cpp index 1735803b49..686be767fe 100644 --- a/src/test/jtx/impl/txflags.cpp +++ b/src/test/jtx/impl/txflags.cpp @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { void txflags::operator()(Env&, JTx& jt) const @@ -15,6 +13,4 @@ txflags::operator()(Env&, JTx& jt) const jt[jss::Flags] = v_ /*| tfFullyCanonicalSig*/; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/utility.cpp b/src/test/jtx/impl/utility.cpp index 2b967ad654..4bb6c83b88 100644 --- a/src/test/jtx/impl/utility.cpp +++ b/src/test/jtx/impl/utility.cpp @@ -24,9 +24,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { STObject parse(Json::Value const& jv) @@ -103,6 +101,4 @@ cmdToJSONRPC(std::vector const& args, beast::Journal j, unsigned in return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/vault.cpp b/src/test/jtx/impl/vault.cpp index 73f8178561..5f4b488092 100644 --- a/src/test/jtx/impl/vault.cpp +++ b/src/test/jtx/impl/vault.cpp @@ -14,9 +14,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { std::tuple Vault::create(CreateArgs const& args) const @@ -86,6 +84,4 @@ Vault::clawback(ClawbackArgs const& args) return jv; } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/impl/xchain_bridge.cpp b/src/test/jtx/impl/xchain_bridge.cpp index 75bf02127b..2cf1c305a7 100644 --- a/src/test/jtx/impl/xchain_bridge.cpp +++ b/src/test/jtx/impl/xchain_bridge.cpp @@ -25,9 +25,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { // use this for creating a bridge for a transaction Json::Value @@ -481,6 +479,4 @@ XChainBridgeObjects::createBridgeObjects(Env& mcEnv, Env& scEnv) createMcBridgeObjects(mcEnv); createScBridgeObjects(scEnv); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/invoice_id.h b/src/test/jtx/invoice_id.h index fd1b7ae45b..9366cc9bf5 100644 --- a/src/test/jtx/invoice_id.h +++ b/src/test/jtx/invoice_id.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { struct invoice_id { @@ -19,6 +17,4 @@ public: void operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/jtx_json.h b/src/test/jtx/jtx_json.h index c7f52fe283..0bd7c2ff94 100644 --- a/src/test/jtx/jtx_json.h +++ b/src/test/jtx/jtx_json.h @@ -4,9 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Inject raw JSON. */ class json @@ -37,6 +35,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/last_ledger_sequence.h b/src/test/jtx/last_ledger_sequence.h index 540d6ff384..9015c87f02 100644 --- a/src/test/jtx/last_ledger_sequence.h +++ b/src/test/jtx/last_ledger_sequence.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { struct last_ledger_seq { @@ -20,6 +18,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/ledgerStateFix.h b/src/test/jtx/ledgerStateFix.h index 7adc863cb4..8735882d15 100644 --- a/src/test/jtx/ledgerStateFix.h +++ b/src/test/jtx/ledgerStateFix.h @@ -3,20 +3,11 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { - /** LedgerStateFix operations. */ -namespace ledgerStateFix { +namespace xrpl::test::jtx::ledgerStateFix { /** Repair the links in an NFToken directory. */ Json::Value nftPageLinks(jtx::Account const& acct, jtx::Account const& owner); -} // namespace ledgerStateFix - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::ledgerStateFix diff --git a/src/test/jtx/memo.h b/src/test/jtx/memo.h index 2371490b30..8cb41b3f1c 100644 --- a/src/test/jtx/memo.h +++ b/src/test/jtx/memo.h @@ -2,9 +2,9 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +#include + +namespace xrpl::test::jtx { /** Add a memo to a JTx. @@ -19,8 +19,8 @@ private: std::string type_; public: - memo(std::string const& data, std::string const& format, std::string const& type) - : data_(data), format_(format), type_(type) + memo(std::string data, std::string format, std::string type) + : data_(std::move(data)), format_(std::move(format)), type_(std::move(type)) { } @@ -34,7 +34,7 @@ private: std::string s_; public: - memo_data(std::string const& s) : s_(s) + memo_data(std::string s) : s_(std::move(s)) { } @@ -48,7 +48,7 @@ private: std::string s_; public: - memo_format(std::string const& s) : s_(s) + memo_format(std::string s) : s_(std::move(s)) { } @@ -62,7 +62,7 @@ private: std::string s_; public: - memo_type(std::string const& s) : s_(s) + memo_type(std::string s) : s_(std::move(s)) { } @@ -70,6 +70,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/mpt.h b/src/test/jtx/mpt.h index d058d11c0e..20b8f03762 100644 --- a/src/test/jtx/mpt.h +++ b/src/test/jtx/mpt.h @@ -9,9 +9,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class MPTTester; @@ -169,11 +167,11 @@ class MPTTester bool close_; public: - MPTTester(Env& env, Account const& issuer, MPTInit const& constr = {}); + MPTTester(Env& env, Account issuer, MPTInit const& constr = {}); MPTTester(MPTInitDef const& constr); MPTTester( Env& env, - Account const& issuer, + Account issuer, MPTID const& id, std::vector const& holders = {}, bool close = true); @@ -313,6 +311,4 @@ private: getFlags(std::optional const& holder) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/multisign.h b/src/test/jtx/multisign.h index b3f38cc453..5b6a18b527 100644 --- a/src/test/jtx/multisign.h +++ b/src/test/jtx/multisign.h @@ -10,9 +10,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** A signer in a SignerList */ struct signer @@ -100,6 +98,4 @@ public: /** The number of signer lists matches. */ using siglists = owner_count; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/noop.h b/src/test/jtx/noop.h index 47d12fb9af..29c6188386 100644 --- a/src/test/jtx/noop.h +++ b/src/test/jtx/noop.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** The null transaction. */ inline Json::Value @@ -13,6 +11,4 @@ noop(Account const& account) return fset(account, 0); } -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/offer.h b/src/test/jtx/offer.h index 0fad9ec6dc..5f81db751f 100644 --- a/src/test/jtx/offer.h +++ b/src/test/jtx/offer.h @@ -5,9 +5,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Create an offer. */ Json::Value @@ -21,6 +19,4 @@ offer( Json::Value offer_cancel(Account const& account, std::uint32_t offerSeq); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/owners.h b/src/test/jtx/owners.h index b24f0a686f..572b63757c 100644 --- a/src/test/jtx/owners.h +++ b/src/test/jtx/owners.h @@ -7,6 +7,7 @@ #include #include +#include namespace xrpl { @@ -24,8 +25,7 @@ owned_count_helper( } // namespace detail -namespace test { -namespace jtx { +namespace test::jtx { // Helper for aliases template @@ -36,7 +36,7 @@ private: std::uint32_t value_; public: - owner_count(Account const& account, std::uint32_t value) : account_(account), value_(value) + owner_count(Account account, std::uint32_t value) : account_(std::move(account)), value_(value) { } @@ -55,7 +55,7 @@ private: std::uint32_t value_; public: - owners(Account const& account, std::uint32_t value) : account_(account), value_(value) + owners(Account account, std::uint32_t value) : account_(std::move(account)), value_(value) { } @@ -72,6 +72,6 @@ using offers = owner_count; /** Match the number of MPToken in the account's owner directory */ using mptokens = owner_count; -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/paths.h b/src/test/jtx/paths.h index 8558b6232b..f63faa6292 100644 --- a/src/test/jtx/paths.h +++ b/src/test/jtx/paths.h @@ -8,8 +8,8 @@ namespace xrpl { class STPath; -namespace test { -namespace jtx { + +namespace test::jtx { /** Set Paths, SendMax on a JTx. */ class paths @@ -62,7 +62,7 @@ private: append_one(AccountID const& account); template - std::enable_if_t::value> + std::enable_if_t> append_one(T const& t) { append_one(Account{t}); @@ -94,6 +94,6 @@ path::append(T const& t, Args const&... args) append(args...); } -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/pay.h b/src/test/jtx/pay.h index a155d7bdc8..093920a970 100644 --- a/src/test/jtx/pay.h +++ b/src/test/jtx/pay.h @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Create a payment. */ Json::Value @@ -15,6 +13,4 @@ pay(AccountID const& account, AccountID const& to, AnyAmount amount); Json::Value pay(Account const& account, Account const& to, AnyAmount amount); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/permissioned_dex.h b/src/test/jtx/permissioned_dex.h index 2023342ded..025097116f 100644 --- a/src/test/jtx/permissioned_dex.h +++ b/src/test/jtx/permissioned_dex.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { uint256 setupDomain( @@ -29,6 +27,4 @@ public: PermissionedDEX(Env& env); }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/permissioned_domains.h b/src/test/jtx/permissioned_domains.h index bf67722c9c..a582b001b1 100644 --- a/src/test/jtx/permissioned_domains.h +++ b/src/test/jtx/permissioned_domains.h @@ -4,10 +4,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace pdomain { +namespace xrpl::test::jtx::pdomain { // Helpers for PermissionedDomains testing using Credential = xrpl::test::jtx::deposit::AuthorizeCredentials; @@ -47,7 +44,4 @@ sortCredentials(Credentials const& input); uint256 getNewDomain(std::shared_ptr const& meta); -} // namespace pdomain -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::pdomain diff --git a/src/test/jtx/prop.h b/src/test/jtx/prop.h index b1f8cb5ffc..5651ac58ce 100644 --- a/src/test/jtx/prop.h +++ b/src/test/jtx/prop.h @@ -4,9 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set a property on a JTx. */ template @@ -26,6 +24,4 @@ struct prop } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/quality.h b/src/test/jtx/quality.h index 2da83eeef5..adb198038a 100644 --- a/src/test/jtx/quality.h +++ b/src/test/jtx/quality.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Sets the literal QualityIn on a trust JTx. */ class qualityIn @@ -62,6 +60,4 @@ public: operator()(Env&, JTx& jtx) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/rate.h b/src/test/jtx/rate.h index a92bd2364a..740c2ffd1a 100644 --- a/src/test/jtx/rate.h +++ b/src/test/jtx/rate.h @@ -4,14 +4,10 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set a transfer rate. */ Json::Value rate(Account const& account, double multiplier); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/regkey.h b/src/test/jtx/regkey.h index 2c95baacc3..3da055c66f 100644 --- a/src/test/jtx/regkey.h +++ b/src/test/jtx/regkey.h @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Disable the regular key. */ Json::Value @@ -17,6 +15,4 @@ regkey(Account const& account, disabled_t); Json::Value regkey(Account const& account, Account const& signer); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/require.h b/src/test/jtx/require.h index 7d712e8ab7..20f79ff838 100644 --- a/src/test/jtx/require.h +++ b/src/test/jtx/require.h @@ -20,8 +20,7 @@ require_args(test::jtx::requires_t& vec, Cond const& cond, Args const&... args) } // namespace detail -namespace test { -namespace jtx { +namespace test::jtx { /** Compose many condition functors into one */ template @@ -60,6 +59,6 @@ public: } }; -} // namespace jtx -} // namespace test +} // namespace test::jtx + } // namespace xrpl diff --git a/src/test/jtx/requires.h b/src/test/jtx/requires.h index 2411d040c6..d41d0cd0b0 100644 --- a/src/test/jtx/requires.h +++ b/src/test/jtx/requires.h @@ -3,15 +3,11 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class Env; using require_t = std::function; using requires_t = std::vector; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/rpc.h b/src/test/jtx/rpc.h index bbdecf1519..be7ab8d456 100644 --- a/src/test/jtx/rpc.h +++ b/src/test/jtx/rpc.h @@ -3,10 +3,9 @@ #include #include +#include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the expected result code for a JTx The test will fail if the code doesn't match. @@ -22,13 +21,13 @@ private: public: /// If there's an error code, we expect an error message explicit rpc(error_code_i code, std::optional m = {}) - : code_(code), errorMessage_(m) + : code_(code), errorMessage_(std::move(m)) { } /// If there is not a code, we expect an exception message explicit rpc(std::string error, std::optional exceptionMessage = {}) - : error_(error), errorException_(exceptionMessage) + : error_(error), errorException_(std::move(exceptionMessage)) { } @@ -56,6 +55,4 @@ public: } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/sendmax.h b/src/test/jtx/sendmax.h index 8a471be3cd..e559a87641 100644 --- a/src/test/jtx/sendmax.h +++ b/src/test/jtx/sendmax.h @@ -4,9 +4,9 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +#include + +namespace xrpl::test::jtx { /** Sets the SendMax on a JTx. */ class sendmax @@ -15,7 +15,7 @@ private: STAmount amount_; public: - sendmax(STAmount const& amount) : amount_(amount) + sendmax(STAmount amount) : amount_(std::move(amount)) { } @@ -23,6 +23,4 @@ public: operator()(Env&, JTx& jtx) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/seq.h b/src/test/jtx/seq.h index b861800ac9..ea5ccfa259 100644 --- a/src/test/jtx/seq.h +++ b/src/test/jtx/seq.h @@ -5,9 +5,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the sequence number on a JTx. */ struct seq @@ -33,6 +31,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/sig.h b/src/test/jtx/sig.h index 0ed59de50e..e23022b4b5 100644 --- a/src/test/jtx/sig.h +++ b/src/test/jtx/sig.h @@ -4,9 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the regular signature on a JTx. @note For multisign, use msig. @@ -56,6 +54,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/tag.h b/src/test/jtx/tag.h index c8d5723754..c11dff2550 100644 --- a/src/test/jtx/tag.h +++ b/src/test/jtx/tag.h @@ -2,10 +2,7 @@ #include -namespace xrpl { -namespace test { - -namespace jtx { +namespace xrpl::test::jtx { /** Set the destination tag on a JTx*/ struct dtag @@ -37,7 +34,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/tags.h b/src/test/jtx/tags.h index c8a6170048..9c7a21145d 100644 --- a/src/test/jtx/tags.h +++ b/src/test/jtx/tags.h @@ -1,45 +1,31 @@ #pragma once -namespace xrpl { -namespace test { - -namespace jtx { +namespace xrpl::test::jtx { struct none_t { - none_t() - { - } + none_t() = default; }; static none_t const none; struct autofill_t { - autofill_t() - { - } + autofill_t() = default; }; static autofill_t const autofill; struct disabled_t { - disabled_t() - { - } + disabled_t() = default; }; static disabled_t const disabled; /** Used for fee() calls that use an owner reserve increment */ struct increment_t { - increment_t() - { - } + increment_t() = default; }; static increment_t const increment; -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/ter.h b/src/test/jtx/ter.h index 074ba307cb..ab21bc8e2b 100644 --- a/src/test/jtx/ter.h +++ b/src/test/jtx/ter.h @@ -4,9 +4,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the expected result code for a JTx The test will fail if the code doesn't match. @@ -32,6 +30,4 @@ public: } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/ticket.h b/src/test/jtx/ticket.h index dca16ac7c6..7ab3b9c1f9 100644 --- a/src/test/jtx/ticket.h +++ b/src/test/jtx/ticket.h @@ -6,9 +6,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /* This shows how the jtx system may be extended to other @@ -43,7 +41,4 @@ public: /** Match the number of tickets on the account. */ using tickets = owner_count; -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/token.h b/src/test/jtx/token.h index 3f4a3f75a3..28ccd7520b 100644 --- a/src/test/jtx/token.h +++ b/src/test/jtx/token.h @@ -8,11 +8,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { - -namespace token { +namespace xrpl::test::jtx::token { /** Mint an NFToken. */ Json::Value @@ -214,9 +210,4 @@ clearMinter(jtx::Account const& account); Json::Value modify(jtx::Account const& account, uint256 const& nftokenID); -} // namespace token - -} // namespace jtx - -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::token diff --git a/src/test/jtx/trust.h b/src/test/jtx/trust.h index afea256382..f6fb5b388f 100644 --- a/src/test/jtx/trust.h +++ b/src/test/jtx/trust.h @@ -5,9 +5,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Modify a trust line. */ Json::Value @@ -23,6 +21,4 @@ claw( STAmount const& amount, std::optional const& mptHolder = std::nullopt); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/txflags.h b/src/test/jtx/txflags.h index f51c26d035..838f7f5f30 100644 --- a/src/test/jtx/txflags.h +++ b/src/test/jtx/txflags.h @@ -2,9 +2,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Set the flags on a JTx. */ class txflags @@ -21,6 +19,4 @@ public: operator()(Env&, JTx& jt) const; }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/utility.h b/src/test/jtx/utility.h index c9189efc36..b00f5b433e 100644 --- a/src/test/jtx/utility.h +++ b/src/test/jtx/utility.h @@ -8,9 +8,7 @@ #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { /** Thrown when parse fails. */ struct parse_error : std::logic_error @@ -53,6 +51,4 @@ fill_seq(Json::Value& jv, ReadView const& view); Json::Value cmdToJSONRPC(std::vector const& args, beast::Journal j, unsigned int apiVersion); -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/vault.h b/src/test/jtx/vault.h index 8a21503be2..bbd8c129cc 100644 --- a/src/test/jtx/vault.h +++ b/src/test/jtx/vault.h @@ -11,9 +11,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { class Env; @@ -83,6 +81,4 @@ struct Vault clawback(ClawbackArgs const& args); }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/jtx/xchain_bridge.h b/src/test/jtx/xchain_bridge.h index 9359b3fdde..bb01bf17ba 100644 --- a/src/test/jtx/xchain_bridge.h +++ b/src/test/jtx/xchain_bridge.h @@ -8,9 +8,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { +namespace xrpl::test::jtx { using JValueVec = std::vector; @@ -231,6 +229,4 @@ struct XChainBridgeObjects } }; -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx diff --git a/src/test/ledger/BookDirs_test.cpp b/src/test/ledger/BookDirs_test.cpp index 71a3b67a7c..efd1688c6f 100644 --- a/src/test/ledger/BookDirs_test.cpp +++ b/src/test/ledger/BookDirs_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct BookDirs_test : public beast::unit_test::suite { @@ -100,5 +99,4 @@ struct BookDirs_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(BookDirs, ledger, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/ledger/Directory_test.cpp b/src/test/ledger/Directory_test.cpp index 52641a6741..f14ce2f0d7 100644 --- a/src/test/ledger/Directory_test.cpp +++ b/src/test/ledger/Directory_test.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct Directory_test : public beast::unit_test::suite { @@ -134,7 +133,7 @@ struct Directory_test : public beast::unit_test::suite // Ensure that the entries in the page are sorted auto const& v = p->getFieldV256(sfIndexes); - BEAST_EXPECT(std::is_sorted(v.begin(), v.end())); + BEAST_EXPECT(std::ranges::is_sorted(v)); // Ensure that the page contains the correct orders by // calculating which sequence numbers belong here. @@ -600,5 +599,4 @@ struct Directory_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE_PRIO(Directory, ledger, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/ledger/PaymentSandbox_test.cpp b/src/test/ledger/PaymentSandbox_test.cpp index 99f7913cf7..0dc2cb6e74 100644 --- a/src/test/ledger/PaymentSandbox_test.cpp +++ b/src/test/ledger/PaymentSandbox_test.cpp @@ -28,8 +28,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class PaymentSandbox_test : public beast::unit_test::suite { @@ -398,5 +397,4 @@ public: BEAST_DEFINE_TESTSUITE(PaymentSandbox, ledger, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/ledger/PendingSaves_test.cpp b/src/test/ledger/PendingSaves_test.cpp index 55ea3b7aac..deca50c9be 100644 --- a/src/test/ledger/PendingSaves_test.cpp +++ b/src/test/ledger/PendingSaves_test.cpp @@ -1,8 +1,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct PendingSaves_test : public beast::unit_test::suite { @@ -41,5 +40,4 @@ struct PendingSaves_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(PendingSaves, ledger, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/ledger/SkipList_test.cpp b/src/test/ledger/SkipList_test.cpp index 5009043462..33f6f505f1 100644 --- a/src/test/ledger/SkipList_test.cpp +++ b/src/test/ledger/SkipList_test.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class SkipList_test : public beast::unit_test::suite { @@ -81,5 +80,4 @@ class SkipList_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(SkipList, ledger, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/ledger/View_test.cpp b/src/test/ledger/View_test.cpp index 2dc30427d3..cf2e478889 100644 --- a/src/test/ledger/View_test.cpp +++ b/src/test/ledger/View_test.cpp @@ -49,8 +49,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class View_test : public beast::unit_test::suite { @@ -1084,5 +1083,4 @@ class GetAmendments_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(View, ledger, xrpl); BEAST_DEFINE_TESTSUITE(GetAmendments, ledger, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/nodestore/Backend_test.cpp b/src/test/nodestore/Backend_test.cpp index 931044c738..0bba847c30 100644 --- a/src/test/nodestore/Backend_test.cpp +++ b/src/test/nodestore/Backend_test.cpp @@ -16,9 +16,7 @@ #include #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { // Tests the Backend interface // @@ -80,8 +78,8 @@ public: Batch copy; fetchCopyOfBatch(*backend, ©, batch); // Canonicalize the source and destination batches - std::sort(batch.begin(), batch.end(), LessThan{}); - std::sort(copy.begin(), copy.end(), LessThan{}); + std::ranges::sort(batch, LessThan{}); + std::ranges::sort(copy, LessThan{}); BEAST_EXPECT(areBatchesEqual(batch, copy)); } } @@ -107,5 +105,4 @@ public: BEAST_DEFINE_TESTSUITE(Backend, nodestore, xrpl); -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/Basics_test.cpp b/src/test/nodestore/Basics_test.cpp index cbce3c6a78..f31111eed5 100644 --- a/src/test/nodestore/Basics_test.cpp +++ b/src/test/nodestore/Basics_test.cpp @@ -8,8 +8,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { // Tests predictable batches, and NodeObject blob encoding // @@ -71,5 +70,4 @@ public: BEAST_DEFINE_TESTSUITE(NodeStoreBasic, nodestore, xrpl); -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/Database_test.cpp b/src/test/nodestore/Database_test.cpp index 99f6f6c59a..684347c6cc 100644 --- a/src/test/nodestore/Database_test.cpp +++ b/src/test/nodestore/Database_test.cpp @@ -26,9 +26,7 @@ #include #include -namespace xrpl { - -namespace NodeStore { +namespace xrpl::NodeStore { class Database_test : public TestBase { @@ -573,8 +571,8 @@ public: } // Canonicalize the source and destination batches - std::sort(batch.begin(), batch.end(), LessThan{}); - std::sort(copy.begin(), copy.end(), LessThan{}); + std::ranges::sort(batch, LessThan{}); + std::ranges::sort(copy, LessThan{}); BEAST_EXPECT(areBatchesEqual(batch, copy)); } @@ -638,8 +636,8 @@ public: fetchCopyOfBatch(*db, ©, batch); // Canonicalize the source and destination batches - std::sort(batch.begin(), batch.end(), LessThan{}); - std::sort(copy.begin(), copy.end(), LessThan{}); + std::ranges::sort(batch, LessThan{}); + std::ranges::sort(copy, LessThan{}); BEAST_EXPECT(areBatchesEqual(batch, copy)); } @@ -726,5 +724,4 @@ public: BEAST_DEFINE_TESTSUITE(Database, nodestore, xrpl); -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/NuDBFactory_test.cpp b/src/test/nodestore/NuDBFactory_test.cpp index 759393ced3..0755708cee 100644 --- a/src/test/nodestore/NuDBFactory_test.cpp +++ b/src/test/nodestore/NuDBFactory_test.cpp @@ -19,8 +19,7 @@ #include #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { class NuDBFactory_test : public TestBase { @@ -447,5 +446,4 @@ public: BEAST_DEFINE_TESTSUITE(NuDBFactory, xrpl_core, xrpl); -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/TestBase.h b/src/test/nodestore/TestBase.h index 13e5b4beba..e527942629 100644 --- a/src/test/nodestore/TestBase.h +++ b/src/test/nodestore/TestBase.h @@ -13,8 +13,7 @@ #include -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { /** Binary function that satisfies the strict-weak-ordering requirement. @@ -196,5 +195,4 @@ public: } }; -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/Timing_test.cpp b/src/test/nodestore/Timing_test.cpp index abf14f3edc..cc9881dbac 100644 --- a/src/test/nodestore/Timing_test.cpp +++ b/src/test/nodestore/Timing_test.cpp @@ -43,8 +43,7 @@ #define NODESTORE_TIMING_DO_VERIFY 0 #endif -namespace xrpl { -namespace NodeStore { +namespace xrpl::NodeStore { std::unique_ptr make_Backend(Section const& config, Scheduler& scheduler, beast::Journal journal) @@ -729,5 +728,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Timing, nodestore, xrpl, 1); -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore diff --git a/src/test/nodestore/varint_test.cpp b/src/test/nodestore/varint_test.cpp index 54cbb4b890..b97b31f1fe 100644 --- a/src/test/nodestore/varint_test.cpp +++ b/src/test/nodestore/varint_test.cpp @@ -6,9 +6,7 @@ #include #include -namespace xrpl { -namespace NodeStore { -namespace tests { +namespace xrpl::NodeStore::tests { class varint_test : public beast::unit_test::suite { @@ -56,6 +54,4 @@ public: BEAST_DEFINE_TESTSUITE(varint, nodestore, xrpl); -} // namespace tests -} // namespace NodeStore -} // namespace xrpl +} // namespace xrpl::NodeStore::tests diff --git a/src/test/overlay/TMGetObjectByHash_test.cpp b/src/test/overlay/TMGetObjectByHash_test.cpp index 504f7cc896..c1db5262d0 100644 --- a/src/test/overlay/TMGetObjectByHash_test.cpp +++ b/src/test/overlay/TMGetObjectByHash_test.cpp @@ -36,8 +36,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { using namespace jtx; @@ -82,7 +81,7 @@ class TMGetObjectByHash_test : public beast::unit_test::suite { } - ~PeerTest() = default; + ~PeerTest() override = default; void run() override @@ -222,5 +221,4 @@ class TMGetObjectByHash_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(TMGetObjectByHash, overlay, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/overlay/cluster_test.cpp b/src/test/overlay/cluster_test.cpp index b53dd63e9a..41db90dc57 100644 --- a/src/test/overlay/cluster_test.cpp +++ b/src/test/overlay/cluster_test.cpp @@ -17,8 +17,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { class cluster_test : public xrpl::TestSuite { @@ -92,7 +91,7 @@ public: for (auto const& n : network) { - auto found = std::find(cluster.begin(), cluster.end(), n); + auto found = std::ranges::find(cluster, n); BEAST_EXPECT(static_cast(c->member(n)) == (found != cluster.end())); } } @@ -109,7 +108,7 @@ public: for (auto const& n : network) { - auto found = std::find(cluster.begin(), cluster.end(), n); + auto found = std::ranges::find(cluster, n); BEAST_EXPECT(static_cast(c->member(n)) == (found != cluster.end())); } } @@ -254,5 +253,4 @@ public: BEAST_DEFINE_TESTSUITE(cluster, overlay, xrpl); -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/overlay/compression_test.cpp b/src/test/overlay/compression_test.cpp index 22b8694928..bb4b95220a 100644 --- a/src/test/overlay/compression_test.cpp +++ b/src/test/overlay/compression_test.cpp @@ -50,9 +50,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { using namespace xrpl::test; using namespace xrpl::test::jtx; @@ -79,9 +77,7 @@ class compression_test : public beast::unit_test::suite using Algorithm = compression::Algorithm; public: - compression_test() - { - } + compression_test() = default; template void @@ -466,5 +462,4 @@ public: BEAST_DEFINE_TESTSUITE_MANUAL(compression, overlay, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/overlay/handshake_test.cpp b/src/test/overlay/handshake_test.cpp index 8727f10b88..50b987f794 100644 --- a/src/test/overlay/handshake_test.cpp +++ b/src/test/overlay/handshake_test.cpp @@ -2,9 +2,7 @@ #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class handshake_test : public beast::unit_test::suite { @@ -42,5 +40,4 @@ public: BEAST_DEFINE_TESTSUITE(handshake, overlay, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/overlay/reduce_relay_test.cpp b/src/test/overlay/reduce_relay_test.cpp index e0538a29b4..842511b860 100644 --- a/src/test/overlay/reduce_relay_test.cpp +++ b/src/test/overlay/reduce_relay_test.cpp @@ -46,9 +46,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { using namespace std::chrono; @@ -77,9 +75,7 @@ public: } PublicKey nodePublicKey_; - virtual ~PeerPartial() - { - } + ~PeerPartial() override = default; virtual void onMessage(MessageSPtr const& m, SquelchCB f) = 0; virtual void @@ -200,10 +196,10 @@ public: class ManualClock { public: - typedef uint64_t rep; - typedef std::milli period; - typedef std::chrono::duration duration; - typedef std::chrono::time_point time_point; + using rep = uint64_t; + using period = std::milli; + using duration = std::chrono::duration; + using time_point = std::chrono::time_point; inline static bool const is_steady = false; static void @@ -272,11 +268,8 @@ class Link using Latency = std::pair; public: - Link( - Validator& validator, - PeerSPtr peer, - Latency const& latency = {milliseconds(5), milliseconds(15)}) - : validator_(validator), peer_(peer), latency_(latency) + Link(Validator& validator, PeerSPtr peer, Latency latency = {milliseconds(5), milliseconds(15)}) + : validator_(validator), peer_(peer), latency_(std::move(latency)) { auto sp = peer_.lock(); assert(sp); @@ -397,9 +390,7 @@ public: for_links(LinkIterCB f, bool simulateSlow = false) { std::vector v; - std::transform(links_.begin(), links_.end(), std::back_inserter(v), [](auto& kv) { - return kv.second; - }); + std::ranges::transform(links_, std::back_inserter(v), [](auto& kv) { return kv.second; }); std::random_device d; std::mt19937 g(d()); std::shuffle(v.begin(), v.end(), g); @@ -469,7 +460,7 @@ public: id_ = sid_++; } - ~PeerSim() = default; + ~PeerSim() override = default; id_t id() const override @@ -503,7 +494,7 @@ public: } /** Remote Peer (Directly connected Peer) */ - virtual void + void onMessage(protocol::TMSquelch const& squelch) override { auto validator = squelch.validatorpubkey(); @@ -537,7 +528,7 @@ public: { } - ~OverlaySim() = default; + ~OverlaySim() override = default; void clear() @@ -778,8 +769,7 @@ public: void enableLink(std::uint16_t validatorId, Peer::id_t peer, bool enable) { - auto it = std::find_if( - validators_.begin(), validators_.end(), [&](auto& v) { return v.id() == validatorId; }); + auto it = std::ranges::find_if(validators_, [&](auto& v) { return v.id() == validatorId; }); assert(it != validators_.end()); if (enable) { @@ -1277,7 +1267,7 @@ protected: ManualClock::advance(seconds(601)); BEAST_EXPECT(propagateAndSquelch(log, true, false)); auto peers = network_.overlay().getPeers(network_.validator(0)); - auto it = std::find_if(peers.begin(), peers.end(), [&](auto it) { + auto it = std::ranges::find_if(peers, [&](auto it) { return std::get(it.second) == reduce_relay::PeerState::Squelched; }); @@ -1489,9 +1479,7 @@ vp_base_squelch_max_selected_peers=2 struct Handler : public reduce_relay::SquelchHandler { - Handler() - { - } + Handler() = default; void squelch(PublicKey const&, Peer::id_t, std::uint32_t duration) const override { @@ -1683,6 +1671,4 @@ class reduce_relay_simulate_test : public reduce_relay_test BEAST_DEFINE_TESTSUITE(reduce_relay, overlay, xrpl); BEAST_DEFINE_TESTSUITE_MANUAL(reduce_relay_simulate, overlay, xrpl); -} // namespace test - -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/overlay/short_read_test.cpp b/src/test/overlay/short_read_test.cpp index 6c8c68e95c..5d145fb6b1 100644 --- a/src/test/overlay/short_read_test.cpp +++ b/src/test/overlay/short_read_test.cpp @@ -645,7 +645,7 @@ public: { } - ~short_read_test() + ~short_read_test() override { work_.reset(); thread_.join(); diff --git a/src/test/overlay/traffic_count_test.cpp b/src/test/overlay/traffic_count_test.cpp index ffb1ceb9c2..b5cb73c65d 100644 --- a/src/test/overlay/traffic_count_test.cpp +++ b/src/test/overlay/traffic_count_test.cpp @@ -7,9 +7,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class traffic_count_test : public beast::unit_test::suite { @@ -53,13 +51,13 @@ public: TrafficCount m_traffic; auto const counts = m_traffic.getCounts(); - std::for_each(counts.begin(), counts.end(), [&](auto const& pair) { + std::ranges::for_each(counts, [&](auto const& pair) { for (auto i = 0; i < tc.messageCount; ++i) m_traffic.addCount(pair.first, tc.inbound, tc.size); }); auto const counts_new = m_traffic.getCounts(); - std::for_each(counts_new.begin(), counts_new.end(), [&](auto const& pair) { + std::ranges::for_each(counts_new, [&](auto const& pair) { BEAST_EXPECT(pair.second.bytesIn.load() == tc.expectedBytesIn); BEAST_EXPECT(pair.second.bytesOut.load() == tc.expectedBytesOut); BEAST_EXPECT(pair.second.messagesIn.load() == tc.expectedMessagesIn); @@ -128,5 +126,4 @@ public: BEAST_DEFINE_TESTSUITE(traffic_count, overlay, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/overlay/tx_reduce_relay_test.cpp b/src/test/overlay/tx_reduce_relay_test.cpp index 354189904a..bbb31fd38b 100644 --- a/src/test/overlay/tx_reduce_relay_test.cpp +++ b/src/test/overlay/tx_reduce_relay_test.cpp @@ -43,9 +43,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class tx_reduce_relay_test : public beast::unit_test::suite { @@ -143,7 +141,7 @@ private: { sid_++; } - ~PeerTest() = default; + ~PeerTest() override = default; void run() override @@ -299,5 +297,4 @@ private: }; BEAST_DEFINE_TESTSUITE(tx_reduce_relay, overlay, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/peerfinder/Livecache_test.cpp b/src/test/peerfinder/Livecache_test.cpp index 7678400e9e..561b17f71c 100644 --- a/src/test/peerfinder/Livecache_test.cpp +++ b/src/test/peerfinder/Livecache_test.cpp @@ -22,8 +22,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { bool operator==(Endpoint const& a, Endpoint const& b) @@ -212,5 +211,4 @@ public: BEAST_DEFINE_TESTSUITE(Livecache, peerfinder, xrpl); -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/test/peerfinder/PeerFinder_test.cpp b/src/test/peerfinder/PeerFinder_test.cpp index 8203b7d9c3..0e37c7baf4 100644 --- a/src/test/peerfinder/PeerFinder_test.cpp +++ b/src/test/peerfinder/PeerFinder_test.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { class PeerFinder_test : public beast::unit_test::suite { @@ -530,5 +529,4 @@ public: BEAST_DEFINE_TESTSUITE(PeerFinder, peerfinder, xrpl); -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/test/protocol/ApiVersion_test.cpp b/src/test/protocol/ApiVersion_test.cpp index fa0deec575..569aed5fa2 100644 --- a/src/test/protocol/ApiVersion_test.cpp +++ b/src/test/protocol/ApiVersion_test.cpp @@ -1,8 +1,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct ApiVersion_test : beast::unit_test::suite { void @@ -39,5 +38,4 @@ struct ApiVersion_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(ApiVersion, protocol, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/protocol/InnerObjectFormats_test.cpp b/src/test/protocol/InnerObjectFormats_test.cpp index 049f38596b..8a4d527db3 100644 --- a/src/test/protocol/InnerObjectFormats_test.cpp +++ b/src/test/protocol/InnerObjectFormats_test.cpp @@ -24,7 +24,7 @@ struct TestJSONTxt static TestJSONTxt const testArray[] = { // Valid SignerEntry - {R"({ + {.txt = R"({ "Account" : "rDg53Haik2475DJx8bjMDSDPj4VX7htaMd", "SignerEntries" : [ @@ -46,10 +46,10 @@ static TestJSONTxt const testArray[] = { "SignerQuorum" : 7, "TransactionType" : "SignerListSet" })", - false}, + .expectFail = false}, // SignerEntry missing Account - {R"({ + {.txt = R"({ "Account" : "rDg53Haik2475DJx8bjMDSDPj4VX7htaMd", "SignerEntries" : [ @@ -70,10 +70,10 @@ static TestJSONTxt const testArray[] = { "SignerQuorum" : 7, "TransactionType" : "SignerListSet" })", - true}, + .expectFail = true}, // SignerEntry missing SignerWeight - {R"({ + {.txt = R"({ "Account" : "rDg53Haik2475DJx8bjMDSDPj4VX7htaMd", "SignerEntries" : [ @@ -94,10 +94,10 @@ static TestJSONTxt const testArray[] = { "SignerQuorum" : 7, "TransactionType" : "SignerListSet" })", - true}, + .expectFail = true}, // SignerEntry with unexpected Amount - {R"({ + {.txt = R"({ "Account" : "rDg53Haik2475DJx8bjMDSDPj4VX7htaMd", "SignerEntries" : [ @@ -120,10 +120,10 @@ static TestJSONTxt const testArray[] = { "SignerQuorum" : 7, "TransactionType" : "SignerListSet" })", - true}, + .expectFail = true}, // SignerEntry with no Account and unexpected Amount - {R"({ + {.txt = R"({ "Account" : "rDg53Haik2475DJx8bjMDSDPj4VX7htaMd", "SignerEntries" : [ @@ -145,7 +145,7 @@ static TestJSONTxt const testArray[] = { "SignerQuorum" : 7, "TransactionType" : "SignerListSet" })", - true}, + .expectFail = true}, }; diff --git a/src/test/protocol/MultiApiJson_test.cpp b/src/test/protocol/MultiApiJson_test.cpp index 1ead56c8d6..f0cbf805f3 100644 --- a/src/test/protocol/MultiApiJson_test.cpp +++ b/src/test/protocol/MultiApiJson_test.cpp @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { namespace { @@ -920,5 +919,4 @@ struct MultiApiJson_test : beast::unit_test::suite BEAST_DEFINE_TESTSUITE(MultiApiJson, protocol, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/protocol/Quality_test.cpp b/src/test/protocol/Quality_test.cpp index 3e45ac6bc0..09308c71a8 100644 --- a/src/test/protocol/Quality_test.cpp +++ b/src/test/protocol/Quality_test.cpp @@ -22,17 +22,17 @@ public: template static STAmount - amount(Integer integer, std::enable_if_t::value>* = 0) + amount(Integer integer, std::enable_if_t>* = 0) { - static_assert(std::is_integral::value, ""); + static_assert(std::is_integral_v, ""); return STAmount(integer, false); } template static STAmount - amount(Integer integer, std::enable_if_t::value>* = 0) + amount(Integer integer, std::enable_if_t>* = 0) { - static_assert(std::is_integral::value, ""); + static_assert(std::is_integral_v, ""); if (integer < 0) return STAmount(-integer, true); return STAmount(integer, false); diff --git a/src/test/protocol/STIssue_test.cpp b/src/test/protocol/STIssue_test.cpp index 3d921e9c66..41b8e27d7b 100644 --- a/src/test/protocol/STIssue_test.cpp +++ b/src/test/protocol/STIssue_test.cpp @@ -11,8 +11,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class STIssue_test : public beast::unit_test::suite { @@ -149,5 +148,4 @@ public: BEAST_DEFINE_TESTSUITE(STIssue, protocol, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/protocol/STObject_test.cpp b/src/test/protocol/STObject_test.cpp index 0a72c57a8b..d76446599c 100644 --- a/src/test/protocol/STObject_test.cpp +++ b/src/test/protocol/STObject_test.cpp @@ -356,7 +356,7 @@ public: STObject st(sfGeneric); auto const v = ~st[~sf1Outer]; static_assert( - std::is_same, std::optional>::value, ""); + std::is_same_v, std::optional>, ""); } // UDT scalar fields @@ -431,7 +431,7 @@ public: BEAST_EXPECT(cst[sf][0] == 1); BEAST_EXPECT(cst[sf][1] == 2); static_assert( - std::is_same const&>::value, ""); + std::is_same_v const&>, ""); } // Default by reference field diff --git a/src/test/protocol/STParsedJSON_test.cpp b/src/test/protocol/STParsedJSON_test.cpp index 6d42bcafac..75d3d74ddd 100644 --- a/src/test/protocol/STParsedJSON_test.cpp +++ b/src/test/protocol/STParsedJSON_test.cpp @@ -419,8 +419,7 @@ class STParsedJSON_test : public beast::unit_test::suite // NOLINTNEXTLINE(bugprone-unchecked-optional-access) auto const& h128 = obj.object->getFieldH128(sfEmailHash); BEAST_EXPECT(h128.size() == 16); - bool const allZero = - std::all_of(h128.begin(), h128.end(), [](auto b) { return b == 0; }); + bool const allZero = std::ranges::all_of(h128, [](auto b) { return b == 0; }); BEAST_EXPECT(allZero); } @@ -515,8 +514,7 @@ class STParsedJSON_test : public beast::unit_test::suite // NOLINTNEXTLINE(bugprone-unchecked-optional-access) auto const& h160 = obj.object->getFieldH160(sfTakerPaysCurrency); BEAST_EXPECT(h160.size() == 20); - bool const allZero = - std::all_of(h160.begin(), h160.end(), [](auto b) { return b == 0; }); + bool const allZero = std::ranges::all_of(h160, [](auto b) { return b == 0; }); BEAST_EXPECT(allZero); } @@ -604,8 +602,7 @@ class STParsedJSON_test : public beast::unit_test::suite // NOLINTNEXTLINE(bugprone-unchecked-optional-access) auto const& h192 = obj.object->getFieldH192(sfMPTokenIssuanceID); BEAST_EXPECT(h192.size() == 24); - bool const allZero = - std::all_of(h192.begin(), h192.end(), [](auto b) { return b == 0; }); + bool const allZero = std::ranges::all_of(h192, [](auto b) { return b == 0; }); BEAST_EXPECT(allZero); } @@ -706,8 +703,7 @@ class STParsedJSON_test : public beast::unit_test::suite // NOLINTNEXTLINE(bugprone-unchecked-optional-access) auto const& h256 = obj.object->getFieldH256(sfLedgerHash); BEAST_EXPECT(h256.size() == 32); - bool const allZero = - std::all_of(h256.begin(), h256.end(), [](auto b) { return b == 0; }); + bool const allZero = std::ranges::all_of(h256, [](auto b) { return b == 0; }); BEAST_EXPECT(allZero); } @@ -2149,7 +2145,7 @@ class STParsedJSON_test : public beast::unit_test::suite catch (std::runtime_error const& e) { std::string const what(e.what()); - unexpected(what.find("First level children of `Template`") != 0); + unexpected(!what.starts_with("First level children of `Template`")); } } } diff --git a/src/test/protocol/SecretKey_test.cpp b/src/test/protocol/SecretKey_test.cpp index f13a70ebea..7e71775988 100644 --- a/src/test/protocol/SecretKey_test.cpp +++ b/src/test/protocol/SecretKey_test.cpp @@ -167,8 +167,7 @@ public: // swaps the smallest and largest elements in buffer std::iter_swap( - std::min_element(badData.begin(), badData.end()), - std::max_element(badData.begin(), badData.end())); + std::ranges::min_element(badData), std::ranges::max_element(badData)); // Wrong data: should fail BEAST_EXPECT(!verify(pk, makeSlice(badData), sig)); @@ -354,1149 +353,1149 @@ public: private: // clang-format off inline static TestKeyData const secp256k1TestVectors[] = { - {{0xDE,0xDC,0xE9,0xCE,0x67,0xB4,0x51,0xD8,0x52,0xFD,0x4E,0x84,0x6F,0xCD,0xE3,0x1C}, - {0x03,0x30,0xE7,0xFC,0x9D,0x56,0xBB,0x25,0xD6,0x89,0x3B,0xA3,0xF3,0x17,0xAE,0x5B, + {.seed={0xDE,0xDC,0xE9,0xCE,0x67,0xB4,0x51,0xD8,0x52,0xFD,0x4E,0x84,0x6F,0xCD,0xE3,0x1C}, + .pubkey={0x03,0x30,0xE7,0xFC,0x9D,0x56,0xBB,0x25,0xD6,0x89,0x3B,0xA3,0xF3,0x17,0xAE,0x5B, 0xCF,0x33,0xB3,0x29,0x1B,0xD6,0x3D,0xB3,0x26,0x54,0xA3,0x13,0x22,0x2F,0x7F,0xD0,0x20}, - {0x1A,0xCA,0xAE,0xDE,0xCE,0x40,0x5B,0x2A,0x95,0x82,0x12,0x62,0x9E,0x16,0xF2,0xEB, + .seckey={0x1A,0xCA,0xAE,0xDE,0xCE,0x40,0x5B,0x2A,0x95,0x82,0x12,0x62,0x9E,0x16,0xF2,0xEB, 0x46,0xB1,0x53,0xEE,0xE9,0x4C,0xDD,0x35,0x0F,0xDE,0xFF,0x52,0x79,0x55,0x25,0xB7}, - "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}, - {{0xF7,0x5C,0x48,0xFE,0xC4,0x6D,0x4D,0x64,0x92,0x8B,0x79,0x5F,0x3F,0xBA,0xBB,0xA0}, - {0x03,0xAF,0x53,0xE8,0x01,0x1E,0x85,0xB3,0x66,0x64,0xF1,0x71,0x08,0x90,0x50,0x1C, + .addr="rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}, + {.seed={0xF7,0x5C,0x48,0xFE,0xC4,0x6D,0x4D,0x64,0x92,0x8B,0x79,0x5F,0x3F,0xBA,0xBB,0xA0}, + .pubkey={0x03,0xAF,0x53,0xE8,0x01,0x1E,0x85,0xB3,0x66,0x64,0xF1,0x71,0x08,0x90,0x50,0x1C, 0x3E,0x86,0xFC,0x2C,0x66,0x58,0xC2,0xEE,0x83,0xCA,0x58,0x0D,0xC9,0x97,0x25,0x41,0xB1}, - {0x5B,0x8A,0xB0,0xE7,0xCD,0xAF,0x48,0x87,0x4D,0x5D,0x99,0x34,0xBF,0x3E,0x7B,0x2C, + .seckey={0x5B,0x8A,0xB0,0xE7,0xCD,0xAF,0x48,0x87,0x4D,0x5D,0x99,0x34,0xBF,0x3E,0x7B,0x2C, 0xB0,0x6B,0xC4,0xC7,0xEA,0xAA,0xF7,0x62,0x68,0x2E,0xD8,0xD0,0xA3,0x1E,0x3C,0x70}, - "r9ZERztesFu3ZBs7zsWTeCvBg14GQ9zWF7"}, - {{0x7A,0xEA,0x88,0xC1,0x48,0xA8,0xC4,0xA8,0x90,0x69,0xF9,0x8A,0x37,0x33,0x16,0x7B}, - {0x03,0x7A,0xD9,0x30,0xB3,0x1B,0x0F,0x81,0x03,0x6D,0x65,0xA6,0x2D,0x4E,0x11,0x31, + .addr="r9ZERztesFu3ZBs7zsWTeCvBg14GQ9zWF7"}, + {.seed={0x7A,0xEA,0x88,0xC1,0x48,0xA8,0xC4,0xA8,0x90,0x69,0xF9,0x8A,0x37,0x33,0x16,0x7B}, + .pubkey={0x03,0x7A,0xD9,0x30,0xB3,0x1B,0x0F,0x81,0x03,0x6D,0x65,0xA6,0x2D,0x4E,0x11,0x31, 0xEF,0x60,0x5F,0x73,0x8E,0x7D,0x7F,0x95,0x46,0x5B,0xBE,0xCB,0xCB,0xFF,0xA7,0x07,0x6E}, - {0x3D,0xDC,0x5F,0xE1,0x63,0x78,0xAE,0x85,0x03,0xE9,0x74,0x23,0x30,0x17,0x79,0x1C, + .seckey={0x3D,0xDC,0x5F,0xE1,0x63,0x78,0xAE,0x85,0x03,0xE9,0x74,0x23,0x30,0x17,0x79,0x1C, 0xC0,0x7C,0x10,0x77,0x65,0x3A,0xB7,0x23,0xC8,0xF6,0x5B,0x17,0xB9,0x98,0x0D,0xA1}, - "rfmZ1iAuSzB2gxjoJgBub6iJPCk92D7YfC"}, - {{0xE4,0x24,0x9B,0xFF,0x02,0xB7,0x66,0x91,0x99,0xA2,0x3F,0xAF,0x48,0x8C,0x17,0x9E}, - {0x02,0xEF,0x88,0x8E,0x93,0xB9,0xA8,0x50,0xFC,0x93,0xCF,0x00,0xF6,0xA9,0x3C,0x3C, + .addr="rfmZ1iAuSzB2gxjoJgBub6iJPCk92D7YfC"}, + {.seed={0xE4,0x24,0x9B,0xFF,0x02,0xB7,0x66,0x91,0x99,0xA2,0x3F,0xAF,0x48,0x8C,0x17,0x9E}, + .pubkey={0x02,0xEF,0x88,0x8E,0x93,0xB9,0xA8,0x50,0xFC,0x93,0xCF,0x00,0xF6,0xA9,0x3C,0x3C, 0xDE,0xF2,0x86,0x0D,0xBF,0x3A,0x4F,0x11,0xCD,0x0A,0xE8,0xE6,0x45,0x4D,0x20,0x95,0xE3}, - {0x84,0xBF,0xD9,0x22,0x68,0xCA,0x02,0x01,0x9C,0xE6,0xD9,0x35,0xEF,0xA9,0x94,0x4B, + .seckey={0x84,0xBF,0xD9,0x22,0x68,0xCA,0x02,0x01,0x9C,0xE6,0xD9,0x35,0xEF,0xA9,0x94,0x4B, 0xAE,0xC3,0x3E,0x23,0x41,0x34,0xDE,0xF4,0xF2,0xA8,0xE7,0x75,0x19,0xF3,0x42,0xBE}, - "rwm4pKGoRDHez72gumG7VZw5Fb9ah7o6K2"}, - {{0x04,0xC7,0x18,0x9B,0x62,0x72,0x94,0x39,0x81,0x6B,0x25,0x9C,0x4E,0x61,0x99,0xE1}, - {0x03,0x3E,0x4F,0xA3,0x7A,0x91,0xFC,0xCD,0x49,0xEF,0x91,0xB8,0x1D,0x34,0x1F,0x27, + .addr="rwm4pKGoRDHez72gumG7VZw5Fb9ah7o6K2"}, + {.seed={0x04,0xC7,0x18,0x9B,0x62,0x72,0x94,0x39,0x81,0x6B,0x25,0x9C,0x4E,0x61,0x99,0xE1}, + .pubkey={0x03,0x3E,0x4F,0xA3,0x7A,0x91,0xFC,0xCD,0x49,0xEF,0x91,0xB8,0x1D,0x34,0x1F,0x27, 0x24,0x1A,0x35,0xE9,0x13,0x05,0x55,0x33,0xE3,0x0C,0xA0,0x4D,0xA4,0x12,0x10,0x8F,0xCA}, - {0xA6,0x74,0x67,0x08,0x1E,0x99,0x33,0xC0,0x74,0x63,0x5C,0xEB,0x81,0x92,0x51,0xA5, + .seckey={0xA6,0x74,0x67,0x08,0x1E,0x99,0x33,0xC0,0x74,0x63,0x5C,0xEB,0x81,0x92,0x51,0xA5, 0x02,0x5E,0xD3,0x6E,0x88,0x87,0xDC,0xC1,0xD9,0xEB,0x8F,0x5B,0x52,0x08,0x74,0x81}, - "rHsP2baL7CdEjfJ89AYoWuocKBiPSikBnm"}, - {{0x3E,0x94,0x83,0x6F,0xA5,0x42,0x87,0xA9,0x5D,0xAD,0xB1,0xDF,0xAF,0x03,0xB4,0x28}, - {0x03,0x6F,0x9B,0xB1,0x59,0xB4,0x72,0x58,0x7E,0xCC,0xD2,0x24,0x35,0xC2,0xA8,0xB8, + .addr="rHsP2baL7CdEjfJ89AYoWuocKBiPSikBnm"}, + {.seed={0x3E,0x94,0x83,0x6F,0xA5,0x42,0x87,0xA9,0x5D,0xAD,0xB1,0xDF,0xAF,0x03,0xB4,0x28}, + .pubkey={0x03,0x6F,0x9B,0xB1,0x59,0xB4,0x72,0x58,0x7E,0xCC,0xD2,0x24,0x35,0xC2,0xA8,0xB8, 0xC4,0xF5,0xF5,0x13,0x33,0xFA,0xAE,0xC5,0xA8,0x35,0xAE,0x58,0x34,0x68,0x97,0x8B,0x4B}, - {0xD1,0xB4,0xE7,0xFE,0x29,0x19,0xF9,0x7E,0x41,0x3F,0x41,0x74,0x4D,0x29,0x1B,0x46, + .seckey={0xD1,0xB4,0xE7,0xFE,0x29,0x19,0xF9,0x7E,0x41,0x3F,0x41,0x74,0x4D,0x29,0x1B,0x46, 0x77,0xD0,0x32,0xC1,0x52,0x61,0xAC,0x94,0x2A,0x9E,0x93,0x03,0x06,0x52,0x7A,0xA1}, - "rpuqfwe4b4vP4ndmUBkgVXwyquPYAtGFku"}, - {{0x82,0xCB,0xB5,0x75,0xC7,0x39,0xC6,0xCC,0x29,0x9E,0xC0,0x1C,0x21,0x21,0xB6,0x10}, - {0x03,0x58,0x8B,0x56,0x6F,0x57,0x3A,0xC8,0x30,0xE5,0xEC,0xE4,0x03,0x08,0x59,0x52, + .addr="rpuqfwe4b4vP4ndmUBkgVXwyquPYAtGFku"}, + {.seed={0x82,0xCB,0xB5,0x75,0xC7,0x39,0xC6,0xCC,0x29,0x9E,0xC0,0x1C,0x21,0x21,0xB6,0x10}, + .pubkey={0x03,0x58,0x8B,0x56,0x6F,0x57,0x3A,0xC8,0x30,0xE5,0xEC,0xE4,0x03,0x08,0x59,0x52, 0x3E,0x44,0x7A,0x5A,0xCA,0x95,0x51,0xB7,0xA1,0x18,0xB9,0x1F,0x37,0x24,0xD2,0x40,0x83}, - {0x79,0x63,0x69,0x53,0xF7,0x64,0x9B,0x82,0x39,0x86,0x31,0xCC,0x47,0xC9,0x7B,0xD8, + .seckey={0x79,0x63,0x69,0x53,0xF7,0x64,0x9B,0x82,0x39,0x86,0x31,0xCC,0x47,0xC9,0x7B,0xD8, 0xA8,0x84,0x74,0x70,0xB7,0xF7,0xFA,0x0C,0x48,0x47,0x73,0xF1,0x74,0xB7,0xA2,0x47}, - "rp45fL94nhjferVtQWa9PkyydFQK6aZbEy"}, - {{0x8A,0x91,0x69,0x2D,0x45,0x00,0x23,0xC4,0x65,0x0C,0xC2,0x18,0x5D,0xCF,0x0F,0x68}, - {0x02,0x09,0x65,0xCE,0x5C,0x65,0x51,0x0C,0xC6,0xD7,0xAA,0x64,0x98,0xFD,0x0C,0xE1, + .addr="rp45fL94nhjferVtQWa9PkyydFQK6aZbEy"}, + {.seed={0x8A,0x91,0x69,0x2D,0x45,0x00,0x23,0xC4,0x65,0x0C,0xC2,0x18,0x5D,0xCF,0x0F,0x68}, + .pubkey={0x02,0x09,0x65,0xCE,0x5C,0x65,0x51,0x0C,0xC6,0xD7,0xAA,0x64,0x98,0xFD,0x0C,0xE1, 0xD8,0xE9,0xAD,0xCD,0x72,0x00,0x12,0xA5,0x1D,0x36,0x64,0x94,0xB1,0x97,0xF6,0xB9,0x9E}, - {0xE3,0x69,0x28,0xEE,0x12,0x60,0x08,0x8D,0x47,0x90,0xB3,0x99,0x25,0x47,0x79,0xF7, + .seckey={0xE3,0x69,0x28,0xEE,0x12,0x60,0x08,0x8D,0x47,0x90,0xB3,0x99,0x25,0x47,0x79,0xF7, 0x9B,0xDD,0x48,0xA9,0xEC,0xAD,0xC1,0x3B,0xF4,0x59,0x7B,0x69,0xAD,0xE1,0x6F,0x3E}, - "rfZCLUjvKSNmg5xMufb6fgq9VfP5biBDfU"}, - {{0x9F,0x65,0x49,0xF5,0x89,0xA4,0x72,0x3C,0xD9,0x46,0x77,0xE2,0xCF,0xCD,0x6E,0xB9}, - {0x03,0x95,0xE9,0x7A,0x55,0xCE,0x55,0x2E,0xC0,0xE3,0xC0,0x00,0xF6,0x05,0x53,0x63, + .addr="rfZCLUjvKSNmg5xMufb6fgq9VfP5biBDfU"}, + {.seed={0x9F,0x65,0x49,0xF5,0x89,0xA4,0x72,0x3C,0xD9,0x46,0x77,0xE2,0xCF,0xCD,0x6E,0xB9}, + .pubkey={0x03,0x95,0xE9,0x7A,0x55,0xCE,0x55,0x2E,0xC0,0xE3,0xC0,0x00,0xF6,0x05,0x53,0x63, 0x2A,0x3E,0xEA,0xF9,0x47,0x34,0x64,0x0B,0xAB,0xD1,0x54,0x3A,0xD0,0xA6,0x90,0x05,0xCD}, - {0xB4,0xB6,0xAB,0x76,0x33,0x75,0x98,0xE2,0xBF,0x43,0x07,0x92,0xEF,0x14,0x04,0x36, + .seckey={0xB4,0xB6,0xAB,0x76,0x33,0x75,0x98,0xE2,0xBF,0x43,0x07,0x92,0xEF,0x14,0x04,0x36, 0xE2,0x5C,0x43,0xAD,0xA0,0x6B,0xED,0x8C,0xA1,0xCC,0x80,0x7F,0xEA,0x3B,0xA5,0x26}, - "rpyTz8db86bWHi8E43GGexhRsLDwwMRta3"}, - {{0xCE,0xEC,0xF7,0xAF,0xBF,0x34,0xEF,0xA3,0x0D,0x5C,0xBA,0x33,0xFC,0x5A,0x9A,0x83}, - {0x02,0xD2,0x6D,0xF4,0xAC,0x1F,0x19,0x04,0xD2,0x05,0x85,0xDC,0x21,0x9F,0xB3,0xE4, + .addr="rpyTz8db86bWHi8E43GGexhRsLDwwMRta3"}, + {.seed={0xCE,0xEC,0xF7,0xAF,0xBF,0x34,0xEF,0xA3,0x0D,0x5C,0xBA,0x33,0xFC,0x5A,0x9A,0x83}, + .pubkey={0x02,0xD2,0x6D,0xF4,0xAC,0x1F,0x19,0x04,0xD2,0x05,0x85,0xDC,0x21,0x9F,0xB3,0xE4, 0x35,0xAC,0xAE,0x14,0x0B,0xCF,0x59,0xBE,0x5E,0x91,0xD8,0xDC,0xCD,0xB7,0x41,0xB2,0xF3}, - {0x23,0x89,0x7A,0x4F,0xDD,0xD2,0x40,0xF7,0x3D,0x2F,0xA3,0x26,0xC5,0xBC,0x41,0x06, + .seckey={0x23,0x89,0x7A,0x4F,0xDD,0xD2,0x40,0xF7,0x3D,0x2F,0xA3,0x26,0xC5,0xBC,0x41,0x06, 0xD8,0x22,0xEA,0x2A,0x01,0x1D,0x7E,0x8E,0xDF,0xE8,0xC6,0xFE,0xAA,0x76,0x41,0x41}, - "rfwGiMcsffk9TcwQu1KMYYvkPq4cdHdMik"}, - {{0xFC,0x0D,0x60,0xC9,0xBF,0x88,0x71,0x32,0x49,0x5A,0xD7,0x53,0xA5,0x19,0x97,0xED}, - {0x03,0x90,0x69,0x2D,0x7C,0x32,0x6C,0x90,0xA7,0xF3,0x2B,0xA6,0x71,0xDB,0x1E,0x28, + .addr="rfwGiMcsffk9TcwQu1KMYYvkPq4cdHdMik"}, + {.seed={0xFC,0x0D,0x60,0xC9,0xBF,0x88,0x71,0x32,0x49,0x5A,0xD7,0x53,0xA5,0x19,0x97,0xED}, + .pubkey={0x03,0x90,0x69,0x2D,0x7C,0x32,0x6C,0x90,0xA7,0xF3,0x2B,0xA6,0x71,0xDB,0x1E,0x28, 0x29,0xC9,0xBB,0xA6,0x8B,0x95,0x6E,0x88,0x19,0x13,0x59,0xEE,0x7E,0x85,0x67,0xCC,0x35}, - {0x39,0x43,0x83,0x14,0xC3,0x6E,0x24,0x7B,0x66,0x3F,0x65,0x60,0x5A,0xA5,0xE2,0x0C, + .seckey={0x39,0x43,0x83,0x14,0xC3,0x6E,0x24,0x7B,0x66,0x3F,0x65,0x60,0x5A,0xA5,0xE2,0x0C, 0x71,0xAF,0x8D,0xBD,0x9A,0x04,0xBB,0x1D,0x3B,0x67,0xFC,0x63,0x0A,0x3D,0x74,0xB6}, - "rNYp97qFzBZ5SLfXRtRMwFNxHrGR9cQyGL"}, - {{0x57,0x44,0x63,0xB8,0x56,0x88,0x76,0xC7,0x58,0x2B,0x91,0xC9,0x82,0xF6,0xE4,0x6F}, - {0x03,0x00,0xF4,0x84,0x0C,0xD6,0x00,0xD1,0xC7,0x54,0x5D,0x2D,0xBD,0x1B,0xB7,0x9A, + .addr="rNYp97qFzBZ5SLfXRtRMwFNxHrGR9cQyGL"}, + {.seed={0x57,0x44,0x63,0xB8,0x56,0x88,0x76,0xC7,0x58,0x2B,0x91,0xC9,0x82,0xF6,0xE4,0x6F}, + .pubkey={0x03,0x00,0xF4,0x84,0x0C,0xD6,0x00,0xD1,0xC7,0x54,0x5D,0x2D,0xBD,0x1B,0xB7,0x9A, 0xE3,0x55,0x58,0x67,0x98,0x2E,0x2D,0x38,0x7C,0x3B,0x9C,0xE8,0x1D,0x85,0x76,0x94,0x6E}, - {0x12,0x8F,0xA4,0xE0,0x64,0xA3,0x06,0x90,0x3E,0xC7,0x33,0x44,0xF6,0x10,0xB3,0x8B, + .seckey={0x12,0x8F,0xA4,0xE0,0x64,0xA3,0x06,0x90,0x3E,0xC7,0x33,0x44,0xF6,0x10,0xB3,0x8B, 0xA4,0xDA,0x20,0x97,0x6C,0x46,0x91,0x9B,0xA7,0x81,0x05,0xCA,0x1E,0x8E,0x58,0xE6}, - "r9U2Q5oiKTxp643G8gh6okmToJL6xVhqUn"}, - {{0x6D,0xDD,0x5C,0xC5,0x55,0x90,0x7E,0x56,0x08,0x7D,0x08,0xAA,0xD0,0xCD,0xEB,0x85}, - {0x02,0xA1,0x82,0x14,0xBF,0xF9,0xA9,0x64,0xE3,0x52,0x60,0x5F,0xA3,0x7C,0xB4,0xE4, + .addr="r9U2Q5oiKTxp643G8gh6okmToJL6xVhqUn"}, + {.seed={0x6D,0xDD,0x5C,0xC5,0x55,0x90,0x7E,0x56,0x08,0x7D,0x08,0xAA,0xD0,0xCD,0xEB,0x85}, + .pubkey={0x02,0xA1,0x82,0x14,0xBF,0xF9,0xA9,0x64,0xE3,0x52,0x60,0x5F,0xA3,0x7C,0xB4,0xE4, 0x47,0x08,0xBE,0x9E,0xDF,0x3A,0xC7,0x9E,0x59,0xBC,0x09,0x7B,0x58,0x24,0xC8,0x43,0x78}, - {0x6E,0x46,0x58,0x1D,0x14,0x4D,0xA5,0x0A,0xEB,0xBE,0xD4,0xF5,0x24,0x9C,0x6E,0x7B, + .seckey={0x6E,0x46,0x58,0x1D,0x14,0x4D,0xA5,0x0A,0xEB,0xBE,0xD4,0xF5,0x24,0x9C,0x6E,0x7B, 0x63,0x00,0xA3,0xAB,0xFE,0x5B,0x64,0x23,0xE1,0x9A,0x31,0x82,0x8E,0xAD,0x03,0xFF}, - "raYyxUC2RFpNnoYcpd8u9yRcRUofg1VU1i"}, - {{0x21,0xE4,0xC8,0x8B,0x52,0x28,0x7A,0xF8,0x98,0x5C,0x86,0x20,0xB8,0xD6,0x12,0xA6}, - {0x03,0xBD,0x83,0x65,0x5D,0x79,0xDF,0x33,0xE8,0x47,0x28,0xA1,0xBC,0xD1,0x1E,0x9A, + .addr="raYyxUC2RFpNnoYcpd8u9yRcRUofg1VU1i"}, + {.seed={0x21,0xE4,0xC8,0x8B,0x52,0x28,0x7A,0xF8,0x98,0x5C,0x86,0x20,0xB8,0xD6,0x12,0xA6}, + .pubkey={0x03,0xBD,0x83,0x65,0x5D,0x79,0xDF,0x33,0xE8,0x47,0x28,0xA1,0xBC,0xD1,0x1E,0x9A, 0xD7,0x4E,0x03,0xDF,0x2E,0x77,0x12,0xA0,0x88,0xD1,0x90,0x4A,0x36,0xF1,0x0B,0xA5,0xC1}, - {0xED,0x14,0x67,0x13,0xDD,0x51,0xF0,0xF1,0x7F,0x9A,0x46,0xA3,0x2C,0x5E,0xA9,0x8A, + .seckey={0xED,0x14,0x67,0x13,0xDD,0x51,0xF0,0xF1,0x7F,0x9A,0x46,0xA3,0x2C,0x5E,0xA9,0x8A, 0xC6,0xF5,0xA8,0x1C,0x2F,0x41,0x7F,0x81,0x99,0x9B,0xFF,0x1C,0xBA,0x2A,0xF6,0x77}, - "raTGiNwu2Rrv33y1Ssv7BqhbRiyjPQLze4"}, - {{0x78,0x36,0xB1,0x6B,0x67,0x4D,0x8A,0xF1,0x2D,0xDC,0x09,0xF7,0x4D,0x56,0xAC,0x8A}, - {0x03,0x57,0xEE,0x1D,0x13,0x73,0x48,0xD5,0xA2,0x2C,0x9D,0x1F,0x31,0x25,0x4C,0x19, + .addr="raTGiNwu2Rrv33y1Ssv7BqhbRiyjPQLze4"}, + {.seed={0x78,0x36,0xB1,0x6B,0x67,0x4D,0x8A,0xF1,0x2D,0xDC,0x09,0xF7,0x4D,0x56,0xAC,0x8A}, + .pubkey={0x03,0x57,0xEE,0x1D,0x13,0x73,0x48,0xD5,0xA2,0x2C,0x9D,0x1F,0x31,0x25,0x4C,0x19, 0x5B,0x70,0xBE,0x48,0x08,0xCC,0xF0,0xF1,0xE6,0x39,0x98,0x69,0x81,0x65,0x8E,0xFB,0xEB}, - {0x5B,0x6E,0x55,0x4A,0x2D,0x42,0xDA,0x3E,0x9D,0x23,0x57,0xC2,0x69,0xD0,0x0D,0xDF, + .seckey={0x5B,0x6E,0x55,0x4A,0x2D,0x42,0xDA,0x3E,0x9D,0x23,0x57,0xC2,0x69,0xD0,0x0D,0xDF, 0xA8,0xFC,0x67,0x51,0x4F,0xE7,0xC4,0xE5,0xEB,0x36,0x90,0xF2,0x10,0x62,0xE9,0x02}, - "rJ9UHCYDkUrBrJK6Hr24BraygxKzpVG5LJ"}, - {{0x43,0x84,0x27,0x4F,0x79,0xE4,0xCF,0xBB,0x4B,0x10,0xFA,0x6C,0x1D,0xA9,0xFD,0xBD}, - {0x02,0x59,0xCE,0x86,0xBA,0xB6,0xF5,0x4E,0x6A,0xB8,0x83,0xD0,0x9C,0x05,0x98,0x8D, + .addr="rJ9UHCYDkUrBrJK6Hr24BraygxKzpVG5LJ"}, + {.seed={0x43,0x84,0x27,0x4F,0x79,0xE4,0xCF,0xBB,0x4B,0x10,0xFA,0x6C,0x1D,0xA9,0xFD,0xBD}, + .pubkey={0x02,0x59,0xCE,0x86,0xBA,0xB6,0xF5,0x4E,0x6A,0xB8,0x83,0xD0,0x9C,0x05,0x98,0x8D, 0x9E,0x8A,0x71,0x53,0x88,0x32,0xB5,0x0B,0xD4,0xDE,0x1E,0xFA,0x8B,0x13,0x50,0xF8,0xBC}, - {0x97,0x33,0xA7,0x37,0x8B,0x17,0x85,0x80,0x5B,0x16,0x3A,0x72,0xA0,0x13,0x2E,0xFE, + .seckey={0x97,0x33,0xA7,0x37,0x8B,0x17,0x85,0x80,0x5B,0x16,0x3A,0x72,0xA0,0x13,0x2E,0xFE, 0xF6,0x52,0x57,0x35,0x39,0x5F,0x4F,0xE8,0x3C,0xC0,0x3C,0x61,0x63,0xA3,0xA3,0x86}, - "r37FSSzFWe2FtR6kYfKdPeeZ8i6NZ8uDBU"}, - {{0x90,0x6F,0xF5,0xDF,0xA6,0x06,0xE2,0x6D,0xED,0x61,0xC5,0xFE,0x41,0x6F,0xAA,0x09}, - {0x03,0x71,0x70,0x38,0x45,0x72,0x99,0x33,0xA2,0xAB,0xF8,0x4C,0x51,0x82,0x9E,0x34, + .addr="r37FSSzFWe2FtR6kYfKdPeeZ8i6NZ8uDBU"}, + {.seed={0x90,0x6F,0xF5,0xDF,0xA6,0x06,0xE2,0x6D,0xED,0x61,0xC5,0xFE,0x41,0x6F,0xAA,0x09}, + .pubkey={0x03,0x71,0x70,0x38,0x45,0x72,0x99,0x33,0xA2,0xAB,0xF8,0x4C,0x51,0x82,0x9E,0x34, 0x00,0xA7,0x41,0x0F,0x9E,0x57,0x66,0x5C,0x65,0xD1,0xD6,0x07,0xF2,0xD1,0x67,0x52,0x2F}, - {0x55,0x80,0x14,0xCD,0xC8,0x08,0xB5,0x9A,0x6A,0x32,0x2D,0x61,0xB9,0xEA,0xE1,0x7B, + .seckey={0x55,0x80,0x14,0xCD,0xC8,0x08,0xB5,0x9A,0x6A,0x32,0x2D,0x61,0xB9,0xEA,0xE1,0x7B, 0xDD,0x73,0xCD,0x52,0x4A,0xDA,0x8B,0x7C,0x55,0x2E,0xAE,0x90,0xDB,0x65,0x18,0x9B}, - "rK5rBKf8uDunrTTNY7GWmB3Jnasg2CEuiE"}, - {{0x85,0x3C,0x3B,0xE4,0xD9,0x9F,0xF2,0x03,0x3D,0xF0,0xE2,0x35,0x40,0xA4,0xF3,0x7D}, - {0x03,0x44,0xB4,0x5E,0x37,0xCD,0xD1,0x73,0x88,0xD6,0xE0,0x20,0xED,0x0A,0x52,0x8D, + .addr="rK5rBKf8uDunrTTNY7GWmB3Jnasg2CEuiE"}, + {.seed={0x85,0x3C,0x3B,0xE4,0xD9,0x9F,0xF2,0x03,0x3D,0xF0,0xE2,0x35,0x40,0xA4,0xF3,0x7D}, + .pubkey={0x03,0x44,0xB4,0x5E,0x37,0xCD,0xD1,0x73,0x88,0xD6,0xE0,0x20,0xED,0x0A,0x52,0x8D, 0x94,0x0D,0x43,0x84,0x86,0x36,0x3B,0x5D,0x1D,0x6A,0xB0,0x3C,0x5E,0xDD,0xEC,0x1D,0x1E}, - {0xD4,0x88,0x5F,0x26,0xE9,0xB9,0x8F,0x46,0xAA,0x3C,0xD2,0x26,0x6A,0x57,0x32,0x48, + .seckey={0xD4,0x88,0x5F,0x26,0xE9,0xB9,0x8F,0x46,0xAA,0x3C,0xD2,0x26,0x6A,0x57,0x32,0x48, 0x61,0x03,0xD5,0x7B,0x5F,0x52,0xB3,0x49,0xC1,0xAA,0x4F,0xF6,0xDC,0x63,0xEE,0x28}, - "rB9xKaxuHXDxe3fYQSoTGTBN5LkMsXp7vB"}, - {{0x15,0x6F,0x19,0xDA,0xC4,0x69,0x5A,0x47,0x9C,0x8F,0x2D,0x59,0x90,0xC7,0x7A,0x96}, - {0x03,0x51,0x5A,0xAA,0x83,0x0A,0xDA,0xB9,0xD8,0xA5,0x1C,0x35,0x41,0xD0,0x0A,0xF8, + .addr="rB9xKaxuHXDxe3fYQSoTGTBN5LkMsXp7vB"}, + {.seed={0x15,0x6F,0x19,0xDA,0xC4,0x69,0x5A,0x47,0x9C,0x8F,0x2D,0x59,0x90,0xC7,0x7A,0x96}, + .pubkey={0x03,0x51,0x5A,0xAA,0x83,0x0A,0xDA,0xB9,0xD8,0xA5,0x1C,0x35,0x41,0xD0,0x0A,0xF8, 0x25,0x05,0x15,0x0A,0xD4,0x5B,0x9D,0x0A,0x66,0x79,0x97,0xCE,0x01,0x88,0xE7,0x57,0xA8}, - {0xEE,0x73,0xBC,0xC7,0xEA,0x9E,0x93,0x2D,0xA1,0x7A,0x28,0xD6,0x7E,0x2A,0x85,0x99, + .seckey={0xEE,0x73,0xBC,0xC7,0xEA,0x9E,0x93,0x2D,0xA1,0x7A,0x28,0xD6,0x7E,0x2A,0x85,0x99, 0x97,0x6D,0x18,0x29,0x60,0x1F,0x7D,0x17,0xD8,0x6D,0x68,0x53,0x82,0x2E,0x4D,0xF2}, - "rM83yYQQN6aLjfobwvfYMR2r6xo9bE66ZY"}, - {{0x95,0xCF,0x0F,0x72,0xD7,0xF6,0x87,0x8A,0x76,0xE6,0xF8,0x4E,0x96,0xFD,0x34,0x2B}, - {0x03,0xA7,0x5E,0x58,0x08,0xAB,0x79,0x48,0x34,0xAF,0xBB,0x7B,0x7C,0x14,0x3A,0x48, + .addr="rM83yYQQN6aLjfobwvfYMR2r6xo9bE66ZY"}, + {.seed={0x95,0xCF,0x0F,0x72,0xD7,0xF6,0x87,0x8A,0x76,0xE6,0xF8,0x4E,0x96,0xFD,0x34,0x2B}, + .pubkey={0x03,0xA7,0x5E,0x58,0x08,0xAB,0x79,0x48,0x34,0xAF,0xBB,0x7B,0x7C,0x14,0x3A,0x48, 0x83,0x53,0xF5,0x03,0xB2,0xFC,0x79,0x20,0x05,0x3E,0xDA,0x92,0xE3,0xFB,0xFE,0x53,0xA8}, - {0x43,0x6F,0x3A,0x67,0xC1,0xE4,0x2F,0x61,0x05,0x20,0x46,0x7D,0xB1,0x94,0x2B,0xDB, + .seckey={0x43,0x6F,0x3A,0x67,0xC1,0xE4,0x2F,0x61,0x05,0x20,0x46,0x7D,0xB1,0x94,0x2B,0xDB, 0xE9,0xD2,0xD6,0xE1,0x14,0x13,0xEB,0xE1,0x9B,0x87,0x63,0xBC,0x7C,0xCF,0x27,0x57}, - "rJ3MkKKsTAxzgW87YTZ6T5kauftDAa21hn"}, - {{0x27,0x8E,0x7E,0x47,0x39,0x7D,0xCC,0xF5,0x4B,0xBF,0x52,0x79,0xD8,0x5B,0x60,0x52}, - {0x02,0xA9,0x07,0xF0,0x09,0xFD,0x99,0xB5,0x9E,0x8C,0x90,0x46,0x99,0x59,0xCF,0xA9, + .addr="rJ3MkKKsTAxzgW87YTZ6T5kauftDAa21hn"}, + {.seed={0x27,0x8E,0x7E,0x47,0x39,0x7D,0xCC,0xF5,0x4B,0xBF,0x52,0x79,0xD8,0x5B,0x60,0x52}, + .pubkey={0x02,0xA9,0x07,0xF0,0x09,0xFD,0x99,0xB5,0x9E,0x8C,0x90,0x46,0x99,0x59,0xCF,0xA9, 0xEE,0xB8,0xE6,0x9F,0x66,0x8C,0xE3,0x21,0x15,0xAE,0x48,0x8F,0x37,0xDA,0x4B,0x3D,0xB5}, - {0x71,0xD8,0x4B,0x78,0x69,0x6B,0x9E,0x93,0x97,0xDB,0x07,0xB2,0x3D,0x4C,0x4B,0x6D, + .seckey={0x71,0xD8,0x4B,0x78,0x69,0x6B,0x9E,0x93,0x97,0xDB,0x07,0xB2,0x3D,0x4C,0x4B,0x6D, 0x7C,0x0B,0x87,0x9D,0x18,0xB5,0x45,0x61,0x27,0xF4,0x78,0x42,0xD8,0xE7,0x20,0xB5}, - "rMMn8XqJvtmn2CN3E19vvjA3Y8GLWdgwi"}, - {{0x92,0xF0,0x1F,0xC7,0x8F,0x22,0x58,0xB1,0xA9,0x70,0xF4,0xA2,0xDD,0xDD,0xD3,0xA1}, - {0x03,0x0C,0x28,0x5D,0x66,0x77,0x0A,0xFD,0x42,0xAB,0xAE,0x15,0x18,0x74,0x7A,0x64, + .addr="rMMn8XqJvtmn2CN3E19vvjA3Y8GLWdgwi"}, + {.seed={0x92,0xF0,0x1F,0xC7,0x8F,0x22,0x58,0xB1,0xA9,0x70,0xF4,0xA2,0xDD,0xDD,0xD3,0xA1}, + .pubkey={0x03,0x0C,0x28,0x5D,0x66,0x77,0x0A,0xFD,0x42,0xAB,0xAE,0x15,0x18,0x74,0x7A,0x64, 0x33,0xB7,0xD5,0x87,0x7A,0x92,0x66,0x78,0x05,0x78,0x2C,0x36,0xDD,0xEA,0x9A,0xF3,0x8F}, - {0x44,0xC0,0x46,0xE7,0x1D,0x7E,0x99,0xAE,0x70,0xDE,0x9B,0x97,0x1A,0x48,0xCA,0xB4, + .seckey={0x44,0xC0,0x46,0xE7,0x1D,0x7E,0x99,0xAE,0x70,0xDE,0x9B,0x97,0x1A,0x48,0xCA,0xB4, 0x26,0x06,0xB4,0xD7,0x81,0xE8,0x84,0x40,0x9B,0x8C,0xC6,0xB3,0x14,0xE1,0xA5,0xCA}, - "rMRLSmwj5SPYidP7UG6vLVmZm849vj9Boy"}, - {{0x4D,0x0A,0x15,0x15,0x19,0x8D,0xAC,0xF3,0xAA,0x74,0x70,0x06,0x24,0x75,0xE1,0x71}, - {0x02,0x3F,0xBA,0x9F,0xF3,0x33,0x71,0x35,0x12,0xE9,0xA3,0x16,0xA8,0x7A,0xBE,0x5E, + .addr="rMRLSmwj5SPYidP7UG6vLVmZm849vj9Boy"}, + {.seed={0x4D,0x0A,0x15,0x15,0x19,0x8D,0xAC,0xF3,0xAA,0x74,0x70,0x06,0x24,0x75,0xE1,0x71}, + .pubkey={0x02,0x3F,0xBA,0x9F,0xF3,0x33,0x71,0x35,0x12,0xE9,0xA3,0x16,0xA8,0x7A,0xBE,0x5E, 0x22,0x2D,0xE0,0xE1,0x82,0xE1,0x8F,0x4B,0xE8,0x05,0xC7,0xE4,0xE1,0x95,0xA8,0x58,0x27}, - {0x62,0x76,0x1B,0xC1,0xD8,0x79,0x83,0xC7,0xA5,0x49,0x1E,0x7F,0x4A,0x0F,0x6C,0x04, + .seckey={0x62,0x76,0x1B,0xC1,0xD8,0x79,0x83,0xC7,0xA5,0x49,0x1E,0x7F,0x4A,0x0F,0x6C,0x04, 0xC1,0xB4,0x36,0x17,0x31,0x99,0xFF,0x78,0x07,0x36,0xD4,0x58,0x3F,0xA9,0x24,0xA5}, - "rEwu1cBZ37WaTF6aJDMQKTKxBBok4bkeW9"}, - {{0xF9,0x3E,0x0D,0xFE,0xEB,0xFC,0x30,0x3B,0x2F,0x13,0x7C,0xF8,0xCF,0x9F,0x25,0x3B}, - {0x03,0x1B,0x7E,0xEC,0x18,0x2A,0xEA,0x64,0xB9,0x1F,0xF6,0x13,0x31,0x28,0x6F,0xC9, + .addr="rEwu1cBZ37WaTF6aJDMQKTKxBBok4bkeW9"}, + {.seed={0xF9,0x3E,0x0D,0xFE,0xEB,0xFC,0x30,0x3B,0x2F,0x13,0x7C,0xF8,0xCF,0x9F,0x25,0x3B}, + .pubkey={0x03,0x1B,0x7E,0xEC,0x18,0x2A,0xEA,0x64,0xB9,0x1F,0xF6,0x13,0x31,0x28,0x6F,0xC9, 0xC5,0xFA,0x62,0x91,0x8F,0x06,0xFF,0x04,0x84,0xF2,0x2C,0x7D,0x9B,0x11,0xBB,0xA2,0xC4}, - {0x4D,0x79,0xBC,0x7F,0x52,0x29,0x8C,0xEB,0x31,0x37,0xE9,0x83,0x31,0x28,0x8B,0x62, + .seckey={0x4D,0x79,0xBC,0x7F,0x52,0x29,0x8C,0xEB,0x31,0x37,0xE9,0x83,0x31,0x28,0x8B,0x62, 0xDE,0xB6,0x4C,0xCD,0x41,0x28,0x4B,0x59,0xBF,0xA7,0x3F,0xFA,0x99,0xE5,0x95,0xB4}, - "raaSAqSnLbGGyfpxgk7jNfyc3BwVdv6YFS"}, - {{0xFC,0xB2,0x17,0xA7,0xD4,0xE6,0x6A,0x5C,0x27,0x9F,0xED,0xFF,0x22,0xAD,0x35,0x8A}, - {0x02,0xB9,0xCE,0x1E,0xC9,0x4F,0x42,0x20,0x6E,0xCD,0xC0,0x11,0x65,0xAE,0xC9,0x28, + .addr="raaSAqSnLbGGyfpxgk7jNfyc3BwVdv6YFS"}, + {.seed={0xFC,0xB2,0x17,0xA7,0xD4,0xE6,0x6A,0x5C,0x27,0x9F,0xED,0xFF,0x22,0xAD,0x35,0x8A}, + .pubkey={0x02,0xB9,0xCE,0x1E,0xC9,0x4F,0x42,0x20,0x6E,0xCD,0xC0,0x11,0x65,0xAE,0xC9,0x28, 0x65,0xAB,0x84,0x97,0x59,0x6F,0x03,0x37,0xCA,0xEF,0xE1,0xF1,0x86,0xA5,0x6B,0xF9,0x24}, - {0x95,0x2E,0xBD,0xC1,0x1E,0xCB,0x7C,0x67,0xE6,0x90,0xF7,0x9D,0x7B,0xB9,0x72,0x3C, + .seckey={0x95,0x2E,0xBD,0xC1,0x1E,0xCB,0x7C,0x67,0xE6,0x90,0xF7,0x9D,0x7B,0xB9,0x72,0x3C, 0xCE,0x84,0xD6,0x0C,0x37,0x23,0xDE,0x71,0x66,0x9E,0xD8,0xF5,0xCA,0x7D,0xE5,0x60}, - "raCkMBRoTrd41BuoAQq6f54E8iA97Fgwiq"}, - {{0x20,0xE6,0xD1,0xE2,0x10,0x0D,0xF4,0x2C,0x39,0x81,0x03,0x61,0xEB,0x54,0xFA,0x6B}, - {0x02,0x51,0x6D,0xF5,0x75,0xF9,0x9E,0x61,0xB4,0xBE,0x78,0xFD,0xCC,0x7D,0x2E,0x53, + .addr="raCkMBRoTrd41BuoAQq6f54E8iA97Fgwiq"}, + {.seed={0x20,0xE6,0xD1,0xE2,0x10,0x0D,0xF4,0x2C,0x39,0x81,0x03,0x61,0xEB,0x54,0xFA,0x6B}, + .pubkey={0x02,0x51,0x6D,0xF5,0x75,0xF9,0x9E,0x61,0xB4,0xBE,0x78,0xFD,0xCC,0x7D,0x2E,0x53, 0x9E,0x3A,0x59,0xD4,0x6B,0x2E,0xA9,0xEA,0x90,0x2F,0x5C,0xBE,0x3C,0xC3,0xA1,0x71,0xA9}, - {0x4F,0x50,0xD3,0x78,0x7F,0x50,0x4D,0x4E,0xCF,0xD8,0xAE,0x40,0xD8,0xA0,0xB1,0xBE, + .seckey={0x4F,0x50,0xD3,0x78,0x7F,0x50,0x4D,0x4E,0xCF,0xD8,0xAE,0x40,0xD8,0xA0,0xB1,0xBE, 0x92,0x2E,0xD1,0x0F,0x1B,0x26,0x8A,0x97,0xF3,0x36,0xB2,0x1D,0xCB,0x9F,0x87,0x92}, - "rnqPbY4BaFVNrbt2YwLQUSwxk7CPRJChf2"}, - {{0x63,0x09,0x81,0x8C,0xB7,0xE1,0xFC,0x55,0x77,0xBE,0xC7,0xDE,0x6C,0x5A,0x2B,0x73}, - {0x03,0x64,0x7B,0x2F,0xF7,0xD8,0xC0,0x56,0xFC,0x19,0x0F,0xF1,0x5B,0x6F,0x51,0x53, + .addr="rnqPbY4BaFVNrbt2YwLQUSwxk7CPRJChf2"}, + {.seed={0x63,0x09,0x81,0x8C,0xB7,0xE1,0xFC,0x55,0x77,0xBE,0xC7,0xDE,0x6C,0x5A,0x2B,0x73}, + .pubkey={0x03,0x64,0x7B,0x2F,0xF7,0xD8,0xC0,0x56,0xFC,0x19,0x0F,0xF1,0x5B,0x6F,0x51,0x53, 0x00,0x1F,0xF7,0x9C,0x44,0x98,0xD7,0x34,0x72,0x21,0x89,0xD3,0xE8,0x00,0xBC,0x01,0xDA}, - {0xC5,0x0C,0x5C,0x92,0xB4,0xFB,0x2D,0x6A,0xC0,0xC6,0xCA,0xC0,0xD5,0xB4,0x26,0xC5, + .seckey={0xC5,0x0C,0x5C,0x92,0xB4,0xFB,0x2D,0x6A,0xC0,0xC6,0xCA,0xC0,0xD5,0xB4,0x26,0xC5, 0x03,0xAE,0xE7,0x72,0xEA,0xF1,0x71,0x3C,0xDC,0xE4,0xE4,0x78,0xFF,0x28,0x22,0xAF}, - "rsBwJKLppzK5XK6WscKXW96NT4ajjYN4oV"}, - {{0xBE,0x60,0x25,0x4D,0xB3,0xED,0xDE,0xE2,0x47,0x69,0x25,0x83,0x80,0xA6,0xF7,0x94}, - {0x02,0xD8,0x4C,0x88,0xBF,0x11,0x7E,0x9E,0xFB,0x30,0xC9,0x63,0x08,0x87,0x04,0x9A, + .addr="rsBwJKLppzK5XK6WscKXW96NT4ajjYN4oV"}, + {.seed={0xBE,0x60,0x25,0x4D,0xB3,0xED,0xDE,0xE2,0x47,0x69,0x25,0x83,0x80,0xA6,0xF7,0x94}, + .pubkey={0x02,0xD8,0x4C,0x88,0xBF,0x11,0x7E,0x9E,0xFB,0x30,0xC9,0x63,0x08,0x87,0x04,0x9A, 0xF2,0xB2,0x33,0x52,0xBC,0x77,0x81,0x3B,0x76,0x5B,0x56,0x0D,0xC5,0x49,0x21,0x20,0xE3}, - {0xAC,0x21,0xC4,0x05,0xED,0x57,0x17,0xB0,0xB7,0x20,0x6C,0x0A,0x59,0x1C,0x6A,0x32, + .seckey={0xAC,0x21,0xC4,0x05,0xED,0x57,0x17,0xB0,0xB7,0x20,0x6C,0x0A,0x59,0x1C,0x6A,0x32, 0xCF,0xD1,0x61,0xC2,0x18,0x2D,0xE4,0x24,0x88,0xA0,0xE2,0xE9,0xC5,0x7E,0x72,0xDB}, - "rGh8eA3PAbpXF2i4YuWdJGknvXxjLs7UFn"}, - {{0x92,0x9A,0x69,0xD1,0xA4,0x72,0x50,0xA4,0x40,0x58,0x00,0xB6,0x93,0xC4,0x0F,0x65}, - {0x03,0xB4,0xCE,0x74,0x68,0x26,0x64,0x2B,0xD9,0x2F,0x7E,0xC0,0xB3,0x6A,0x25,0xAA, + .addr="rGh8eA3PAbpXF2i4YuWdJGknvXxjLs7UFn"}, + {.seed={0x92,0x9A,0x69,0xD1,0xA4,0x72,0x50,0xA4,0x40,0x58,0x00,0xB6,0x93,0xC4,0x0F,0x65}, + .pubkey={0x03,0xB4,0xCE,0x74,0x68,0x26,0x64,0x2B,0xD9,0x2F,0x7E,0xC0,0xB3,0x6A,0x25,0xAA, 0xA8,0x72,0xE0,0x91,0x2A,0x2F,0x09,0x49,0x6B,0x5D,0x08,0xDD,0x0D,0xC3,0x29,0x7A,0xEA}, - {0x3D,0x6A,0x38,0x3A,0xCC,0x5D,0x22,0xD9,0x44,0xD2,0x84,0xE7,0xA2,0x73,0x34,0xE4, + .seckey={0x3D,0x6A,0x38,0x3A,0xCC,0x5D,0x22,0xD9,0x44,0xD2,0x84,0xE7,0xA2,0x73,0x34,0xE4, 0xE3,0x01,0x2A,0x0B,0x0C,0x5B,0x7E,0xAA,0x64,0xD0,0x41,0xE4,0x1E,0xE3,0x1D,0x38}, - "rPWb2cxWuXV39hFBJgEup4enkiBXDMMuPs"}, - {{0x72,0xF2,0x97,0x35,0x2E,0x8F,0x35,0xB3,0x4D,0x2E,0x6B,0xC7,0x3A,0x42,0xDD,0xC9}, - {0x02,0xB5,0x28,0xB7,0x7B,0x4E,0xA1,0xFC,0xC5,0x0D,0x00,0x72,0xD9,0x0B,0x69,0x46, + .addr="rPWb2cxWuXV39hFBJgEup4enkiBXDMMuPs"}, + {.seed={0x72,0xF2,0x97,0x35,0x2E,0x8F,0x35,0xB3,0x4D,0x2E,0x6B,0xC7,0x3A,0x42,0xDD,0xC9}, + .pubkey={0x02,0xB5,0x28,0xB7,0x7B,0x4E,0xA1,0xFC,0xC5,0x0D,0x00,0x72,0xD9,0x0B,0x69,0x46, 0x58,0x60,0xD6,0xD1,0x81,0xC1,0x1B,0xC4,0x8D,0xDD,0x01,0xAA,0x35,0x53,0x85,0x6E,0xBA}, - {0xA9,0x21,0xF9,0x54,0xF4,0xF7,0x78,0xA6,0xC9,0x78,0x90,0x46,0xED,0x12,0xCC,0xBA, + .seckey={0xA9,0x21,0xF9,0x54,0xF4,0xF7,0x78,0xA6,0xC9,0x78,0x90,0x46,0xED,0x12,0xCC,0xBA, 0x06,0x9C,0x79,0x71,0x8D,0x24,0xA0,0x33,0xC4,0x7B,0x91,0xDF,0x41,0xEC,0x17,0x00}, - "rMMikVEYA9b7cyA82F4Lezpccti8coi39u"}, - {{0xC8,0x55,0x71,0x45,0x38,0xC5,0xF7,0xAA,0xC4,0x62,0x05,0xDC,0xC5,0x4E,0x49,0xCC}, - {0x02,0xBB,0xD4,0x85,0x34,0x2E,0x89,0xEA,0x33,0x31,0xE7,0xC8,0x1C,0xAE,0x1D,0xE6, + .addr="rMMikVEYA9b7cyA82F4Lezpccti8coi39u"}, + {.seed={0xC8,0x55,0x71,0x45,0x38,0xC5,0xF7,0xAA,0xC4,0x62,0x05,0xDC,0xC5,0x4E,0x49,0xCC}, + .pubkey={0x02,0xBB,0xD4,0x85,0x34,0x2E,0x89,0xEA,0x33,0x31,0xE7,0xC8,0x1C,0xAE,0x1D,0xE6, 0x64,0x7C,0xE5,0xBE,0x2A,0xA2,0xF8,0xB9,0xAD,0x6E,0x44,0x66,0xD4,0xD8,0x3E,0xDC,0x71}, - {0x52,0xB9,0x26,0x2D,0xED,0xD5,0x1D,0xB5,0xA0,0x48,0x1A,0x64,0x32,0xD2,0xAE,0x2E, + .seckey={0x52,0xB9,0x26,0x2D,0xED,0xD5,0x1D,0xB5,0xA0,0x48,0x1A,0x64,0x32,0xD2,0xAE,0x2E, 0x95,0x12,0x66,0x0F,0xF1,0x04,0x99,0xBD,0xE2,0xA9,0x4A,0x7D,0x42,0x64,0x84,0xC0}, - "r4cJGjZb7v6u9oAG5vZHbzAZeKjG3oubhT"}, - {{0xA7,0x8F,0xA2,0xA0,0x01,0xEE,0xD7,0xC9,0xE4,0x8D,0x36,0x1B,0xBA,0xDD,0xB3,0x8C}, - {0x02,0x0D,0xAA,0xC3,0x5A,0xB5,0xEB,0x1D,0x24,0xFA,0xE0,0x10,0x8D,0xBC,0xE8,0xEA, + .addr="r4cJGjZb7v6u9oAG5vZHbzAZeKjG3oubhT"}, + {.seed={0xA7,0x8F,0xA2,0xA0,0x01,0xEE,0xD7,0xC9,0xE4,0x8D,0x36,0x1B,0xBA,0xDD,0xB3,0x8C}, + .pubkey={0x02,0x0D,0xAA,0xC3,0x5A,0xB5,0xEB,0x1D,0x24,0xFA,0xE0,0x10,0x8D,0xBC,0xE8,0xEA, 0x37,0xD4,0xEE,0xA7,0x1C,0xFA,0xF2,0x0C,0x24,0xAF,0xA1,0xF9,0x92,0x1E,0xD4,0x9B,0x67}, - {0xE8,0xFA,0x0D,0xEC,0x05,0x35,0xE5,0x46,0x5D,0x75,0x24,0x93,0x84,0x48,0x9B,0x55, + .seckey={0xE8,0xFA,0x0D,0xEC,0x05,0x35,0xE5,0x46,0x5D,0x75,0x24,0x93,0x84,0x48,0x9B,0x55, 0x16,0xA5,0x1D,0x9F,0xBF,0xB8,0xC3,0x9A,0x91,0xA8,0x63,0xF8,0xED,0x2C,0xC9,0x41}, - "rLEDPnaJhjcDYzFvYufDTaJvXBokJka1Wf"}, - {{0x8D,0x3B,0xC5,0x48,0x77,0x83,0x56,0x43,0xB9,0xA7,0x6A,0xBE,0xBE,0x16,0xEA,0xE9}, - {0x03,0x54,0x44,0x02,0x4A,0x23,0x22,0x3A,0xCB,0xA9,0x71,0xD5,0x7C,0x74,0xF4,0x25, + .addr="rLEDPnaJhjcDYzFvYufDTaJvXBokJka1Wf"}, + {.seed={0x8D,0x3B,0xC5,0x48,0x77,0x83,0x56,0x43,0xB9,0xA7,0x6A,0xBE,0xBE,0x16,0xEA,0xE9}, + .pubkey={0x03,0x54,0x44,0x02,0x4A,0x23,0x22,0x3A,0xCB,0xA9,0x71,0xD5,0x7C,0x74,0xF4,0x25, 0x49,0x77,0x9D,0x33,0xDC,0x3A,0x8E,0x61,0xF8,0xE7,0x34,0x5E,0x25,0x5D,0x8B,0x81,0x40}, - {0xCB,0x6F,0x1C,0xA0,0x22,0x68,0x5F,0xF1,0x4E,0x0C,0xBF,0xB7,0x90,0x4F,0x3A,0x13, + .seckey={0xCB,0x6F,0x1C,0xA0,0x22,0x68,0x5F,0xF1,0x4E,0x0C,0xBF,0xB7,0x90,0x4F,0x3A,0x13, 0x17,0x5E,0xEF,0x08,0x47,0x44,0xD3,0xA3,0x0A,0x21,0x75,0x9B,0x8A,0xB7,0xDD,0x94}, - "rnxJTkqbxpbdoC1nPQvAfPDi8zpmsschsR"}, - {{0x27,0x1B,0xEA,0xD4,0xBF,0x66,0x55,0x06,0xCE,0x06,0x7D,0xA6,0xF8,0xAF,0xFC,0xF3}, - {0x03,0x01,0xC3,0xBE,0xA1,0xD1,0xA8,0x57,0x5E,0x29,0x85,0x56,0x93,0x81,0x12,0xD0, + .addr="rnxJTkqbxpbdoC1nPQvAfPDi8zpmsschsR"}, + {.seed={0x27,0x1B,0xEA,0xD4,0xBF,0x66,0x55,0x06,0xCE,0x06,0x7D,0xA6,0xF8,0xAF,0xFC,0xF3}, + .pubkey={0x03,0x01,0xC3,0xBE,0xA1,0xD1,0xA8,0x57,0x5E,0x29,0x85,0x56,0x93,0x81,0x12,0xD0, 0x41,0x7F,0x08,0x57,0xCC,0x7C,0x15,0xCC,0x75,0x22,0x5E,0x51,0xEC,0x3A,0x1A,0xAF,0x17}, - {0xA3,0x2A,0x64,0x81,0xC8,0xFA,0xFB,0xD0,0xF6,0x7C,0x80,0xD6,0xD4,0x30,0x98,0x4E, + .seckey={0xA3,0x2A,0x64,0x81,0xC8,0xFA,0xFB,0xD0,0xF6,0x7C,0x80,0xD6,0xD4,0x30,0x98,0x4E, 0xC1,0xDA,0x9E,0x63,0x8E,0xDE,0x69,0x3C,0xE1,0xFA,0xD0,0x63,0xCA,0xA8,0x62,0xD9}, - "rENrUzb4cctMQApEcDRLRNkwHbVencPYSn"}, - {{0x3B,0x1A,0x33,0x24,0x72,0xF4,0x1A,0xF6,0xDA,0x71,0x5F,0x02,0x0E,0x90,0x96,0xAE}, - {0x03,0x5C,0x34,0x4A,0x9B,0x4A,0xE2,0xFF,0x1B,0xF4,0x5C,0xDE,0x91,0x92,0xA2,0xF6, + .addr="rENrUzb4cctMQApEcDRLRNkwHbVencPYSn"}, + {.seed={0x3B,0x1A,0x33,0x24,0x72,0xF4,0x1A,0xF6,0xDA,0x71,0x5F,0x02,0x0E,0x90,0x96,0xAE}, + .pubkey={0x03,0x5C,0x34,0x4A,0x9B,0x4A,0xE2,0xFF,0x1B,0xF4,0x5C,0xDE,0x91,0x92,0xA2,0xF6, 0x23,0x27,0x0E,0x0B,0xC0,0x0C,0xB3,0x31,0x9B,0x18,0x33,0x11,0x1A,0x37,0x76,0xCE,0x57}, - {0x51,0xBD,0x74,0x0F,0xCD,0xEC,0x6D,0x96,0x36,0xB4,0xC8,0x53,0x11,0x00,0xD7,0xB5, + .seckey={0x51,0xBD,0x74,0x0F,0xCD,0xEC,0x6D,0x96,0x36,0xB4,0xC8,0x53,0x11,0x00,0xD7,0xB5, 0xD6,0xE9,0x9B,0xED,0x27,0x85,0x6C,0x48,0x22,0xE7,0x13,0x94,0xCD,0x85,0x7D,0xA9}, - "rraNgbPXeioSQyDw9gq1otuJURr4tkrVbR"}, - {{0xC6,0xC2,0x5B,0x54,0xB5,0xF3,0x67,0x54,0xE5,0xE1,0x3E,0x07,0xFB,0x8B,0x9A,0x12}, - {0x02,0x44,0x78,0x11,0x6A,0x52,0x0F,0x16,0xCD,0xD9,0x0E,0x73,0xFF,0xDD,0x73,0x50, + .addr="rraNgbPXeioSQyDw9gq1otuJURr4tkrVbR"}, + {.seed={0xC6,0xC2,0x5B,0x54,0xB5,0xF3,0x67,0x54,0xE5,0xE1,0x3E,0x07,0xFB,0x8B,0x9A,0x12}, + .pubkey={0x02,0x44,0x78,0x11,0x6A,0x52,0x0F,0x16,0xCD,0xD9,0x0E,0x73,0xFF,0xDD,0x73,0x50, 0xAE,0x40,0x3F,0x70,0xAF,0x1C,0xC6,0xB6,0xC9,0x07,0xE3,0x49,0x9D,0xF0,0x86,0xBB,0x01}, - {0x0C,0x13,0x9C,0x31,0x96,0xAB,0xCD,0x88,0x76,0x4F,0x75,0x28,0xCE,0xCC,0x17,0x4A, + .seckey={0x0C,0x13,0x9C,0x31,0x96,0xAB,0xCD,0x88,0x76,0x4F,0x75,0x28,0xCE,0xCC,0x17,0x4A, 0x02,0xA7,0x75,0xF5,0x9A,0xA7,0xA7,0x03,0x01,0x38,0xD4,0xFD,0x1D,0x2B,0x57,0x82}, - "rraDh9AGcTXLCZ6mX6v1vXT8kTpZ9A2E4o"}, - {{0x82,0x34,0xCA,0xC5,0x2D,0x12,0x9E,0xAC,0x87,0xA8,0xA3,0x96,0x25,0x24,0x7C,0x3C}, - {0x03,0xA0,0x24,0xFA,0xB8,0x0C,0x29,0x10,0x22,0xE8,0x3E,0xEE,0xD0,0xBB,0xA1,0x0C, + .addr="rraDh9AGcTXLCZ6mX6v1vXT8kTpZ9A2E4o"}, + {.seed={0x82,0x34,0xCA,0xC5,0x2D,0x12,0x9E,0xAC,0x87,0xA8,0xA3,0x96,0x25,0x24,0x7C,0x3C}, + .pubkey={0x03,0xA0,0x24,0xFA,0xB8,0x0C,0x29,0x10,0x22,0xE8,0x3E,0xEE,0xD0,0xBB,0xA1,0x0C, 0x58,0x2D,0x7F,0x74,0x99,0x87,0xE4,0x86,0x3D,0xCD,0xFD,0x4C,0x97,0xEB,0xEF,0xF1,0x88}, - {0x8C,0xA9,0x94,0xCD,0xF0,0x44,0xD1,0xE0,0x3C,0xC2,0xD8,0x81,0xE5,0x88,0x41,0xF8, + .seckey={0x8C,0xA9,0x94,0xCD,0xF0,0x44,0xD1,0xE0,0x3C,0xC2,0xD8,0x81,0xE5,0x88,0x41,0xF8, 0xD6,0x2F,0xDF,0x28,0x23,0x04,0x7A,0x9A,0x9D,0x1E,0x53,0x35,0x56,0x12,0xD1,0x9E}, - "rfHFE2euELEfCS1jSqSZbZct7K3rDYxJiA"}, - {{0x60,0x31,0x24,0xCB,0xD1,0xD6,0xFF,0xCB,0x2A,0xC0,0x07,0x0E,0xC2,0x34,0x84,0xE0}, - {0x03,0x08,0xE5,0x04,0xD0,0x1D,0xB2,0x94,0xB0,0xDB,0xD1,0xD6,0x9F,0xCF,0xE7,0x87, + .addr="rfHFE2euELEfCS1jSqSZbZct7K3rDYxJiA"}, + {.seed={0x60,0x31,0x24,0xCB,0xD1,0xD6,0xFF,0xCB,0x2A,0xC0,0x07,0x0E,0xC2,0x34,0x84,0xE0}, + .pubkey={0x03,0x08,0xE5,0x04,0xD0,0x1D,0xB2,0x94,0xB0,0xDB,0xD1,0xD6,0x9F,0xCF,0xE7,0x87, 0x70,0x83,0x81,0xF4,0x99,0x04,0xE9,0x51,0x12,0x6F,0xAF,0x27,0x51,0xF7,0x26,0xC0,0xCC}, - {0xD1,0x76,0x39,0xE8,0x2D,0xDB,0x35,0x67,0x24,0x19,0xFE,0x65,0x25,0x5B,0xE2,0x43, + .seckey={0xD1,0x76,0x39,0xE8,0x2D,0xDB,0x35,0x67,0x24,0x19,0xFE,0x65,0x25,0x5B,0xE2,0x43, 0x56,0x45,0xE0,0x20,0x69,0xCF,0xD9,0x32,0x21,0xB6,0xD0,0xEF,0x3A,0x3E,0xBD,0xD9}, - "rh1KG2QmCBwZiNJpVzJxw2mDR7bQz6QeeA"}, - {{0xF3,0x8C,0xD6,0x55,0x1D,0xCF,0x05,0xC1,0x09,0xFD,0x04,0xDD,0x06,0xCF,0x04,0xDB}, - {0x02,0xDA,0xBD,0xB1,0x5F,0x23,0xB9,0x23,0xD6,0x3D,0x6F,0xC3,0x96,0x68,0xB3,0xAC, + .addr="rh1KG2QmCBwZiNJpVzJxw2mDR7bQz6QeeA"}, + {.seed={0xF3,0x8C,0xD6,0x55,0x1D,0xCF,0x05,0xC1,0x09,0xFD,0x04,0xDD,0x06,0xCF,0x04,0xDB}, + .pubkey={0x02,0xDA,0xBD,0xB1,0x5F,0x23,0xB9,0x23,0xD6,0x3D,0x6F,0xC3,0x96,0x68,0xB3,0xAC, 0x77,0x58,0xA2,0x17,0x46,0xE9,0xE8,0xC3,0x91,0x91,0xCB,0xFA,0x89,0x43,0xB1,0x77,0xF4}, - {0x29,0x59,0xF0,0xAF,0x1B,0xDB,0x52,0x16,0xB8,0x26,0x42,0xEB,0x87,0x1C,0x90,0xBC, + .seckey={0x29,0x59,0xF0,0xAF,0x1B,0xDB,0x52,0x16,0xB8,0x26,0x42,0xEB,0x87,0x1C,0x90,0xBC, 0x96,0xCC,0xE9,0xE4,0x95,0xBF,0xE6,0x02,0x5D,0xDB,0x26,0x2E,0x1B,0x6D,0xC6,0x8E}, - "rfsgasx89kAvYvqhLmJt8Pn5JsHFnZadwm"}, - {{0x30,0x9F,0xC8,0x61,0x10,0x78,0xE1,0x2C,0x0B,0x3F,0x80,0x01,0x16,0x0D,0x00,0xB0}, - {0x02,0x23,0xE5,0x05,0xAD,0x30,0x89,0x32,0x66,0x12,0x0F,0xCD,0xDE,0xB8,0xFD,0xF9, + .addr="rfsgasx89kAvYvqhLmJt8Pn5JsHFnZadwm"}, + {.seed={0x30,0x9F,0xC8,0x61,0x10,0x78,0xE1,0x2C,0x0B,0x3F,0x80,0x01,0x16,0x0D,0x00,0xB0}, + .pubkey={0x02,0x23,0xE5,0x05,0xAD,0x30,0x89,0x32,0x66,0x12,0x0F,0xCD,0xDE,0xB8,0xFD,0xF9, 0xC2,0xFA,0xE0,0x6D,0xCE,0xBA,0x67,0x1B,0xEB,0xE1,0x25,0x85,0xD0,0xB6,0x23,0xE7,0xE0}, - {0xCE,0xD8,0xD9,0xEB,0x26,0xB5,0xD2,0x5A,0xD1,0xC7,0xDD,0x84,0xA3,0xD1,0x4F,0x07, + .seckey={0xCE,0xD8,0xD9,0xEB,0x26,0xB5,0xD2,0x5A,0xD1,0xC7,0xDD,0x84,0xA3,0xD1,0x4F,0x07, 0xB4,0xBC,0xE0,0x1A,0xA7,0xA1,0xBD,0xBD,0x41,0x7B,0x2C,0xF1,0x72,0xC3,0xD8,0x6E}, - "rMnU6UGDbmG4FNHPwY8KZaiY96fJWA8uqN"}, - {{0x03,0x09,0x10,0x63,0x99,0xE1,0x71,0x0E,0xE7,0xC2,0x4E,0xC2,0xD3,0x07,0x11,0x55}, - {0x03,0x4F,0x9D,0x3A,0x5B,0x58,0x4C,0x9F,0x1C,0xF6,0x8C,0x5D,0xB0,0x0E,0x3F,0xB9, + .addr="rMnU6UGDbmG4FNHPwY8KZaiY96fJWA8uqN"}, + {.seed={0x03,0x09,0x10,0x63,0x99,0xE1,0x71,0x0E,0xE7,0xC2,0x4E,0xC2,0xD3,0x07,0x11,0x55}, + .pubkey={0x03,0x4F,0x9D,0x3A,0x5B,0x58,0x4C,0x9F,0x1C,0xF6,0x8C,0x5D,0xB0,0x0E,0x3F,0xB9, 0xC9,0xDC,0x91,0xFF,0x4E,0x43,0xAA,0x6C,0x9E,0x49,0x77,0x83,0xDE,0x51,0x17,0x0F,0x96}, - {0x2E,0xF1,0x99,0x7B,0x37,0xCE,0x08,0x4B,0x04,0x8D,0x18,0x47,0x10,0x9B,0xA6,0xF8, + .seckey={0x2E,0xF1,0x99,0x7B,0x37,0xCE,0x08,0x4B,0x04,0x8D,0x18,0x47,0x10,0x9B,0xA6,0xF8, 0xA9,0xED,0x24,0x91,0x9A,0x3B,0x03,0xB2,0x32,0x09,0x0E,0x60,0x6B,0x08,0x63,0xD3}, - "rPDive23VFL8tBzwSsh5VfxYM69EhFYUmV"}, - {{0xC4,0x43,0x48,0xC9,0xFE,0x00,0xC4,0x9F,0x60,0xA0,0x6D,0xE5,0x67,0xB8,0x2C,0x1A}, - {0x02,0xF9,0x76,0xF3,0x6E,0x24,0x6D,0x65,0x79,0x76,0xE8,0x05,0xCF,0x65,0xEC,0x84, + .addr="rPDive23VFL8tBzwSsh5VfxYM69EhFYUmV"}, + {.seed={0xC4,0x43,0x48,0xC9,0xFE,0x00,0xC4,0x9F,0x60,0xA0,0x6D,0xE5,0x67,0xB8,0x2C,0x1A}, + .pubkey={0x02,0xF9,0x76,0xF3,0x6E,0x24,0x6D,0x65,0x79,0x76,0xE8,0x05,0xCF,0x65,0xEC,0x84, 0xC9,0x17,0x94,0x2C,0x04,0xBA,0x68,0x0B,0x42,0xB2,0x2C,0x6B,0x02,0x13,0xF8,0xD8,0x4E}, - {0x75,0x56,0xCF,0x71,0x82,0x3C,0xA4,0x93,0xEB,0x0B,0xD9,0xAE,0xEF,0x89,0xE4,0xE7, + .seckey={0x75,0x56,0xCF,0x71,0x82,0x3C,0xA4,0x93,0xEB,0x0B,0xD9,0xAE,0xEF,0x89,0xE4,0xE7, 0xCE,0x09,0x0F,0x50,0x67,0xD8,0x5D,0x95,0xA4,0x26,0x52,0x17,0x0B,0x1A,0xFF,0x18}, - "rNxe7tnN6gAjov9RERrbqPQmQZX5XDo5BJ"}, - {{0x44,0x7A,0x7B,0xEF,0x65,0x8D,0x23,0x7A,0x3E,0x43,0x33,0x49,0x63,0x66,0x97,0x5B}, - {0x03,0xC3,0xAD,0x1A,0xFF,0x40,0x0C,0x0B,0xCA,0x4C,0x30,0x45,0xB6,0x58,0xE3,0x7F, + .addr="rNxe7tnN6gAjov9RERrbqPQmQZX5XDo5BJ"}, + {.seed={0x44,0x7A,0x7B,0xEF,0x65,0x8D,0x23,0x7A,0x3E,0x43,0x33,0x49,0x63,0x66,0x97,0x5B}, + .pubkey={0x03,0xC3,0xAD,0x1A,0xFF,0x40,0x0C,0x0B,0xCA,0x4C,0x30,0x45,0xB6,0x58,0xE3,0x7F, 0x34,0xE7,0x6C,0x2A,0x80,0xD8,0xE0,0x99,0x29,0x83,0x39,0xED,0x3C,0x2C,0x0C,0x86,0x49}, - {0x6D,0x74,0x5A,0xDE,0xCC,0x4E,0xC9,0x80,0xFD,0x23,0x81,0xE3,0xE6,0x53,0x6F,0x97, + .seckey={0x6D,0x74,0x5A,0xDE,0xCC,0x4E,0xC9,0x80,0xFD,0x23,0x81,0xE3,0xE6,0x53,0x6F,0x97, 0x7E,0xD1,0x9B,0x28,0x41,0x61,0x6E,0xB8,0x4D,0x00,0x3D,0x97,0x6B,0x8C,0xE3,0xBD}, - "rMun2HwdoraftsxG3JoHXKYhBnCfwmWjyK"}, - {{0x34,0xE3,0x6E,0xC3,0x13,0x76,0xC4,0xB0,0x11,0x94,0x81,0x90,0x89,0xB1,0x24,0x92}, - {0x02,0x89,0x33,0x7D,0x4D,0x1D,0xD8,0x72,0x8F,0x8F,0xF4,0x1B,0xC6,0xDE,0x73,0x0F, + .addr="rMun2HwdoraftsxG3JoHXKYhBnCfwmWjyK"}, + {.seed={0x34,0xE3,0x6E,0xC3,0x13,0x76,0xC4,0xB0,0x11,0x94,0x81,0x90,0x89,0xB1,0x24,0x92}, + .pubkey={0x02,0x89,0x33,0x7D,0x4D,0x1D,0xD8,0x72,0x8F,0x8F,0xF4,0x1B,0xC6,0xDE,0x73,0x0F, 0x21,0x35,0x85,0x4D,0xA9,0x8E,0xA2,0x08,0xC3,0x2C,0xD2,0x50,0x7C,0x57,0x39,0xB4,0xBC}, - {0xCA,0x68,0x9E,0x9C,0x73,0x76,0x0F,0x91,0x37,0xC6,0x41,0x4C,0xBA,0x88,0x44,0xBD, + .seckey={0xCA,0x68,0x9E,0x9C,0x73,0x76,0x0F,0x91,0x37,0xC6,0x41,0x4C,0xBA,0x88,0x44,0xBD, 0x23,0x28,0xD8,0x5C,0x77,0x40,0x81,0x6B,0xB9,0xD8,0xF3,0x3A,0x0A,0x8F,0x0E,0xA0}, - "rEFR7fgCegzeKBSJYGgvxMVuUcw1QmYrqm"}, - {{0x60,0x08,0x22,0x98,0x97,0xAA,0xB6,0x7E,0x1B,0x24,0x63,0x50,0xA8,0x6A,0x5D,0x40}, - {0x03,0x61,0x72,0xB2,0x19,0x99,0xC8,0x7D,0xE4,0x4B,0x0B,0x93,0x42,0x4F,0x46,0xB0, + .addr="rEFR7fgCegzeKBSJYGgvxMVuUcw1QmYrqm"}, + {.seed={0x60,0x08,0x22,0x98,0x97,0xAA,0xB6,0x7E,0x1B,0x24,0x63,0x50,0xA8,0x6A,0x5D,0x40}, + .pubkey={0x03,0x61,0x72,0xB2,0x19,0x99,0xC8,0x7D,0xE4,0x4B,0x0B,0x93,0x42,0x4F,0x46,0xB0, 0x8B,0x3F,0x45,0xA0,0xEC,0xF3,0xE1,0xE4,0x14,0x87,0x99,0x6C,0x42,0xD1,0x2E,0x1C,0xC4}, - {0x5B,0x65,0x66,0x3C,0x23,0xF9,0x4A,0x85,0x26,0x02,0x7E,0x99,0xEC,0xDB,0xB9,0x0A, + .seckey={0x5B,0x65,0x66,0x3C,0x23,0xF9,0x4A,0x85,0x26,0x02,0x7E,0x99,0xEC,0xDB,0xB9,0x0A, 0x7F,0xA2,0xB5,0x6F,0x80,0x92,0x1A,0x2E,0xE9,0x74,0x80,0x0C,0xF5,0x32,0x31,0x72}, - "rMyoPQ4P86M5PYUd9y63muzy28dJ6oS9zk"}, - {{0xE3,0x47,0x3F,0xB0,0xDC,0x1D,0x26,0x01,0xCE,0xF4,0x36,0x7C,0xA6,0xCF,0x65,0xD7}, - {0x02,0x20,0x9F,0xF0,0xB0,0x08,0x49,0x66,0xF9,0xAA,0xD6,0x41,0xDD,0xC3,0x9C,0x7B, + .addr="rMyoPQ4P86M5PYUd9y63muzy28dJ6oS9zk"}, + {.seed={0xE3,0x47,0x3F,0xB0,0xDC,0x1D,0x26,0x01,0xCE,0xF4,0x36,0x7C,0xA6,0xCF,0x65,0xD7}, + .pubkey={0x02,0x20,0x9F,0xF0,0xB0,0x08,0x49,0x66,0xF9,0xAA,0xD6,0x41,0xDD,0xC3,0x9C,0x7B, 0xAE,0x6A,0xAF,0x87,0xF1,0x29,0xDC,0x19,0x7E,0x62,0xD1,0x15,0xF2,0x9D,0xE8,0xE2,0xF7}, - {0xDF,0xF6,0x37,0x4B,0xFC,0x42,0x2C,0x2C,0xF3,0x48,0xC2,0xF1,0xBF,0x4B,0x30,0xB1, + .seckey={0xDF,0xF6,0x37,0x4B,0xFC,0x42,0x2C,0x2C,0xF3,0x48,0xC2,0xF1,0xBF,0x4B,0x30,0xB1, 0x66,0x0E,0xCB,0xA9,0x0C,0xA9,0x32,0x77,0x71,0xB8,0x4A,0xB0,0xDC,0x24,0x69,0x86}, - "rKD4abu3RY94MdoZXG4SrUBxdkQcUJLKFq"}, - {{0xB1,0x25,0x1E,0xC0,0x39,0xFD,0xA9,0xD1,0x84,0x3A,0x08,0xE8,0x38,0xD6,0xE7,0xDA}, - {0x03,0xEC,0x13,0x79,0x7E,0x49,0xE2,0x01,0x11,0xB0,0x0E,0x04,0xCA,0xA9,0x05,0xE3, + .addr="rKD4abu3RY94MdoZXG4SrUBxdkQcUJLKFq"}, + {.seed={0xB1,0x25,0x1E,0xC0,0x39,0xFD,0xA9,0xD1,0x84,0x3A,0x08,0xE8,0x38,0xD6,0xE7,0xDA}, + .pubkey={0x03,0xEC,0x13,0x79,0x7E,0x49,0xE2,0x01,0x11,0xB0,0x0E,0x04,0xCA,0xA9,0x05,0xE3, 0x03,0xF3,0xEB,0x93,0xE5,0x07,0xC0,0xA9,0xAD,0xBA,0xD3,0xA0,0x14,0x8D,0x24,0x0E,0x5F}, - {0x9F,0xF4,0x31,0xC9,0x16,0xAF,0xAB,0x6A,0xCA,0x80,0xC1,0x2D,0xE6,0x76,0xEF,0x86, + .seckey={0x9F,0xF4,0x31,0xC9,0x16,0xAF,0xAB,0x6A,0xCA,0x80,0xC1,0x2D,0xE6,0x76,0xEF,0x86, 0x94,0xB4,0xE4,0x8B,0xFD,0x31,0x77,0x5C,0x2D,0xCD,0x9D,0x17,0x71,0x5B,0x95,0x3F}, - "rnvVe22GM2vweXRNuqggRXoEx3XAZs9knV"}, - {{0x84,0x22,0xC2,0xF7,0x26,0xF0,0xAA,0xBE,0x8A,0xDB,0x36,0xF3,0xE0,0xCC,0x68,0x3E}, - {0x03,0xEB,0x3C,0xE9,0xB6,0xFB,0xD1,0xDF,0x71,0x13,0x5E,0x06,0xA3,0x2F,0x42,0x9B, + .addr="rnvVe22GM2vweXRNuqggRXoEx3XAZs9knV"}, + {.seed={0x84,0x22,0xC2,0xF7,0x26,0xF0,0xAA,0xBE,0x8A,0xDB,0x36,0xF3,0xE0,0xCC,0x68,0x3E}, + .pubkey={0x03,0xEB,0x3C,0xE9,0xB6,0xFB,0xD1,0xDF,0x71,0x13,0x5E,0x06,0xA3,0x2F,0x42,0x9B, 0x1C,0x4F,0xBC,0xA5,0xB4,0x89,0xA7,0x22,0x4B,0x0F,0x91,0xAD,0x6F,0x6C,0x3B,0x98,0x02}, - {0xAF,0xA4,0x70,0x55,0xA0,0x5B,0xE6,0x7C,0x99,0x62,0x4F,0xB8,0xCE,0xE1,0x62,0x48, + .seckey={0xAF,0xA4,0x70,0x55,0xA0,0x5B,0xE6,0x7C,0x99,0x62,0x4F,0xB8,0xCE,0xE1,0x62,0x48, 0x19,0xD4,0xE9,0xEF,0x86,0x10,0x67,0x97,0x0E,0x8E,0x37,0x6B,0xB5,0x82,0xA4,0x6D}, - "r4UZeovKZA8evpNM8AEkodxUPE759ZJx6K"}, - {{0xE4,0x0B,0x92,0x07,0x46,0x0F,0x30,0xC6,0x5D,0xB3,0xB0,0xFE,0xA6,0x8E,0x9C,0x88}, - {0x03,0x14,0x17,0x68,0xD2,0xEE,0x03,0x9D,0xCE,0xB4,0xB1,0x25,0x1F,0x09,0x21,0xBE, + .addr="r4UZeovKZA8evpNM8AEkodxUPE759ZJx6K"}, + {.seed={0xE4,0x0B,0x92,0x07,0x46,0x0F,0x30,0xC6,0x5D,0xB3,0xB0,0xFE,0xA6,0x8E,0x9C,0x88}, + .pubkey={0x03,0x14,0x17,0x68,0xD2,0xEE,0x03,0x9D,0xCE,0xB4,0xB1,0x25,0x1F,0x09,0x21,0xBE, 0x82,0xA1,0xDB,0xED,0x44,0xAE,0x20,0x88,0xD4,0x93,0xDB,0xF4,0x29,0xDB,0x8B,0xCA,0xB1}, - {0x1A,0xBD,0xD6,0xB1,0x15,0x03,0x3D,0x43,0xED,0xD7,0x71,0x22,0x7D,0xA1,0xEC,0x59, + .seckey={0x1A,0xBD,0xD6,0xB1,0x15,0x03,0x3D,0x43,0xED,0xD7,0x71,0x22,0x7D,0xA1,0xEC,0x59, 0x17,0x6B,0xC5,0x56,0x85,0x22,0x68,0x2A,0x3A,0x84,0x0B,0x76,0x96,0x07,0x32,0xB3}, - "rfxzt744qLZjaupkaMz6Vyg9HfAqhAxHuN"}, - {{0xE0,0xA1,0xA6,0xA2,0xF8,0x4E,0xE7,0x83,0x37,0x67,0x93,0xF6,0x9B,0xAB,0x6A,0x1C}, - {0x02,0x14,0x45,0xE1,0xB9,0x85,0x3A,0x10,0xFB,0x3D,0x19,0x51,0x06,0x29,0x89,0x86, + .addr="rfxzt744qLZjaupkaMz6Vyg9HfAqhAxHuN"}, + {.seed={0xE0,0xA1,0xA6,0xA2,0xF8,0x4E,0xE7,0x83,0x37,0x67,0x93,0xF6,0x9B,0xAB,0x6A,0x1C}, + .pubkey={0x02,0x14,0x45,0xE1,0xB9,0x85,0x3A,0x10,0xFB,0x3D,0x19,0x51,0x06,0x29,0x89,0x86, 0xD3,0x21,0xFC,0xD6,0xEA,0xA4,0xA2,0x1F,0x0C,0x21,0x99,0xF4,0xB9,0x17,0xEF,0x9A,0x98}, - {0xC1,0xFC,0x56,0xB0,0xE6,0x3F,0x27,0xC4,0xB3,0x3D,0x83,0x8D,0x3F,0x51,0xBB,0x30, + .seckey={0xC1,0xFC,0x56,0xB0,0xE6,0x3F,0x27,0xC4,0xB3,0x3D,0x83,0x8D,0x3F,0x51,0xBB,0x30, 0xBD,0xF0,0x1B,0x79,0xD2,0x39,0x17,0xFE,0x81,0xEB,0x4F,0xB4,0x4B,0x2B,0x68,0x4E}, - "rGmqckB9JMAtx4qgW8kJzvnftRcm3He4pC"}, - {{0x08,0x89,0x4E,0x50,0x14,0xC7,0x4B,0x29,0x0A,0x92,0x8E,0x49,0x7A,0x41,0x03,0x94}, - {0x03,0xC9,0xAB,0x0B,0x23,0x91,0x7F,0x68,0x93,0x4F,0x05,0x5C,0x22,0x9B,0x84,0x9F, + .addr="rGmqckB9JMAtx4qgW8kJzvnftRcm3He4pC"}, + {.seed={0x08,0x89,0x4E,0x50,0x14,0xC7,0x4B,0x29,0x0A,0x92,0x8E,0x49,0x7A,0x41,0x03,0x94}, + .pubkey={0x03,0xC9,0xAB,0x0B,0x23,0x91,0x7F,0x68,0x93,0x4F,0x05,0x5C,0x22,0x9B,0x84,0x9F, 0xFD,0x39,0x27,0x45,0x1F,0x2A,0x91,0x29,0xD1,0x7D,0x89,0x35,0xF7,0xA5,0xC4,0x7C,0x68}, - {0xCD,0x24,0x10,0xF6,0xB3,0x4F,0xC9,0xBA,0xC5,0x12,0xEB,0x65,0xFB,0xB2,0x69,0xFB, + .seckey={0xCD,0x24,0x10,0xF6,0xB3,0x4F,0xC9,0xBA,0xC5,0x12,0xEB,0x65,0xFB,0xB2,0x69,0xFB, 0x9F,0xC5,0x10,0xA8,0x64,0xF3,0xA8,0x65,0x1E,0x7B,0xF4,0x54,0xD4,0xDD,0xE7,0x48}, - "rBUZAvsXZJfUHCc9tWhEqDJUnDGdPTbA61"}, - {{0xA9,0xEA,0x18,0x15,0x9C,0x7E,0x1B,0xF4,0xCB,0xD7,0x2D,0x3E,0x16,0xF1,0x1A,0x45}, - {0x02,0x3F,0xF7,0x7D,0x42,0x2D,0xE7,0x08,0xA1,0xB8,0xC5,0x56,0x55,0x2C,0xE8,0x74, + .addr="rBUZAvsXZJfUHCc9tWhEqDJUnDGdPTbA61"}, + {.seed={0xA9,0xEA,0x18,0x15,0x9C,0x7E,0x1B,0xF4,0xCB,0xD7,0x2D,0x3E,0x16,0xF1,0x1A,0x45}, + .pubkey={0x02,0x3F,0xF7,0x7D,0x42,0x2D,0xE7,0x08,0xA1,0xB8,0xC5,0x56,0x55,0x2C,0xE8,0x74, 0xF4,0x40,0x9A,0xA8,0x84,0xD7,0x44,0x0C,0x4D,0x03,0xC9,0x99,0xD2,0x9D,0xF9,0xEF,0x89}, - {0x73,0xEA,0xB1,0xD5,0x7E,0xC8,0x36,0x1C,0x41,0x53,0x94,0x2F,0xBC,0x30,0xB7,0x1A, + .seckey={0x73,0xEA,0xB1,0xD5,0x7E,0xC8,0x36,0x1C,0x41,0x53,0x94,0x2F,0xBC,0x30,0xB7,0x1A, 0xA2,0xA0,0x75,0x39,0xD9,0x59,0x4A,0x66,0x7E,0xF3,0xB3,0x41,0xA9,0x5C,0x11,0xD0}, - "rBxAYvkEfc9LwqvNDuij3PnVPtf2LeZvZG"}, - {{0x85,0x12,0xCF,0xA4,0xB8,0xAB,0x77,0x60,0x1A,0xAF,0xB0,0x16,0x22,0xFD,0xF7,0xE0}, - {0x02,0xA0,0x25,0x79,0x1A,0x75,0x9B,0xDE,0x29,0xB6,0x0A,0xA1,0x55,0x82,0xF6,0x3D, + .addr="rBxAYvkEfc9LwqvNDuij3PnVPtf2LeZvZG"}, + {.seed={0x85,0x12,0xCF,0xA4,0xB8,0xAB,0x77,0x60,0x1A,0xAF,0xB0,0x16,0x22,0xFD,0xF7,0xE0}, + .pubkey={0x02,0xA0,0x25,0x79,0x1A,0x75,0x9B,0xDE,0x29,0xB6,0x0A,0xA1,0x55,0x82,0xF6,0x3D, 0x7E,0x59,0x9A,0x1C,0xD3,0x30,0x28,0x44,0xF1,0x51,0x8A,0xA8,0x2D,0x9B,0x64,0x7B,0x12}, - {0xEA,0x04,0x9E,0xBC,0x5E,0xCB,0xEB,0x71,0xD9,0xC1,0x3E,0x00,0xA4,0x53,0x1F,0xFA, + .seckey={0xEA,0x04,0x9E,0xBC,0x5E,0xCB,0xEB,0x71,0xD9,0xC1,0x3E,0x00,0xA4,0x53,0x1F,0xFA, 0x88,0x32,0x9D,0xC2,0xA2,0x6F,0x9B,0x38,0xDC,0xDC,0xA7,0xDF,0xAE,0x60,0xCF,0xC8}, - "rwqKXTVGf6DqKKHKtVYTqiyTi9Utj4dtUg"}, - {{0xDB,0xB2,0x21,0xA2,0x30,0xF8,0xDE,0x09,0xCB,0x4A,0xD7,0xA3,0x4D,0xCF,0x65,0x8F}, - {0x02,0x24,0x93,0x14,0x32,0xAB,0x9B,0xAD,0x1C,0xCB,0x55,0x48,0x52,0x86,0xD8,0x53, + .addr="rwqKXTVGf6DqKKHKtVYTqiyTi9Utj4dtUg"}, + {.seed={0xDB,0xB2,0x21,0xA2,0x30,0xF8,0xDE,0x09,0xCB,0x4A,0xD7,0xA3,0x4D,0xCF,0x65,0x8F}, + .pubkey={0x02,0x24,0x93,0x14,0x32,0xAB,0x9B,0xAD,0x1C,0xCB,0x55,0x48,0x52,0x86,0xD8,0x53, 0xAD,0xFE,0x69,0x63,0x35,0x85,0x7D,0xF7,0xBE,0xBB,0xC2,0x38,0x37,0xC5,0x16,0xDB,0x85}, - {0xCC,0x3F,0x07,0xB0,0x02,0xCF,0x11,0x8C,0x6E,0x16,0x52,0xA9,0x0E,0x53,0xB3,0xE4, + .seckey={0xCC,0x3F,0x07,0xB0,0x02,0xCF,0x11,0x8C,0x6E,0x16,0x52,0xA9,0x0E,0x53,0xB3,0xE4, 0x9A,0x02,0x59,0xB0,0x85,0x55,0x66,0x12,0xE7,0x64,0x24,0x5C,0xC9,0x87,0x68,0x94}, - "rwUVvqHuUdHHbaUgRL2tboAT8BtfnLKzu7"}, - {{0x13,0x13,0xED,0xD6,0xA9,0x99,0xEC,0x78,0x41,0xB9,0xAF,0x7B,0x63,0x4C,0x72,0x40}, - {0x03,0xAB,0x57,0x27,0x14,0xC7,0x64,0xBD,0x16,0xCC,0xC3,0xEC,0xCC,0x73,0xB8,0xC5, + .addr="rwUVvqHuUdHHbaUgRL2tboAT8BtfnLKzu7"}, + {.seed={0x13,0x13,0xED,0xD6,0xA9,0x99,0xEC,0x78,0x41,0xB9,0xAF,0x7B,0x63,0x4C,0x72,0x40}, + .pubkey={0x03,0xAB,0x57,0x27,0x14,0xC7,0x64,0xBD,0x16,0xCC,0xC3,0xEC,0xCC,0x73,0xB8,0xC5, 0x25,0xDC,0xD0,0xAE,0x44,0x7D,0xE5,0xE6,0x99,0xFC,0xA1,0x77,0xEB,0x6D,0x8A,0x3D,0x68}, - {0xCE,0xEA,0x88,0x81,0x86,0x7C,0xB8,0x75,0xEA,0x2E,0xE6,0x3D,0x16,0xDC,0x31,0x45, + .seckey={0xCE,0xEA,0x88,0x81,0x86,0x7C,0xB8,0x75,0xEA,0x2E,0xE6,0x3D,0x16,0xDC,0x31,0x45, 0xA0,0x6B,0xF9,0x84,0xD5,0xBC,0x9F,0x9C,0x3D,0xF6,0x0E,0x70,0xDC,0x4E,0x45,0xEA}, - "r4JubQs7WVESYxYbF4Uvsf7sUpJ7awzC4v"}, - {{0xC6,0x4B,0x3E,0xF6,0x4B,0x44,0x46,0xBA,0x46,0x86,0x8D,0x60,0x68,0xFD,0xBA,0x79}, - {0x02,0xDC,0xC5,0x44,0xEF,0xAF,0x0B,0xAD,0x8C,0x12,0x0F,0xA7,0xC7,0x9B,0xB9,0xF3, + .addr="r4JubQs7WVESYxYbF4Uvsf7sUpJ7awzC4v"}, + {.seed={0xC6,0x4B,0x3E,0xF6,0x4B,0x44,0x46,0xBA,0x46,0x86,0x8D,0x60,0x68,0xFD,0xBA,0x79}, + .pubkey={0x02,0xDC,0xC5,0x44,0xEF,0xAF,0x0B,0xAD,0x8C,0x12,0x0F,0xA7,0xC7,0x9B,0xB9,0xF3, 0xC8,0x8A,0x2A,0x7B,0x9C,0xB0,0x87,0xDD,0x1D,0x06,0x77,0x01,0x05,0x1D,0x77,0x92,0x34}, - {0x0E,0x26,0x89,0x9C,0xED,0xB1,0x4E,0xD2,0x90,0x99,0x2D,0x38,0xAD,0xCD,0x48,0xA2, + .seckey={0x0E,0x26,0x89,0x9C,0xED,0xB1,0x4E,0xD2,0x90,0x99,0x2D,0x38,0xAD,0xCD,0x48,0xA2, 0xCA,0x76,0x13,0xEE,0x42,0xCC,0x0E,0x00,0xEC,0xCC,0x72,0xEE,0x20,0xCE,0xF2,0x82}, - "rGpXpDnhPMqgNR2yxhiAbW2H15mJrxhfVp"}, - {{0xCE,0x2A,0x1F,0xEC,0xCE,0x8D,0x4F,0xEF,0x4D,0x33,0xCE,0x57,0xF2,0xC8,0x4E,0x6E}, - {0x02,0x14,0x57,0xE0,0x7D,0xBF,0x3A,0x09,0x07,0x30,0x10,0x57,0x64,0x5C,0x9F,0xCD, + .addr="rGpXpDnhPMqgNR2yxhiAbW2H15mJrxhfVp"}, + {.seed={0xCE,0x2A,0x1F,0xEC,0xCE,0x8D,0x4F,0xEF,0x4D,0x33,0xCE,0x57,0xF2,0xC8,0x4E,0x6E}, + .pubkey={0x02,0x14,0x57,0xE0,0x7D,0xBF,0x3A,0x09,0x07,0x30,0x10,0x57,0x64,0x5C,0x9F,0xCD, 0xE0,0x57,0x2E,0xAB,0x73,0x24,0x34,0x6C,0x1D,0x93,0xC4,0xD3,0xBB,0xF1,0x52,0x66,0x1D}, - {0x9A,0xF2,0x85,0x67,0x64,0x0B,0x12,0x29,0x45,0x2D,0xC8,0x51,0xBC,0x86,0x1C,0x24, + .seckey={0x9A,0xF2,0x85,0x67,0x64,0x0B,0x12,0x29,0x45,0x2D,0xC8,0x51,0xBC,0x86,0x1C,0x24, 0x30,0x18,0x8E,0xF8,0xFB,0x11,0x5D,0x45,0xDA,0x1F,0x67,0xE6,0xBC,0x5B,0x94,0x92}, - "r3qch21RVHuqAHapjovBW5owVHRFoiN8xB"}, - {{0xF4,0x78,0x3A,0x98,0xA3,0x8E,0x79,0xF1,0xC4,0x26,0x0C,0x04,0x6F,0xB4,0x28,0xD8}, - {0x02,0xA3,0x68,0x74,0x6B,0x3D,0x7D,0x10,0xFC,0x5C,0x51,0x8E,0x44,0xBE,0x95,0xD3, + .addr="r3qch21RVHuqAHapjovBW5owVHRFoiN8xB"}, + {.seed={0xF4,0x78,0x3A,0x98,0xA3,0x8E,0x79,0xF1,0xC4,0x26,0x0C,0x04,0x6F,0xB4,0x28,0xD8}, + .pubkey={0x02,0xA3,0x68,0x74,0x6B,0x3D,0x7D,0x10,0xFC,0x5C,0x51,0x8E,0x44,0xBE,0x95,0xD3, 0xAB,0x09,0x94,0x97,0x8C,0xD5,0x3E,0x0D,0x1B,0x4B,0x8F,0x41,0x08,0x67,0x0B,0x15,0x50}, - {0x3C,0xCC,0x43,0x41,0xDC,0x14,0x8F,0xB6,0x65,0x1E,0x47,0x6F,0xA5,0x57,0x53,0xBA, + .seckey={0x3C,0xCC,0x43,0x41,0xDC,0x14,0x8F,0xB6,0x65,0x1E,0x47,0x6F,0xA5,0x57,0x53,0xBA, 0x15,0xF1,0x14,0x4E,0x45,0x5F,0x15,0x52,0x30,0xBB,0xCD,0x4E,0x49,0x6A,0x76,0x77}, - "rs1b7fDHFMxovR6czQVekuYnRrBQJs2JjG"}, - {{0x16,0x7C,0x0B,0xB3,0xC7,0x9D,0x2B,0xC4,0x45,0xCA,0x0F,0x0C,0x16,0x20,0xF2,0xC0}, - {0x02,0x4F,0xA3,0xA0,0x8A,0xA4,0x00,0xFC,0x9D,0xC4,0x43,0x6C,0xB3,0x5F,0xC5,0x9B, + .addr="rs1b7fDHFMxovR6czQVekuYnRrBQJs2JjG"}, + {.seed={0x16,0x7C,0x0B,0xB3,0xC7,0x9D,0x2B,0xC4,0x45,0xCA,0x0F,0x0C,0x16,0x20,0xF2,0xC0}, + .pubkey={0x02,0x4F,0xA3,0xA0,0x8A,0xA4,0x00,0xFC,0x9D,0xC4,0x43,0x6C,0xB3,0x5F,0xC5,0x9B, 0xEB,0x96,0x6A,0x06,0x95,0x1C,0x90,0x78,0x87,0xD0,0xC1,0x3C,0x36,0xC8,0x9E,0xA6,0xF0}, - {0x1F,0x3F,0xBE,0xDD,0xFD,0xA4,0x79,0xA5,0xA0,0x01,0x8B,0x88,0x86,0x46,0x0C,0xC4, + .seckey={0x1F,0x3F,0xBE,0xDD,0xFD,0xA4,0x79,0xA5,0xA0,0x01,0x8B,0x88,0x86,0x46,0x0C,0xC4, 0x02,0x6A,0x62,0x14,0x42,0x02,0xA8,0x9A,0x4C,0x2B,0x1C,0x73,0xBA,0x02,0xDB,0x4E}, - "rNoQNeoYjCBQHUBhpmNi43yNVc3hQnYPGK"}, - {{0x5C,0x30,0xD9,0xEF,0xDF,0x24,0x77,0xA3,0x7C,0x1B,0x14,0x06,0xE2,0xF6,0x10,0x7A}, - {0x02,0xA1,0xEC,0x81,0xC0,0xBE,0xBC,0x84,0x78,0x09,0xD8,0x49,0x20,0x39,0x3A,0xE8, + .addr="rNoQNeoYjCBQHUBhpmNi43yNVc3hQnYPGK"}, + {.seed={0x5C,0x30,0xD9,0xEF,0xDF,0x24,0x77,0xA3,0x7C,0x1B,0x14,0x06,0xE2,0xF6,0x10,0x7A}, + .pubkey={0x02,0xA1,0xEC,0x81,0xC0,0xBE,0xBC,0x84,0x78,0x09,0xD8,0x49,0x20,0x39,0x3A,0xE8, 0x6C,0x2E,0x8E,0xF1,0x9F,0xFB,0x46,0xB8,0xD3,0x98,0x67,0x9F,0xA6,0x76,0x41,0x21,0x9B}, - {0xA2,0xE3,0x24,0xD9,0x10,0xA4,0x50,0x4A,0x6E,0x03,0x2F,0x93,0x30,0xB9,0xF7,0xFE, + .seckey={0xA2,0xE3,0x24,0xD9,0x10,0xA4,0x50,0x4A,0x6E,0x03,0x2F,0x93,0x30,0xB9,0xF7,0xFE, 0xAE,0x1D,0xEB,0x05,0x95,0x15,0xEA,0x72,0x1C,0xF0,0x0E,0xFA,0x23,0x6F,0x3D,0xA5}, - "rhPf4tS9DK2BTbUrbCqn4TpTWMC9WrgFWA"}, - {{0xD2,0xA7,0xDE,0x9A,0x73,0x18,0x28,0x05,0x99,0x2D,0x56,0x44,0xBC,0xF3,0x01,0xA9}, - {0x03,0x35,0x3C,0x34,0x9E,0x96,0x28,0xEF,0xEE,0x83,0x6E,0x74,0x03,0xF9,0x41,0xA2, + .addr="rhPf4tS9DK2BTbUrbCqn4TpTWMC9WrgFWA"}, + {.seed={0xD2,0xA7,0xDE,0x9A,0x73,0x18,0x28,0x05,0x99,0x2D,0x56,0x44,0xBC,0xF3,0x01,0xA9}, + .pubkey={0x03,0x35,0x3C,0x34,0x9E,0x96,0x28,0xEF,0xEE,0x83,0x6E,0x74,0x03,0xF9,0x41,0xA2, 0xBF,0xAA,0x33,0x51,0x49,0x52,0xA5,0xAE,0x90,0xE9,0x3C,0x86,0x23,0xA6,0x5E,0xF4,0x68}, - {0x75,0x8F,0xE1,0x17,0x2F,0x22,0xB7,0xC9,0x8B,0xF8,0x45,0xB2,0x2C,0x60,0x3D,0xF3, + .seckey={0x75,0x8F,0xE1,0x17,0x2F,0x22,0xB7,0xC9,0x8B,0xF8,0x45,0xB2,0x2C,0x60,0x3D,0xF3, 0xDB,0xB1,0xE6,0x16,0x55,0x38,0x18,0x7F,0x0A,0xE6,0x7A,0xCF,0x7D,0x59,0x1B,0xC9}, - "rKysepUdRUS3mSsb1F5qFKmwQiA2j7N6Rp"}, - {{0xDB,0xC5,0xFE,0x60,0xD5,0x0B,0xD3,0x17,0x6A,0x6E,0x17,0xF3,0x50,0x3C,0xD3,0x44}, - {0x02,0x08,0xE0,0x68,0xD4,0x94,0x17,0xE6,0xA1,0xA7,0xF2,0x20,0x99,0xA9,0xFF,0xD3, + .addr="rKysepUdRUS3mSsb1F5qFKmwQiA2j7N6Rp"}, + {.seed={0xDB,0xC5,0xFE,0x60,0xD5,0x0B,0xD3,0x17,0x6A,0x6E,0x17,0xF3,0x50,0x3C,0xD3,0x44}, + .pubkey={0x02,0x08,0xE0,0x68,0xD4,0x94,0x17,0xE6,0xA1,0xA7,0xF2,0x20,0x99,0xA9,0xFF,0xD3, 0x02,0xA1,0x1F,0xD1,0xD3,0x06,0xED,0x61,0xCF,0x3A,0xA0,0xC3,0x50,0x79,0x7C,0xFE,0x21}, - {0x56,0xEF,0x3F,0xAF,0xFC,0xDD,0x12,0x60,0xEE,0xC3,0xB7,0xC6,0xE4,0x26,0x48,0xA2, + .seckey={0x56,0xEF,0x3F,0xAF,0xFC,0xDD,0x12,0x60,0xEE,0xC3,0xB7,0xC6,0xE4,0x26,0x48,0xA2, 0x58,0x7D,0xF4,0x85,0xC8,0x18,0x8B,0x7A,0xF8,0x35,0x8D,0xF5,0x14,0x73,0xBE,0xA0}, - "rECdVqueE3m1oUn2GBuwZap6M8ohGUPi3"}, - {{0x02,0xD0,0x7A,0xEE,0xF2,0x0F,0x48,0x49,0xE0,0x8E,0x59,0x0B,0xE5,0x0F,0x8A,0xC1}, - {0x03,0x2D,0x3C,0x65,0x57,0x78,0xB4,0xE1,0x6F,0x29,0xCD,0x06,0x7F,0x7A,0x3F,0xFE, + .addr="rECdVqueE3m1oUn2GBuwZap6M8ohGUPi3"}, + {.seed={0x02,0xD0,0x7A,0xEE,0xF2,0x0F,0x48,0x49,0xE0,0x8E,0x59,0x0B,0xE5,0x0F,0x8A,0xC1}, + .pubkey={0x03,0x2D,0x3C,0x65,0x57,0x78,0xB4,0xE1,0x6F,0x29,0xCD,0x06,0x7F,0x7A,0x3F,0xFE, 0xD0,0x66,0xB5,0x2A,0x69,0x28,0x42,0xB9,0xD3,0x46,0xB6,0xD7,0xC3,0xFE,0x41,0xA3,0x4E}, - {0x18,0x2C,0x95,0x96,0x1D,0x22,0x9C,0x2C,0xF1,0x3F,0xD6,0x06,0x41,0x87,0x8C,0x04, + .seckey={0x18,0x2C,0x95,0x96,0x1D,0x22,0x9C,0x2C,0xF1,0x3F,0xD6,0x06,0x41,0x87,0x8C,0x04, 0x43,0x31,0x0D,0xAA,0x0B,0x41,0x89,0xF5,0x6C,0xBA,0xBC,0xE5,0xF7,0xA1,0xD5,0xB0}, - "rwmvZKoC8nPtyggfBBXcAwgVs5vnDX6pQu"}, - {{0xEB,0xC8,0xC9,0xA3,0xC0,0x39,0xB2,0x10,0x49,0x6C,0x95,0x3C,0xC9,0x47,0xD4,0x13}, - {0x03,0xAA,0x10,0xE0,0xA3,0x1A,0x3F,0x49,0x07,0xCF,0x96,0xA8,0x3E,0x4A,0x4C,0x26, + .addr="rwmvZKoC8nPtyggfBBXcAwgVs5vnDX6pQu"}, + {.seed={0xEB,0xC8,0xC9,0xA3,0xC0,0x39,0xB2,0x10,0x49,0x6C,0x95,0x3C,0xC9,0x47,0xD4,0x13}, + .pubkey={0x03,0xAA,0x10,0xE0,0xA3,0x1A,0x3F,0x49,0x07,0xCF,0x96,0xA8,0x3E,0x4A,0x4C,0x26, 0xA2,0xA0,0x03,0x33,0x7A,0x76,0x4D,0xFB,0x9C,0xFA,0x0C,0x9E,0x61,0x68,0x4E,0xCD,0x83}, - {0xC1,0x17,0x0A,0x11,0x40,0xCD,0x86,0xB1,0xE0,0x8D,0x00,0x1E,0x36,0x96,0xDA,0x35, + .seckey={0xC1,0x17,0x0A,0x11,0x40,0xCD,0x86,0xB1,0xE0,0x8D,0x00,0x1E,0x36,0x96,0xDA,0x35, 0x37,0x92,0x09,0x73,0xC9,0xEA,0x0B,0x88,0x72,0xA7,0xEC,0x3A,0xA0,0x00,0x70,0x5F}, - "raCPJGiwzZUP9Kq2dUEtegMFVFqPYvYUnJ"}, - {{0x58,0x17,0x37,0x52,0x1F,0x1B,0x9F,0x6D,0xFC,0xBB,0xE4,0xC8,0xE6,0x71,0x0F,0x57}, - {0x03,0xB3,0x7D,0x66,0x22,0x5B,0x46,0x1A,0xC1,0xB3,0x34,0x87,0x70,0x52,0x32,0xB7, + .addr="raCPJGiwzZUP9Kq2dUEtegMFVFqPYvYUnJ"}, + {.seed={0x58,0x17,0x37,0x52,0x1F,0x1B,0x9F,0x6D,0xFC,0xBB,0xE4,0xC8,0xE6,0x71,0x0F,0x57}, + .pubkey={0x03,0xB3,0x7D,0x66,0x22,0x5B,0x46,0x1A,0xC1,0xB3,0x34,0x87,0x70,0x52,0x32,0xB7, 0x8F,0x26,0x56,0x3B,0x9B,0xE7,0x0D,0x3A,0x49,0xCA,0xF1,0xC4,0x24,0x91,0x44,0xD1,0x93}, - {0xE3,0x40,0x86,0xA5,0x1A,0xBE,0xBE,0x68,0x6B,0x6B,0x3C,0x1F,0x8D,0xE9,0x72,0x40, + .seckey={0xE3,0x40,0x86,0xA5,0x1A,0xBE,0xBE,0x68,0x6B,0x6B,0x3C,0x1F,0x8D,0xE9,0x72,0x40, 0x4C,0x44,0x98,0xC3,0x20,0x5C,0x73,0xBF,0x7E,0x41,0x89,0xF8,0x4A,0x5C,0x34,0x71}, - "rGUdJNjYKPTscEdv32PBA3sLHFGgNJvKZw"}, - {{0xCD,0x63,0x23,0xF6,0xBB,0xAF,0xB2,0xF7,0x57,0x43,0xD0,0xA4,0x2E,0x4E,0x6F,0xC6}, - {0x02,0xB4,0x24,0x17,0xAD,0x45,0xA7,0xA2,0x53,0xC0,0x6A,0x14,0x37,0x5F,0x66,0xFF, + .addr="rGUdJNjYKPTscEdv32PBA3sLHFGgNJvKZw"}, + {.seed={0xCD,0x63,0x23,0xF6,0xBB,0xAF,0xB2,0xF7,0x57,0x43,0xD0,0xA4,0x2E,0x4E,0x6F,0xC6}, + .pubkey={0x02,0xB4,0x24,0x17,0xAD,0x45,0xA7,0xA2,0x53,0xC0,0x6A,0x14,0x37,0x5F,0x66,0xFF, 0x1E,0xFA,0xC0,0x45,0x9E,0x1E,0x95,0xCE,0x4C,0x37,0x0B,0x2B,0x09,0xE0,0x9D,0x69,0xA2}, - {0x78,0x6E,0xE9,0x7A,0xB1,0x4E,0x9D,0x14,0x67,0x92,0x2E,0xB2,0x4C,0xEB,0xAD,0x95, + .seckey={0x78,0x6E,0xE9,0x7A,0xB1,0x4E,0x9D,0x14,0x67,0x92,0x2E,0xB2,0x4C,0xEB,0xAD,0x95, 0x71,0x7F,0x09,0xBA,0xD9,0xF7,0x47,0xBB,0x6F,0x45,0xDC,0x0A,0x4B,0x7A,0x12,0x9C}, - "rK98g4BtQRoFGich8iakyB9as6twXb99bi"}, - {{0x67,0x0C,0x12,0x8C,0xE5,0x2A,0x14,0x34,0x13,0x26,0xFA,0xFB,0xDA,0x88,0x9C,0x7E}, - {0x03,0x09,0x7E,0xED,0x79,0x95,0xE2,0x52,0xDC,0x01,0xF8,0x6D,0x6C,0x88,0x63,0x60, + .addr="rK98g4BtQRoFGich8iakyB9as6twXb99bi"}, + {.seed={0x67,0x0C,0x12,0x8C,0xE5,0x2A,0x14,0x34,0x13,0x26,0xFA,0xFB,0xDA,0x88,0x9C,0x7E}, + .pubkey={0x03,0x09,0x7E,0xED,0x79,0x95,0xE2,0x52,0xDC,0x01,0xF8,0x6D,0x6C,0x88,0x63,0x60, 0x8B,0xF0,0x69,0xC7,0x99,0x30,0xFF,0x7C,0xA2,0x09,0xC1,0x58,0x0B,0x49,0xF1,0xDA,0xCA}, - {0x35,0x19,0x45,0x94,0x2E,0x70,0xDB,0x5E,0xC6,0x87,0xD8,0xFF,0xE8,0xBA,0x1F,0x9D, + .seckey={0x35,0x19,0x45,0x94,0x2E,0x70,0xDB,0x5E,0xC6,0x87,0xD8,0xFF,0xE8,0xBA,0x1F,0x9D, 0xF3,0xC7,0xF9,0x84,0xC3,0x3A,0x46,0x63,0xA1,0x0D,0x21,0x49,0x30,0xF9,0x95,0xA4}, - "raFXt1LJkm732epPXyTE1xW3DrEb7oUt6m"}, - {{0xF8,0x1F,0xAB,0xD1,0x2A,0x1E,0x8B,0x8B,0xF4,0x24,0x88,0xC0,0xCB,0x95,0xF4,0x5F}, - {0x02,0x8E,0xEA,0xEC,0x17,0xD8,0xAF,0x7E,0x2F,0x06,0xE4,0xA4,0xE1,0x2C,0x3F,0x41, + .addr="raFXt1LJkm732epPXyTE1xW3DrEb7oUt6m"}, + {.seed={0xF8,0x1F,0xAB,0xD1,0x2A,0x1E,0x8B,0x8B,0xF4,0x24,0x88,0xC0,0xCB,0x95,0xF4,0x5F}, + .pubkey={0x02,0x8E,0xEA,0xEC,0x17,0xD8,0xAF,0x7E,0x2F,0x06,0xE4,0xA4,0xE1,0x2C,0x3F,0x41, 0x42,0xA0,0x29,0x69,0x45,0x2D,0x94,0xF7,0x18,0xEE,0x47,0x80,0x1F,0x86,0x40,0x25,0x12}, - {0x53,0x1F,0xDE,0xDB,0xEB,0x50,0xC0,0x49,0x37,0xFF,0x57,0xE5,0x7E,0x8A,0x59,0x6C, + .seckey={0x53,0x1F,0xDE,0xDB,0xEB,0x50,0xC0,0x49,0x37,0xFF,0x57,0xE5,0x7E,0x8A,0x59,0x6C, 0xC3,0x75,0xF1,0xA0,0x69,0x82,0x62,0xF0,0x06,0xF3,0x1E,0xA0,0xEC,0xA7,0x14,0xEB}, - "rpCWmksupngLFRiYd7Dwn2v9qLr2ipHAFA"}, - {{0x55,0x9F,0x01,0xFB,0x87,0x06,0x8F,0x68,0xB2,0x42,0x5B,0x83,0xC8,0xFE,0x98,0xE3}, - {0x03,0x8F,0x99,0x37,0x38,0xFA,0xA0,0xA4,0x1A,0x07,0xDF,0x9D,0xE9,0x8F,0x5E,0x16, + .addr="rpCWmksupngLFRiYd7Dwn2v9qLr2ipHAFA"}, + {.seed={0x55,0x9F,0x01,0xFB,0x87,0x06,0x8F,0x68,0xB2,0x42,0x5B,0x83,0xC8,0xFE,0x98,0xE3}, + .pubkey={0x03,0x8F,0x99,0x37,0x38,0xFA,0xA0,0xA4,0x1A,0x07,0xDF,0x9D,0xE9,0x8F,0x5E,0x16, 0xBC,0x75,0x98,0xC7,0x51,0x39,0x96,0x63,0x47,0xE5,0x78,0xAB,0xE6,0x1E,0x56,0x5A,0xB8}, - {0x4E,0xC4,0x2C,0x51,0x67,0x8D,0x99,0xC2,0xA3,0x81,0x5F,0x83,0x93,0x4C,0xD6,0xC6, + .seckey={0x4E,0xC4,0x2C,0x51,0x67,0x8D,0x99,0xC2,0xA3,0x81,0x5F,0x83,0x93,0x4C,0xD6,0xC6, 0x23,0x68,0x00,0xE9,0x23,0x83,0xD0,0x5D,0xC6,0x06,0xF9,0xB5,0xA2,0x68,0xB2,0x0C}, - "r9y3WKMydDKLxN3YyxHZi4fNvm2kqMJcCb"}, - {{0x49,0x27,0x9B,0x34,0x0D,0xFF,0xFC,0xF8,0xD7,0x42,0x04,0x66,0x7E,0xF3,0xEC,0x4C}, - {0x03,0x16,0x76,0xEF,0x9A,0xED,0xE0,0x96,0xDA,0x3F,0x97,0xF3,0xF4,0x86,0x66,0xBA, + .addr="r9y3WKMydDKLxN3YyxHZi4fNvm2kqMJcCb"}, + {.seed={0x49,0x27,0x9B,0x34,0x0D,0xFF,0xFC,0xF8,0xD7,0x42,0x04,0x66,0x7E,0xF3,0xEC,0x4C}, + .pubkey={0x03,0x16,0x76,0xEF,0x9A,0xED,0xE0,0x96,0xDA,0x3F,0x97,0xF3,0xF4,0x86,0x66,0xBA, 0x73,0x41,0x03,0xBD,0xBE,0x7A,0x72,0x27,0xEF,0xC3,0x55,0xA3,0x32,0x76,0x7F,0x28,0x60}, - {0xD0,0x36,0x6F,0x72,0xF5,0x3E,0x30,0x54,0x66,0xAB,0x5E,0x8E,0x90,0x00,0xDA,0x4B, + .seckey={0xD0,0x36,0x6F,0x72,0xF5,0x3E,0x30,0x54,0x66,0xAB,0x5E,0x8E,0x90,0x00,0xDA,0x4B, 0x3C,0x29,0x18,0xA8,0x33,0xD3,0x6D,0x1C,0x36,0x61,0xF3,0x89,0x86,0x3B,0x40,0x3F}, - "rL6so6e6amZa5whfyERVc5xPS5T67AMKKS"}, - {{0xFC,0x36,0x64,0x43,0xE6,0x7B,0x56,0xD0,0xB8,0x37,0xE2,0xF4,0x04,0x38,0xD3,0xCF}, - {0x03,0xA2,0xB4,0xEA,0x91,0xE4,0x79,0x11,0xDB,0xA3,0x58,0x08,0x52,0x25,0x73,0x4F, + .addr="rL6so6e6amZa5whfyERVc5xPS5T67AMKKS"}, + {.seed={0xFC,0x36,0x64,0x43,0xE6,0x7B,0x56,0xD0,0xB8,0x37,0xE2,0xF4,0x04,0x38,0xD3,0xCF}, + .pubkey={0x03,0xA2,0xB4,0xEA,0x91,0xE4,0x79,0x11,0xDB,0xA3,0x58,0x08,0x52,0x25,0x73,0x4F, 0xF4,0xD2,0xCB,0xF2,0xE9,0x3F,0x11,0xC7,0x65,0xA5,0x91,0x39,0x7E,0x43,0xA1,0x26,0xCC}, - {0x84,0x00,0xD2,0x01,0x17,0x8E,0x9D,0x59,0xFD,0xBE,0x42,0xB3,0x03,0x22,0x5F,0x5F, + .seckey={0x84,0x00,0xD2,0x01,0x17,0x8E,0x9D,0x59,0xFD,0xBE,0x42,0xB3,0x03,0x22,0x5F,0x5F, 0x6C,0x1E,0x5B,0x44,0x8B,0xEE,0x09,0xE0,0x28,0x38,0x9D,0x9A,0xE3,0xC6,0xBA,0x81}, - "rCDbqPiELAx4yWT6tzxSsLPpRjMAk6Fch"}, - {{0xF6,0x89,0x85,0xC1,0x1D,0x7D,0x8D,0x7D,0xC7,0xE4,0xA0,0x4C,0x6C,0xE4,0x14,0x57}, - {0x02,0xCB,0x96,0xE5,0xBF,0xB8,0x22,0xCB,0x83,0xF3,0xB9,0x0C,0x17,0xB0,0x2F,0x6B, + .addr="rCDbqPiELAx4yWT6tzxSsLPpRjMAk6Fch"}, + {.seed={0xF6,0x89,0x85,0xC1,0x1D,0x7D,0x8D,0x7D,0xC7,0xE4,0xA0,0x4C,0x6C,0xE4,0x14,0x57}, + .pubkey={0x02,0xCB,0x96,0xE5,0xBF,0xB8,0x22,0xCB,0x83,0xF3,0xB9,0x0C,0x17,0xB0,0x2F,0x6B, 0x20,0x9B,0xFD,0x8C,0x50,0x3C,0x18,0x52,0xB4,0xD1,0xE9,0x63,0xD8,0x49,0xAD,0x21,0x90}, - {0x6B,0xCD,0x18,0x4E,0x5B,0x3D,0x86,0x49,0x1A,0x7E,0xFD,0x20,0x1B,0x23,0xB7,0x26, + .seckey={0x6B,0xCD,0x18,0x4E,0x5B,0x3D,0x86,0x49,0x1A,0x7E,0xFD,0x20,0x1B,0x23,0xB7,0x26, 0xCB,0x11,0x97,0x25,0x03,0xF9,0x74,0x2C,0x2D,0x4F,0x98,0xD3,0x39,0xA2,0x50,0x7E}, - "rUYQbfFYyPmSqmoy4B81MR8hZ6AfFGQRdw"}, - {{0xB2,0x2F,0x75,0xE7,0x47,0x95,0xB9,0xBE,0x63,0x05,0xD0,0xBE,0x63,0x62,0xBC,0xDE}, - {0x03,0xA2,0xA9,0x69,0x7F,0x83,0x3D,0x36,0x50,0xB0,0x34,0x4A,0xD1,0x0D,0xD9,0x58, + .addr="rUYQbfFYyPmSqmoy4B81MR8hZ6AfFGQRdw"}, + {.seed={0xB2,0x2F,0x75,0xE7,0x47,0x95,0xB9,0xBE,0x63,0x05,0xD0,0xBE,0x63,0x62,0xBC,0xDE}, + .pubkey={0x03,0xA2,0xA9,0x69,0x7F,0x83,0x3D,0x36,0x50,0xB0,0x34,0x4A,0xD1,0x0D,0xD9,0x58, 0x34,0xC5,0xA8,0x49,0x06,0xA5,0x1F,0x97,0x11,0x39,0x4C,0xFE,0xA9,0x5A,0xBF,0xD3,0x1B}, - {0x97,0x91,0xE1,0xE5,0x89,0x57,0x43,0x49,0x09,0x1C,0xB7,0xF1,0x00,0xC4,0xBE,0x3B, + .seckey={0x97,0x91,0xE1,0xE5,0x89,0x57,0x43,0x49,0x09,0x1C,0xB7,0xF1,0x00,0xC4,0xBE,0x3B, 0xA4,0xD6,0x7F,0x46,0x2F,0x4E,0x3D,0xE7,0x0B,0x3C,0x6F,0xE1,0xFB,0x49,0x9C,0x63}, - "rML4d4KyRFaCS6r77TtzvEQB6WGExUqcv9"}, - {{0x4B,0xAE,0xC7,0x44,0xC6,0x88,0xC1,0x32,0x64,0x5D,0x84,0x64,0x30,0x70,0x34,0x33}, - {0x03,0x22,0x46,0x84,0xAB,0xA5,0xB0,0x09,0x17,0x01,0xC3,0xAB,0x50,0xCA,0x14,0xA2, + .addr="rML4d4KyRFaCS6r77TtzvEQB6WGExUqcv9"}, + {.seed={0x4B,0xAE,0xC7,0x44,0xC6,0x88,0xC1,0x32,0x64,0x5D,0x84,0x64,0x30,0x70,0x34,0x33}, + .pubkey={0x03,0x22,0x46,0x84,0xAB,0xA5,0xB0,0x09,0x17,0x01,0xC3,0xAB,0x50,0xCA,0x14,0xA2, 0x68,0xC6,0xFA,0xDA,0xAF,0x60,0xD1,0xC9,0xD1,0xAC,0x7D,0x35,0x6B,0xDA,0x37,0xC4,0xBF}, - {0x32,0x76,0x88,0xBF,0xAE,0x1F,0x3D,0xCF,0xF4,0x3A,0xBC,0xFA,0xB2,0xD3,0x0C,0xF8, + .seckey={0x32,0x76,0x88,0xBF,0xAE,0x1F,0x3D,0xCF,0xF4,0x3A,0xBC,0xFA,0xB2,0xD3,0x0C,0xF8, 0xD8,0x98,0x11,0x64,0x2F,0x3A,0x3F,0xDC,0x47,0x45,0x41,0xDA,0x29,0x1D,0xB4,0x16}, - "rhuSsVQ4xKy2vDo54usSAKqfwqJPGw6G9F"}, - {{0xE4,0x35,0x2C,0xEF,0x61,0x98,0x0C,0x0D,0x96,0x43,0x37,0x1B,0x15,0x36,0x4C,0x7F}, - {0x03,0xB6,0xBF,0x72,0x89,0xCA,0x30,0x20,0xD3,0xD7,0x7F,0xB5,0x16,0x43,0x41,0x3C, + .addr="rhuSsVQ4xKy2vDo54usSAKqfwqJPGw6G9F"}, + {.seed={0xE4,0x35,0x2C,0xEF,0x61,0x98,0x0C,0x0D,0x96,0x43,0x37,0x1B,0x15,0x36,0x4C,0x7F}, + .pubkey={0x03,0xB6,0xBF,0x72,0x89,0xCA,0x30,0x20,0xD3,0xD7,0x7F,0xB5,0x16,0x43,0x41,0x3C, 0xCC,0x43,0x68,0x8D,0x78,0xB4,0xEE,0x34,0x27,0x1D,0x5C,0x75,0x8F,0xB4,0x08,0x5B,0xA4}, - {0x5A,0x30,0x70,0x43,0x3F,0x4A,0x6A,0x86,0x8A,0x26,0x44,0xAC,0x26,0xCA,0x96,0xCB, + .seckey={0x5A,0x30,0x70,0x43,0x3F,0x4A,0x6A,0x86,0x8A,0x26,0x44,0xAC,0x26,0xCA,0x96,0xCB, 0xAF,0x44,0x2D,0x62,0xBB,0xE4,0x87,0x99,0x51,0x2D,0xA8,0xCF,0xD1,0x38,0xDB,0x95}, - "rJrJVxcGtPvr9FpVdpAGZfvvjGHUKApbni"}, - {{0xD0,0x0C,0xCA,0xD5,0x2B,0x2C,0x4C,0x35,0xA6,0x2F,0x02,0x3B,0xC8,0x11,0xEE,0xA5}, - {0x03,0xAB,0x25,0xBD,0x7F,0x32,0x6C,0xCB,0x08,0x44,0xFF,0x70,0x4C,0xD1,0x22,0x09, + .addr="rJrJVxcGtPvr9FpVdpAGZfvvjGHUKApbni"}, + {.seed={0xD0,0x0C,0xCA,0xD5,0x2B,0x2C,0x4C,0x35,0xA6,0x2F,0x02,0x3B,0xC8,0x11,0xEE,0xA5}, + .pubkey={0x03,0xAB,0x25,0xBD,0x7F,0x32,0x6C,0xCB,0x08,0x44,0xFF,0x70,0x4C,0xD1,0x22,0x09, 0x52,0x67,0x0B,0x7D,0x7C,0x3E,0xE4,0xD1,0x2B,0x05,0x0B,0x5F,0x3D,0xC8,0x2A,0x16,0xE7}, - {0x55,0xA2,0x8E,0x3B,0xA9,0xA1,0x33,0xA1,0x6F,0xA2,0x0E,0x6A,0x5F,0x50,0x47,0x74, + .seckey={0x55,0xA2,0x8E,0x3B,0xA9,0xA1,0x33,0xA1,0x6F,0xA2,0x0E,0x6A,0x5F,0x50,0x47,0x74, 0x85,0xFC,0x39,0xD5,0x21,0x23,0x5B,0x46,0x18,0x94,0x37,0x1C,0x90,0x22,0x07,0x70}, - "rLsjU161cWg3apNv1tPeQ3FKs3MSYUsieW"}, - {{0x08,0x86,0xA3,0x91,0x6D,0xD5,0xF6,0x36,0xCF,0xFD,0x4E,0xD6,0x90,0x64,0x1C,0xA5}, - {0x02,0x3B,0x48,0xD2,0x6E,0xAE,0xF4,0x29,0x4F,0x29,0xA7,0x05,0xB8,0x3A,0x67,0x36, + .addr="rLsjU161cWg3apNv1tPeQ3FKs3MSYUsieW"}, + {.seed={0x08,0x86,0xA3,0x91,0x6D,0xD5,0xF6,0x36,0xCF,0xFD,0x4E,0xD6,0x90,0x64,0x1C,0xA5}, + .pubkey={0x02,0x3B,0x48,0xD2,0x6E,0xAE,0xF4,0x29,0x4F,0x29,0xA7,0x05,0xB8,0x3A,0x67,0x36, 0xDA,0xCF,0xEB,0x72,0x34,0x3A,0xA5,0x13,0x9A,0xF5,0x2E,0x91,0xC8,0xED,0x27,0x8B,0xE7}, - {0xB4,0x67,0x02,0xDA,0xD6,0xBB,0x10,0x74,0x38,0x0D,0xFB,0xA7,0x5E,0x1F,0xD4,0x07, + .seckey={0xB4,0x67,0x02,0xDA,0xD6,0xBB,0x10,0x74,0x38,0x0D,0xFB,0xA7,0x5E,0x1F,0xD4,0x07, 0x37,0xCA,0x86,0x03,0x42,0x81,0xF7,0x88,0x81,0x86,0xF7,0xFF,0x04,0xE0,0xD5,0xA9}, - "rEvTZcokycXRHtvhvNphV6z3792SxGqXXL"}, - {{0x96,0x14,0x14,0xBE,0xCC,0x47,0xFF,0xD8,0x5B,0x6A,0x58,0x7A,0x07,0x32,0x3B,0x81}, - {0x03,0x58,0x9F,0xAB,0x0E,0xE6,0xA2,0x4C,0x5F,0x69,0x5E,0xD3,0xB5,0xD7,0x55,0x84, + .addr="rEvTZcokycXRHtvhvNphV6z3792SxGqXXL"}, + {.seed={0x96,0x14,0x14,0xBE,0xCC,0x47,0xFF,0xD8,0x5B,0x6A,0x58,0x7A,0x07,0x32,0x3B,0x81}, + .pubkey={0x03,0x58,0x9F,0xAB,0x0E,0xE6,0xA2,0x4C,0x5F,0x69,0x5E,0xD3,0xB5,0xD7,0x55,0x84, 0x8D,0xAE,0xB0,0x95,0x48,0xEB,0x87,0xE8,0x51,0xF4,0x5C,0xB2,0x52,0x50,0x81,0x5E,0xAE}, - {0xDC,0x68,0x56,0x7F,0x75,0x88,0x8D,0xB3,0xB9,0xD2,0x53,0x07,0x34,0x94,0xA3,0xDD, + .seckey={0xDC,0x68,0x56,0x7F,0x75,0x88,0x8D,0xB3,0xB9,0xD2,0x53,0x07,0x34,0x94,0xA3,0xDD, 0x0E,0x54,0xBD,0x25,0x21,0x08,0x9B,0xEA,0x1D,0x3F,0xA7,0x81,0x2E,0x01,0xFB,0x12}, - "rLmR9oBFB9dk7xzshrRtCaLQqB35ZnFR7u"}, - {{0xD0,0x73,0x46,0x77,0x1B,0x7C,0xDD,0xF5,0xB8,0xC6,0xAD,0x6D,0x61,0xFA,0x39,0x5A}, - {0x03,0x2C,0x6E,0x59,0xED,0x4C,0xED,0x4F,0xDF,0x99,0x3A,0x81,0x38,0xA0,0x82,0x49, + .addr="rLmR9oBFB9dk7xzshrRtCaLQqB35ZnFR7u"}, + {.seed={0xD0,0x73,0x46,0x77,0x1B,0x7C,0xDD,0xF5,0xB8,0xC6,0xAD,0x6D,0x61,0xFA,0x39,0x5A}, + .pubkey={0x03,0x2C,0x6E,0x59,0xED,0x4C,0xED,0x4F,0xDF,0x99,0x3A,0x81,0x38,0xA0,0x82,0x49, 0xA9,0x08,0xCB,0x5F,0x4D,0x09,0x77,0x8A,0xF2,0xAD,0x2E,0xDE,0x21,0x71,0xC4,0x68,0x0D}, - {0xA7,0x19,0x7C,0x70,0xAC,0x21,0xB5,0x88,0xB5,0xB5,0x30,0x5E,0x35,0x80,0x6F,0x18, + .seckey={0xA7,0x19,0x7C,0x70,0xAC,0x21,0xB5,0x88,0xB5,0xB5,0x30,0x5E,0x35,0x80,0x6F,0x18, 0xA6,0x74,0x3F,0x2F,0x55,0x5A,0xDE,0xF7,0x9A,0xAC,0xAC,0xE9,0x5D,0x5B,0x02,0xD2}, - "rfJ21METXMqkygW1qWJHZnBPhXHAmjSKwn"}, - {{0xE6,0x8F,0x9A,0xA4,0x0E,0x73,0x2B,0x57,0x13,0xEE,0x4D,0xC3,0xDD,0xB8,0xB9,0x75}, - {0x02,0x20,0x8D,0x14,0xE1,0x30,0xF2,0x50,0xC3,0xDD,0x37,0xBF,0x89,0x13,0x46,0xF2, + .addr="rfJ21METXMqkygW1qWJHZnBPhXHAmjSKwn"}, + {.seed={0xE6,0x8F,0x9A,0xA4,0x0E,0x73,0x2B,0x57,0x13,0xEE,0x4D,0xC3,0xDD,0xB8,0xB9,0x75}, + .pubkey={0x02,0x20,0x8D,0x14,0xE1,0x30,0xF2,0x50,0xC3,0xDD,0x37,0xBF,0x89,0x13,0x46,0xF2, 0x35,0xE2,0x75,0x52,0x91,0x0C,0x1F,0x16,0x0A,0x1A,0x3B,0xF7,0xD1,0x8F,0xF9,0x87,0xBF}, - {0x17,0x49,0xCE,0xFB,0xA1,0xD2,0x03,0xBC,0x53,0x4C,0x66,0x6F,0x9B,0x4E,0x88,0x5A, + .seckey={0x17,0x49,0xCE,0xFB,0xA1,0xD2,0x03,0xBC,0x53,0x4C,0x66,0x6F,0x9B,0x4E,0x88,0x5A, 0xCB,0xBB,0x25,0x96,0x59,0x48,0x72,0xC5,0xD3,0x8C,0x35,0x29,0x44,0x6F,0x02,0xB0}, - "rKtzApfAhyETwX6uhgAxPHXELzd9snNNQp"}, - {{0x00,0x5B,0x64,0x20,0x65,0xF1,0x78,0x8D,0x52,0x3B,0x14,0x8C,0x72,0xB3,0x36,0x95}, - {0x02,0xFB,0xF2,0xC9,0x46,0x4A,0x2D,0x61,0xF0,0xD6,0x3A,0x26,0x10,0xD2,0x1E,0xAC, + .addr="rKtzApfAhyETwX6uhgAxPHXELzd9snNNQp"}, + {.seed={0x00,0x5B,0x64,0x20,0x65,0xF1,0x78,0x8D,0x52,0x3B,0x14,0x8C,0x72,0xB3,0x36,0x95}, + .pubkey={0x02,0xFB,0xF2,0xC9,0x46,0x4A,0x2D,0x61,0xF0,0xD6,0x3A,0x26,0x10,0xD2,0x1E,0xAC, 0xD3,0xAB,0x13,0xF1,0x22,0xB5,0x67,0xBD,0xA5,0xF8,0x22,0x3D,0x2A,0xE0,0x92,0x17,0xCE}, - {0xDF,0xCB,0xE0,0x55,0xF4,0x02,0x89,0x24,0xF0,0x8E,0xE0,0x7E,0x5E,0x1E,0xCA,0x70, + .seckey={0xDF,0xCB,0xE0,0x55,0xF4,0x02,0x89,0x24,0xF0,0x8E,0xE0,0x7E,0x5E,0x1E,0xCA,0x70, 0x5B,0x27,0x05,0x1C,0xAF,0x2B,0xA9,0x04,0xA4,0xCC,0x4A,0x41,0x69,0xCE,0xF3,0x56}, - "rfZGGsJvDoKuQugtqe6F3gYF2acVsakwpN"}, - {{0x04,0x85,0xFB,0x73,0xE3,0x20,0x9F,0x46,0x61,0x24,0xD7,0x0B,0x73,0x01,0x3B,0x7F}, - {0x03,0xD6,0x4A,0xFF,0x62,0x93,0xC5,0xF2,0xAB,0x1E,0x49,0xD9,0x43,0x87,0x4E,0x9D, + .addr="rfZGGsJvDoKuQugtqe6F3gYF2acVsakwpN"}, + {.seed={0x04,0x85,0xFB,0x73,0xE3,0x20,0x9F,0x46,0x61,0x24,0xD7,0x0B,0x73,0x01,0x3B,0x7F}, + .pubkey={0x03,0xD6,0x4A,0xFF,0x62,0x93,0xC5,0xF2,0xAB,0x1E,0x49,0xD9,0x43,0x87,0x4E,0x9D, 0x8C,0x1C,0x8E,0x31,0x0D,0xE3,0x12,0x9B,0xDA,0x1C,0xBE,0x68,0x35,0x67,0x10,0xCB,0x7E}, - {0xB8,0x75,0xD8,0x38,0xF9,0x8E,0xEE,0x21,0x52,0x08,0x52,0xD1,0xE6,0x8D,0x1D,0x24, + .seckey={0xB8,0x75,0xD8,0x38,0xF9,0x8E,0xEE,0x21,0x52,0x08,0x52,0xD1,0xE6,0x8D,0x1D,0x24, 0x57,0x4D,0x3D,0xD1,0x17,0xA9,0xD4,0x03,0xE3,0xB5,0xD5,0x71,0x75,0x0D,0x43,0xFE}, - "rrpPqHKZZirhRZXERvhd4uaNviXFxPfAqL"}, - {{0x6E,0x3B,0xA9,0x5A,0x9B,0x01,0x25,0x68,0x72,0xC6,0x92,0x0B,0x8E,0x41,0x66,0xC1}, - {0x03,0xA5,0x99,0x0F,0xC7,0x1B,0x92,0xB3,0x07,0x0C,0x45,0xBC,0x84,0x31,0x61,0x9C, + .addr="rrpPqHKZZirhRZXERvhd4uaNviXFxPfAqL"}, + {.seed={0x6E,0x3B,0xA9,0x5A,0x9B,0x01,0x25,0x68,0x72,0xC6,0x92,0x0B,0x8E,0x41,0x66,0xC1}, + .pubkey={0x03,0xA5,0x99,0x0F,0xC7,0x1B,0x92,0xB3,0x07,0x0C,0x45,0xBC,0x84,0x31,0x61,0x9C, 0xF8,0x86,0x20,0x90,0x20,0x16,0x26,0xB9,0xCC,0x55,0x96,0x1E,0x6B,0x90,0xE0,0x5C,0x04}, - {0x47,0xC2,0xE3,0xBB,0x91,0xC2,0xBD,0x02,0x63,0x11,0xC6,0x9D,0x09,0x6D,0x1E,0xE0, + .seckey={0x47,0xC2,0xE3,0xBB,0x91,0xC2,0xBD,0x02,0x63,0x11,0xC6,0x9D,0x09,0x6D,0x1E,0xE0, 0xD3,0x15,0x78,0x14,0xF5,0x0A,0x20,0x8C,0xF1,0x58,0xB4,0x98,0xF6,0xF5,0x45,0x61}, - "rLK3rs3qjCoMEZ4NymVLn3xQ48Y3HWxSJT"}, - {{0xDC,0x53,0x22,0x9E,0x30,0x02,0xAF,0xFB,0x9B,0x78,0x97,0xD5,0x74,0x02,0x40,0x11}, - {0x02,0xD1,0xA5,0x65,0x10,0x30,0xE8,0xE8,0x49,0x1E,0x4C,0xCB,0xDA,0xDD,0xC1,0x6D, + .addr="rLK3rs3qjCoMEZ4NymVLn3xQ48Y3HWxSJT"}, + {.seed={0xDC,0x53,0x22,0x9E,0x30,0x02,0xAF,0xFB,0x9B,0x78,0x97,0xD5,0x74,0x02,0x40,0x11}, + .pubkey={0x02,0xD1,0xA5,0x65,0x10,0x30,0xE8,0xE8,0x49,0x1E,0x4C,0xCB,0xDA,0xDD,0xC1,0x6D, 0x77,0x2B,0xBA,0x2D,0x66,0x77,0x5C,0xB7,0xF7,0x5F,0xE2,0xD8,0x17,0x68,0x93,0x36,0x0A}, - {0xF7,0x7C,0x0B,0x27,0x03,0xB6,0xEE,0x18,0x47,0x32,0x32,0x60,0xC0,0x41,0x57,0x6D, + .seckey={0xF7,0x7C,0x0B,0x27,0x03,0xB6,0xEE,0x18,0x47,0x32,0x32,0x60,0xC0,0x41,0x57,0x6D, 0x67,0xB0,0x1A,0x88,0x7E,0x14,0x35,0xF3,0xCB,0xDC,0x80,0xE3,0x63,0x4B,0xE2,0xE6}, - "rQDdUbPvEMn2GyZaHcaoLA5kb3tc2Hmcjw"}, - {{0x28,0x60,0x32,0xD1,0x23,0x21,0x4B,0xBB,0xC2,0x9A,0x46,0x47,0x6F,0x44,0x23,0xD6}, - {0x03,0xC6,0xB0,0x71,0x0D,0x59,0x5B,0x3D,0xE9,0x45,0x69,0x08,0x86,0x7C,0x7B,0x4C, + .addr="rQDdUbPvEMn2GyZaHcaoLA5kb3tc2Hmcjw"}, + {.seed={0x28,0x60,0x32,0xD1,0x23,0x21,0x4B,0xBB,0xC2,0x9A,0x46,0x47,0x6F,0x44,0x23,0xD6}, + .pubkey={0x03,0xC6,0xB0,0x71,0x0D,0x59,0x5B,0x3D,0xE9,0x45,0x69,0x08,0x86,0x7C,0x7B,0x4C, 0x0B,0x1A,0x0C,0x3D,0xDE,0x6B,0x50,0x80,0xCA,0x74,0x03,0x6A,0xBC,0x9D,0x45,0x31,0x21}, - {0xD5,0xAC,0xDA,0x20,0xD0,0x09,0xEF,0x93,0xD3,0xC0,0xF7,0xB9,0x08,0x20,0x3A,0xFA, + .seckey={0xD5,0xAC,0xDA,0x20,0xD0,0x09,0xEF,0x93,0xD3,0xC0,0xF7,0xB9,0x08,0x20,0x3A,0xFA, 0x6D,0x5C,0xDC,0xD6,0x5F,0xC3,0xD6,0x02,0x66,0x5D,0x63,0x11,0x02,0x23,0x56,0xD4}, - "rsaHcnSaQqyUh3ZHbfBXoVA2kU5DcsoLev"}, - {{0x41,0x21,0xFA,0x4A,0xDC,0x02,0xF0,0xF9,0x49,0x08,0x95,0xEA,0xF0,0x4A,0xEC,0x39}, - {0x03,0x56,0x5B,0x47,0xFF,0x02,0x01,0x64,0x64,0x0B,0x6F,0xE3,0x45,0x63,0xC6,0xD6, + .addr="rsaHcnSaQqyUh3ZHbfBXoVA2kU5DcsoLev"}, + {.seed={0x41,0x21,0xFA,0x4A,0xDC,0x02,0xF0,0xF9,0x49,0x08,0x95,0xEA,0xF0,0x4A,0xEC,0x39}, + .pubkey={0x03,0x56,0x5B,0x47,0xFF,0x02,0x01,0x64,0x64,0x0B,0x6F,0xE3,0x45,0x63,0xC6,0xD6, 0xD8,0xC7,0x95,0xFB,0x28,0x2F,0xD0,0x16,0x3E,0xDE,0xB5,0x05,0x89,0xCE,0x91,0x87,0xDA}, - {0x92,0x91,0x84,0x4E,0x08,0x44,0x8F,0x8D,0x38,0xAE,0xF8,0xB3,0xC3,0xD8,0x3A,0xF3, + .seckey={0x92,0x91,0x84,0x4E,0x08,0x44,0x8F,0x8D,0x38,0xAE,0xF8,0xB3,0xC3,0xD8,0x3A,0xF3, 0x6B,0x6C,0xD5,0x64,0x59,0x7F,0x5C,0x31,0x82,0x05,0xE7,0x38,0x82,0xF7,0xB1,0x9D}, - "rfD992xwtGE81HFt63FJ9GrmjqpMmE9DjX"}, - {{0x51,0x47,0x8C,0x21,0xB8,0xBA,0x1A,0x79,0x79,0x3E,0x4E,0x1F,0x84,0xC5,0xF2,0xAF}, - {0x02,0xBD,0xD3,0xCE,0x87,0xE0,0x71,0xD1,0x43,0x12,0x78,0x09,0x27,0x13,0x93,0x3A, + .addr="rfD992xwtGE81HFt63FJ9GrmjqpMmE9DjX"}, + {.seed={0x51,0x47,0x8C,0x21,0xB8,0xBA,0x1A,0x79,0x79,0x3E,0x4E,0x1F,0x84,0xC5,0xF2,0xAF}, + .pubkey={0x02,0xBD,0xD3,0xCE,0x87,0xE0,0x71,0xD1,0x43,0x12,0x78,0x09,0x27,0x13,0x93,0x3A, 0xB0,0xE8,0xAC,0x70,0x50,0x20,0x7E,0x03,0xC7,0x25,0xCA,0xF2,0x2C,0xE3,0x56,0xF0,0x80}, - {0xBD,0x3F,0xDA,0x5C,0x4B,0xB2,0xAA,0x89,0xD2,0x31,0x70,0x07,0xDF,0x2A,0x20,0xBB, + .seckey={0xBD,0x3F,0xDA,0x5C,0x4B,0xB2,0xAA,0x89,0xD2,0x31,0x70,0x07,0xDF,0x2A,0x20,0xBB, 0xD3,0x12,0x96,0xC1,0xCC,0x6F,0xDD,0xCB,0xC4,0xFD,0x71,0xCA,0xDC,0xAE,0x3B,0xFA}, - "rfvXs2SzVri4gK7iLo89V1VagjZFxXo9Yy"}, - {{0x7B,0x12,0x69,0x74,0x33,0xD8,0x99,0x4D,0x1E,0xBF,0x98,0x69,0x0D,0x57,0xA4,0x1C}, - {0x03,0x3A,0x6B,0x78,0x60,0x0C,0x0B,0x47,0xB2,0x81,0x63,0x47,0x3C,0x9A,0x48,0x23, + .addr="rfvXs2SzVri4gK7iLo89V1VagjZFxXo9Yy"}, + {.seed={0x7B,0x12,0x69,0x74,0x33,0xD8,0x99,0x4D,0x1E,0xBF,0x98,0x69,0x0D,0x57,0xA4,0x1C}, + .pubkey={0x03,0x3A,0x6B,0x78,0x60,0x0C,0x0B,0x47,0xB2,0x81,0x63,0x47,0x3C,0x9A,0x48,0x23, 0x5C,0xC0,0x86,0xDE,0xAF,0x92,0xA5,0xC6,0x99,0xA0,0xA9,0x66,0xBB,0xA6,0x43,0x79,0x1F}, - {0x9A,0xD7,0x7A,0xEF,0x71,0x7B,0x26,0x32,0x3C,0xCC,0xE4,0xDE,0x74,0xAB,0x69,0x0C, + .seckey={0x9A,0xD7,0x7A,0xEF,0x71,0x7B,0x26,0x32,0x3C,0xCC,0xE4,0xDE,0x74,0xAB,0x69,0x0C, 0x65,0x00,0xEE,0x33,0x43,0x73,0xA4,0xA3,0x29,0x3F,0x78,0x15,0x76,0xF7,0x43,0xB2}, - "rfPrK4Wd87KNxS8sHY4YwWvhcWafGUr6MA"}, - {{0x8F,0x94,0xC3,0xE1,0xD5,0xFF,0xBB,0x25,0x8B,0xF0,0xA1,0xF5,0xD9,0x3D,0xAE,0x95}, - {0x02,0x48,0x25,0x2D,0x93,0x06,0x30,0x16,0xD4,0xF6,0xCF,0xCB,0x4B,0xA4,0xCA,0x21, + .addr="rfPrK4Wd87KNxS8sHY4YwWvhcWafGUr6MA"}, + {.seed={0x8F,0x94,0xC3,0xE1,0xD5,0xFF,0xBB,0x25,0x8B,0xF0,0xA1,0xF5,0xD9,0x3D,0xAE,0x95}, + .pubkey={0x02,0x48,0x25,0x2D,0x93,0x06,0x30,0x16,0xD4,0xF6,0xCF,0xCB,0x4B,0xA4,0xCA,0x21, 0x7C,0x91,0x92,0x62,0x19,0x41,0x97,0xDD,0x91,0x15,0x05,0x72,0x64,0x3A,0xBB,0xA6,0x67}, - {0x86,0xD3,0x84,0xF4,0x45,0xF9,0xF7,0xA0,0x73,0x8C,0xB8,0xE1,0xAB,0xE0,0xFA,0xAB, + .seckey={0x86,0xD3,0x84,0xF4,0x45,0xF9,0xF7,0xA0,0x73,0x8C,0xB8,0xE1,0xAB,0xE0,0xFA,0xAB, 0x09,0x8B,0xDE,0xD4,0x82,0x76,0x49,0xCA,0x31,0xC0,0xB8,0x75,0xD0,0x9D,0x1C,0x33}, - "rJ7VtUxctZEXqeYud3Caakv21UJksrXouq"}, - {{0xD0,0x2B,0xFC,0x58,0xC1,0xF6,0xCC,0xEC,0x84,0xB4,0x2D,0x2A,0x80,0xD2,0x51,0x78}, - {0x03,0xBB,0xF0,0xD5,0x04,0x63,0xFE,0x0E,0x28,0x9F,0x1D,0x4F,0xF3,0x0F,0x14,0x82, + .addr="rJ7VtUxctZEXqeYud3Caakv21UJksrXouq"}, + {.seed={0xD0,0x2B,0xFC,0x58,0xC1,0xF6,0xCC,0xEC,0x84,0xB4,0x2D,0x2A,0x80,0xD2,0x51,0x78}, + .pubkey={0x03,0xBB,0xF0,0xD5,0x04,0x63,0xFE,0x0E,0x28,0x9F,0x1D,0x4F,0xF3,0x0F,0x14,0x82, 0x23,0x00,0xDB,0x6B,0x90,0x9F,0x9A,0x52,0x78,0x82,0x26,0x1F,0x72,0x18,0xF5,0x49,0xDD}, - {0x7B,0xA2,0x53,0x96,0x22,0x33,0x6E,0x49,0xD7,0xCA,0xE8,0x15,0x46,0xD1,0xD5,0xDA, + .seckey={0x7B,0xA2,0x53,0x96,0x22,0x33,0x6E,0x49,0xD7,0xCA,0xE8,0x15,0x46,0xD1,0xD5,0xDA, 0xB5,0x84,0xBD,0x35,0x68,0xEB,0x6C,0x00,0x8F,0xE4,0xDA,0xC7,0x11,0x07,0x62,0xED}, - "rPp3JQPodyon8FS3Xi7vmj7eLkVuQG3DNw"}, - {{0x70,0xD0,0xFA,0x4C,0xE3,0x0E,0xBD,0x73,0x7B,0x1E,0xEE,0x48,0x25,0x2F,0xAC,0xAE}, - {0x03,0x29,0x71,0xCB,0xB1,0x40,0xBF,0xCB,0x43,0x1D,0x23,0xDC,0x29,0x30,0x71,0x3B, + .addr="rPp3JQPodyon8FS3Xi7vmj7eLkVuQG3DNw"}, + {.seed={0x70,0xD0,0xFA,0x4C,0xE3,0x0E,0xBD,0x73,0x7B,0x1E,0xEE,0x48,0x25,0x2F,0xAC,0xAE}, + .pubkey={0x03,0x29,0x71,0xCB,0xB1,0x40,0xBF,0xCB,0x43,0x1D,0x23,0xDC,0x29,0x30,0x71,0x3B, 0xEC,0xA3,0x23,0xC3,0x65,0x98,0x52,0x27,0x5D,0x2A,0x6E,0x79,0xD2,0x43,0xC1,0xE7,0xB7}, - {0x03,0xFD,0x46,0xBA,0xC2,0x9F,0x06,0x73,0x31,0x47,0x7B,0x94,0x81,0x20,0x54,0x78, + .seckey={0x03,0xFD,0x46,0xBA,0xC2,0x9F,0x06,0x73,0x31,0x47,0x7B,0x94,0x81,0x20,0x54,0x78, 0x0D,0x48,0x81,0x6A,0x89,0xBD,0x9D,0xA2,0xF0,0x85,0xDA,0x2F,0x1D,0x01,0xC7,0x22}, - "rLj3kdAoNSaLbM78rZL4sxPzLUmnD6TJx9"}, - {{0x09,0xD8,0x00,0x1B,0xF3,0xED,0x9D,0x61,0x37,0xAA,0xF9,0x2A,0x59,0xB7,0xE5,0x83}, - {0x03,0x3F,0x4D,0x07,0xBC,0xEA,0x06,0xB8,0x52,0xD0,0x42,0xDC,0x2B,0x18,0x5E,0xAD, + .addr="rLj3kdAoNSaLbM78rZL4sxPzLUmnD6TJx9"}, + {.seed={0x09,0xD8,0x00,0x1B,0xF3,0xED,0x9D,0x61,0x37,0xAA,0xF9,0x2A,0x59,0xB7,0xE5,0x83}, + .pubkey={0x03,0x3F,0x4D,0x07,0xBC,0xEA,0x06,0xB8,0x52,0xD0,0x42,0xDC,0x2B,0x18,0x5E,0xAD, 0xEA,0xF1,0x42,0x5A,0x2B,0x73,0xD4,0xF5,0x74,0x1B,0x05,0xD4,0x9C,0x1B,0xE6,0xDF,0x59}, - {0x5B,0x6A,0x89,0x0A,0x3C,0x10,0xA9,0xAE,0x72,0x89,0xC2,0x9A,0x4D,0xFA,0xE9,0xFE, + .seckey={0x5B,0x6A,0x89,0x0A,0x3C,0x10,0xA9,0xAE,0x72,0x89,0xC2,0x9A,0x4D,0xFA,0xE9,0xFE, 0x36,0x8C,0xDA,0xE5,0x57,0x9A,0x39,0xF6,0xB6,0xE3,0xDB,0x27,0x46,0xFE,0x64,0xB1}, - "rU39rkKyaPEDdSmyqTiwAzMWHXvFDjtgvB"}, - {{0x31,0x4D,0x49,0x2B,0x8D,0x6A,0x2A,0xCC,0x18,0x6C,0x4D,0xEF,0x51,0xC7,0x5A,0x88}, - {0x03,0x7A,0x92,0xC7,0x9E,0xC2,0x64,0xFA,0x7E,0x8B,0x27,0x80,0xB1,0x43,0xF2,0x78, + .addr="rU39rkKyaPEDdSmyqTiwAzMWHXvFDjtgvB"}, + {.seed={0x31,0x4D,0x49,0x2B,0x8D,0x6A,0x2A,0xCC,0x18,0x6C,0x4D,0xEF,0x51,0xC7,0x5A,0x88}, + .pubkey={0x03,0x7A,0x92,0xC7,0x9E,0xC2,0x64,0xFA,0x7E,0x8B,0x27,0x80,0xB1,0x43,0xF2,0x78, 0x98,0x42,0xF5,0x11,0xB9,0x83,0x2D,0xEA,0xB2,0x80,0x11,0x36,0x78,0x27,0xF6,0x4C,0x06}, - {0x10,0xF6,0x70,0xA7,0x7C,0x5F,0x7C,0x47,0x35,0xE0,0x83,0xA0,0x42,0x4E,0xF2,0x9F, + .seckey={0x10,0xF6,0x70,0xA7,0x7C,0x5F,0x7C,0x47,0x35,0xE0,0x83,0xA0,0x42,0x4E,0xF2,0x9F, 0x17,0x6E,0xA8,0xEA,0xD3,0x5B,0x0B,0x4C,0x09,0xB8,0x8C,0x5B,0xFF,0x1C,0x67,0xF1}, - "rstDhfAJHDmJ6bJWMo6cmRR4BqDDBtfVZY"}, - {{0x44,0x21,0x1C,0x1C,0xAB,0x78,0x83,0xA4,0x62,0x56,0xA6,0x2D,0x59,0x39,0x47,0x7B}, - {0x02,0x88,0xEC,0xDF,0x6A,0x6C,0x38,0x63,0x4D,0xF9,0xA1,0x02,0x82,0xDD,0x65,0x5A, + .addr="rstDhfAJHDmJ6bJWMo6cmRR4BqDDBtfVZY"}, + {.seed={0x44,0x21,0x1C,0x1C,0xAB,0x78,0x83,0xA4,0x62,0x56,0xA6,0x2D,0x59,0x39,0x47,0x7B}, + .pubkey={0x02,0x88,0xEC,0xDF,0x6A,0x6C,0x38,0x63,0x4D,0xF9,0xA1,0x02,0x82,0xDD,0x65,0x5A, 0x84,0x50,0x26,0x12,0x6F,0xA9,0x60,0x66,0x20,0x25,0xD9,0xBC,0xC4,0x42,0x1C,0xE0,0x76}, - {0x31,0x7D,0x2F,0x06,0xFA,0xBC,0xC2,0xE1,0x37,0x89,0x58,0x57,0x76,0x62,0xDB,0x76, + .seckey={0x31,0x7D,0x2F,0x06,0xFA,0xBC,0xC2,0xE1,0x37,0x89,0x58,0x57,0x76,0x62,0xDB,0x76, 0x4D,0x5F,0x43,0x19,0x35,0xA4,0xB6,0x95,0x64,0xBA,0x98,0x53,0xCA,0x9C,0x94,0xAF}, - "rLdLivptphqe4SLAEWaTYoD9ur5af5dnJ1"}, - {{0xDB,0xEB,0xF6,0xC6,0x1D,0x64,0x25,0xAF,0xB4,0x52,0x85,0x83,0xA4,0x21,0x2E,0x57}, - {0x02,0x20,0x87,0xC0,0xBA,0xCD,0x25,0xEC,0x51,0x4B,0xE7,0x73,0x5E,0x1C,0x28,0x39, + .addr="rLdLivptphqe4SLAEWaTYoD9ur5af5dnJ1"}, + {.seed={0xDB,0xEB,0xF6,0xC6,0x1D,0x64,0x25,0xAF,0xB4,0x52,0x85,0x83,0xA4,0x21,0x2E,0x57}, + .pubkey={0x02,0x20,0x87,0xC0,0xBA,0xCD,0x25,0xEC,0x51,0x4B,0xE7,0x73,0x5E,0x1C,0x28,0x39, 0xA1,0x82,0xFB,0xC6,0x81,0x2B,0xE8,0xC4,0x0F,0x22,0xF4,0xE5,0x27,0x97,0x7E,0x31,0xFC}, - {0xFF,0x37,0xB9,0xD1,0x0E,0x21,0x52,0x35,0x18,0x76,0x37,0xA7,0xB8,0x96,0xB9,0x69, + .seckey={0xFF,0x37,0xB9,0xD1,0x0E,0x21,0x52,0x35,0x18,0x76,0x37,0xA7,0xB8,0x96,0xB9,0x69, 0xB9,0xA3,0x5B,0xC9,0xB1,0x6A,0x18,0x14,0x9F,0xDB,0xE2,0x69,0xEF,0x59,0x28,0x70}, - "rsYryUWhbYRiQivh693pgjnseAwPHezNj1"} + .addr="rsYryUWhbYRiQivh693pgjnseAwPHezNj1"} }; inline static TestKeyData const ed25519TestVectors[] = { - {{0xAF,0x41,0xFF,0x66,0xF7,0x5E,0xBD,0x3A,0x6B,0x18,0xFB,0x7A,0x1D,0xF6,0x1C,0x97}, - {0xED,0x48,0xCB,0xBB,0xE0,0xEE,0x7B,0x86,0x86,0xA7,0xDE,0x9F,0x0A,0x01,0x59,0x73, + {.seed={0xAF,0x41,0xFF,0x66,0xF7,0x5E,0xBD,0x3A,0x6B,0x18,0xFB,0x7A,0x1D,0xF6,0x1C,0x97}, + .pubkey={0xED,0x48,0xCB,0xBB,0xE0,0xEE,0x7B,0x86,0x86,0xA7,0xDE,0x9F,0x0A,0x01,0x59,0x73, 0x4E,0x65,0xF9,0xC3,0x69,0x94,0x7F,0x2E,0x26,0x96,0x23,0x2B,0x46,0x1E,0x55,0x32,0x13}, - {0x1A,0x10,0x97,0xFC,0xD9,0xCE,0x4E,0x1D,0xA2,0x46,0x66,0xB6,0x98,0x87,0x97,0x66, + .seckey={0x1A,0x10,0x97,0xFC,0xD9,0xCE,0x4E,0x1D,0xA2,0x46,0x66,0xB6,0x98,0x87,0x97,0x66, 0xE1,0x75,0x75,0x47,0xD1,0xD4,0xE3,0x64,0xB6,0x43,0x55,0xF7,0xC8,0x4B,0xA0,0xF3}, - "rVAEQBhWT6nZ4woEifdN3TMMdUZaxeXnR"}, - {{0x14,0x0C,0x1D,0x08,0x13,0x19,0x33,0x9C,0x79,0x9D,0xC6,0xA1,0x65,0x95,0x1B,0xE1}, - {0xED,0x3B,0xC8,0x2E,0xF4,0x5F,0x89,0x09,0xCC,0x00,0xF8,0xB7,0xAA,0xF0,0x59,0x31, + .addr="rVAEQBhWT6nZ4woEifdN3TMMdUZaxeXnR"}, + {.seed={0x14,0x0C,0x1D,0x08,0x13,0x19,0x33,0x9C,0x79,0x9D,0xC6,0xA1,0x65,0x95,0x1B,0xE1}, + .pubkey={0xED,0x3B,0xC8,0x2E,0xF4,0x5F,0x89,0x09,0xCC,0x00,0xF8,0xB7,0xAA,0xF0,0x59,0x31, 0x68,0x14,0x11,0x75,0x8C,0x11,0x71,0x24,0x87,0x50,0x66,0xC2,0x83,0x98,0xFE,0x15,0x6D}, - {0xFE,0x3E,0x5A,0x82,0xB8,0x0D,0xD8,0x2E,0x91,0x5F,0x76,0x38,0x94,0x2A,0x33,0x2C, + .seckey={0xFE,0x3E,0x5A,0x82,0xB8,0x0D,0xD8,0x2E,0x91,0x5F,0x76,0x38,0x94,0x2A,0x33,0x2C, 0xE3,0x06,0x88,0x79,0x74,0x0C,0x7E,0x90,0xE2,0x20,0xA4,0xFB,0x0B,0x37,0xCE,0xC8}, - "rK57dJ9533WtoY8NNwVWGY7ffuAc8WCcPE"}, - {{0x86,0x53,0x23,0xB6,0xE4,0x5A,0xD6,0xEE,0xFA,0x27,0x9F,0xA5,0x84,0x85,0x2E,0xD4}, - {0xED,0xE8,0x34,0x22,0xEB,0xE0,0x75,0x70,0x73,0x12,0x66,0x1E,0x4B,0x03,0x3A,0x29, + .addr="rK57dJ9533WtoY8NNwVWGY7ffuAc8WCcPE"}, + {.seed={0x86,0x53,0x23,0xB6,0xE4,0x5A,0xD6,0xEE,0xFA,0x27,0x9F,0xA5,0x84,0x85,0x2E,0xD4}, + .pubkey={0xED,0xE8,0x34,0x22,0xEB,0xE0,0x75,0x70,0x73,0x12,0x66,0x1E,0x4B,0x03,0x3A,0x29, 0xBA,0x86,0x38,0x62,0x30,0x50,0x0C,0xF2,0x8C,0xF1,0x65,0xF3,0xC2,0x1E,0x90,0x6D,0x00}, - {0xA3,0xC4,0xE2,0x43,0xA4,0x64,0x4E,0x73,0x8A,0x24,0x7A,0x59,0xAA,0xBB,0x5C,0x89, + .seckey={0xA3,0xC4,0xE2,0x43,0xA4,0x64,0x4E,0x73,0x8A,0x24,0x7A,0x59,0xAA,0xBB,0x5C,0x89, 0xE4,0x09,0x0D,0x1B,0x73,0x02,0xF2,0x45,0x82,0x64,0x87,0xC8,0x38,0xDA,0x69,0x89}, - "rfZiEDieHSHsQJ1UNfv2jYDuQawdRSBFwz"}, - {{0xC3,0x90,0x0B,0x26,0x1C,0x5E,0x7D,0x50,0xBA,0xC7,0x12,0x2D,0x97,0x35,0xDB,0xF9}, - {0xED,0x8D,0x64,0x8A,0x7B,0xD5,0xAD,0x7E,0xF2,0x41,0x5A,0x5D,0x38,0xA9,0xC1,0x3A, + .addr="rfZiEDieHSHsQJ1UNfv2jYDuQawdRSBFwz"}, + {.seed={0xC3,0x90,0x0B,0x26,0x1C,0x5E,0x7D,0x50,0xBA,0xC7,0x12,0x2D,0x97,0x35,0xDB,0xF9}, + .pubkey={0xED,0x8D,0x64,0x8A,0x7B,0xD5,0xAD,0x7E,0xF2,0x41,0x5A,0x5D,0x38,0xA9,0xC1,0x3A, 0x82,0xF0,0xD2,0x51,0x4B,0x7F,0xDC,0x47,0x57,0x04,0xC0,0x89,0x42,0x40,0x0C,0x69,0x38}, - {0x79,0xE6,0x10,0x38,0xA3,0x7E,0xB1,0x37,0xA7,0x7F,0xE0,0xDF,0x17,0xC8,0x44,0x9E, + .seckey={0x79,0xE6,0x10,0x38,0xA3,0x7E,0xB1,0x37,0xA7,0x7F,0xE0,0xDF,0x17,0xC8,0x44,0x9E, 0xA1,0x7A,0x85,0x71,0xD5,0x7D,0x33,0x15,0x4B,0x09,0x2D,0x39,0x38,0xAD,0x6A,0x0D}, - "r9Ug1JMQjGH92gpgh7kZJgF2dvwXpfmVXL"}, - {{0x63,0x9B,0x6A,0xE7,0x62,0x76,0x40,0x6D,0xBB,0x95,0x0F,0x39,0xA4,0xC2,0x77,0x27}, - {0xED,0x48,0x69,0x7E,0x9B,0x17,0x43,0x8B,0x30,0xB2,0x8C,0xBE,0x9E,0x88,0xEB,0xEE, + .addr="r9Ug1JMQjGH92gpgh7kZJgF2dvwXpfmVXL"}, + {.seed={0x63,0x9B,0x6A,0xE7,0x62,0x76,0x40,0x6D,0xBB,0x95,0x0F,0x39,0xA4,0xC2,0x77,0x27}, + .pubkey={0xED,0x48,0x69,0x7E,0x9B,0x17,0x43,0x8B,0x30,0xB2,0x8C,0xBE,0x9E,0x88,0xEB,0xEE, 0x32,0xC7,0xC8,0x64,0xAE,0x99,0x5C,0x96,0x8D,0x68,0x84,0xAD,0x1D,0x64,0xCB,0xAD,0xAA}, - {0x0D,0xC3,0xB8,0x2D,0xDA,0xA5,0x86,0x49,0x03,0x41,0xAA,0x5E,0xDF,0x0B,0x45,0x7B, + .seckey={0x0D,0xC3,0xB8,0x2D,0xDA,0xA5,0x86,0x49,0x03,0x41,0xAA,0x5E,0xDF,0x0B,0x45,0x7B, 0xCE,0x45,0x3F,0x2E,0xDC,0x0F,0x1F,0xFE,0xE1,0x2E,0xD1,0x50,0x26,0xCB,0x23,0x64}, - "rGTbZBCD2UrFooY8F7Q6dnxSpp12xX13ZE"}, - {{0xA3,0x8D,0x1E,0xB3,0x79,0x31,0x63,0xEF,0x28,0x3C,0xB9,0x88,0x85,0x80,0xFE,0xF8}, - {0xED,0x05,0xA1,0x49,0x6B,0x70,0x20,0x8C,0x26,0xDA,0x92,0xFF,0x97,0x8A,0x1C,0x69, + .addr="rGTbZBCD2UrFooY8F7Q6dnxSpp12xX13ZE"}, + {.seed={0xA3,0x8D,0x1E,0xB3,0x79,0x31,0x63,0xEF,0x28,0x3C,0xB9,0x88,0x85,0x80,0xFE,0xF8}, + .pubkey={0xED,0x05,0xA1,0x49,0x6B,0x70,0x20,0x8C,0x26,0xDA,0x92,0xFF,0x97,0x8A,0x1C,0x69, 0xAC,0xEC,0xFE,0x16,0x5A,0x1B,0x41,0x82,0xBA,0xD9,0xDC,0x13,0x17,0x21,0x7D,0xE3,0x75}, - {0xA8,0x6D,0x59,0x90,0xE1,0x63,0xEA,0x86,0x27,0x6D,0x8A,0x30,0x74,0x83,0x15,0xD4, + .seckey={0xA8,0x6D,0x59,0x90,0xE1,0x63,0xEA,0x86,0x27,0x6D,0x8A,0x30,0x74,0x83,0x15,0xD4, 0x35,0x6D,0x0B,0x65,0x10,0xE4,0xC8,0xE3,0xA4,0xA7,0xD9,0xA9,0x3E,0xE7,0x29,0x4D}, - "rDxumR1RE4rVUHHy1fHwURFw1ZLHkqqhXj"}, - {{0xF9,0x57,0x52,0x2C,0x0C,0xF4,0x93,0x67,0xF9,0x0D,0xCF,0x67,0x4D,0x26,0x31,0x47}, - {0xED,0x26,0x9F,0xD9,0xAF,0xE4,0xA5,0xC4,0x52,0x54,0x3F,0x92,0x27,0xAE,0xB2,0x93, + .addr="rDxumR1RE4rVUHHy1fHwURFw1ZLHkqqhXj"}, + {.seed={0xF9,0x57,0x52,0x2C,0x0C,0xF4,0x93,0x67,0xF9,0x0D,0xCF,0x67,0x4D,0x26,0x31,0x47}, + .pubkey={0xED,0x26,0x9F,0xD9,0xAF,0xE4,0xA5,0xC4,0x52,0x54,0x3F,0x92,0x27,0xAE,0xB2,0x93, 0xE8,0xEB,0xC4,0xC0,0x74,0x30,0x12,0x75,0xC6,0xA2,0x61,0x1D,0xC8,0x52,0xEC,0x11,0x76}, - {0x57,0xD1,0x51,0x01,0xA4,0x20,0x78,0x76,0xA2,0xFE,0xF5,0xC4,0x71,0x17,0x3E,0x48, + .seckey={0x57,0xD1,0x51,0x01,0xA4,0x20,0x78,0x76,0xA2,0xFE,0xF5,0xC4,0x71,0x17,0x3E,0x48, 0xC7,0x18,0x1B,0x52,0x10,0xA2,0xFD,0x1B,0x32,0xEE,0xF8,0xF5,0x33,0x58,0xAC,0x44}, - "rL2eCZwE2ziPN6LCLQc2NqzhEkyWSe9aYw"}, - {{0x47,0x94,0x2C,0x2D,0x0F,0xE1,0x64,0x2D,0xC5,0x23,0x6D,0x08,0x3D,0x61,0xA4,0x78}, - {0xED,0x33,0x3A,0xEC,0x09,0x30,0x3C,0x01,0x0F,0x34,0x17,0xEB,0xD3,0x21,0x36,0xC3, + .addr="rL2eCZwE2ziPN6LCLQc2NqzhEkyWSe9aYw"}, + {.seed={0x47,0x94,0x2C,0x2D,0x0F,0xE1,0x64,0x2D,0xC5,0x23,0x6D,0x08,0x3D,0x61,0xA4,0x78}, + .pubkey={0xED,0x33,0x3A,0xEC,0x09,0x30,0x3C,0x01,0x0F,0x34,0x17,0xEB,0xD3,0x21,0x36,0xC3, 0xF3,0x8C,0xF5,0x2C,0x9B,0x14,0xAF,0xB0,0xAB,0x6E,0x82,0x05,0xDB,0xEE,0x61,0x06,0x53}, - {0x76,0x73,0x6B,0x24,0xB6,0xD1,0x16,0xCD,0xCC,0x6F,0x4B,0x85,0x05,0x0B,0xBA,0x67, + .seckey={0x76,0x73,0x6B,0x24,0xB6,0xD1,0x16,0xCD,0xCC,0x6F,0x4B,0x85,0x05,0x0B,0xBA,0x67, 0xDE,0x79,0xB6,0x93,0xD0,0x57,0x10,0x35,0x18,0x71,0x6D,0x03,0x3A,0xB8,0x58,0xFE}, - "rGvzhRmWqvC67oZyAqrJqgo3MNeXahkBzj"}, - {{0xBA,0xFE,0x17,0x25,0x21,0x89,0x1D,0xDB,0x2D,0xE5,0x10,0x24,0xA7,0x21,0x9F,0xB6}, - {0xED,0x1A,0x37,0x9C,0xD6,0x6B,0x0A,0x85,0xDB,0x9F,0x0E,0xAE,0xA5,0x9E,0x8D,0xEE, + .addr="rGvzhRmWqvC67oZyAqrJqgo3MNeXahkBzj"}, + {.seed={0xBA,0xFE,0x17,0x25,0x21,0x89,0x1D,0xDB,0x2D,0xE5,0x10,0x24,0xA7,0x21,0x9F,0xB6}, + .pubkey={0xED,0x1A,0x37,0x9C,0xD6,0x6B,0x0A,0x85,0xDB,0x9F,0x0E,0xAE,0xA5,0x9E,0x8D,0xEE, 0xDC,0xA2,0x53,0x45,0xCB,0xC2,0x67,0x0E,0xFC,0x3C,0x34,0xA4,0x96,0x9F,0x80,0xDA,0x84}, - {0x8C,0x95,0x46,0x34,0xD6,0xD3,0x98,0x96,0x6B,0x28,0xBF,0xA6,0xB7,0xE2,0xEB,0x78, + .seckey={0x8C,0x95,0x46,0x34,0xD6,0xD3,0x98,0x96,0x6B,0x28,0xBF,0xA6,0xB7,0xE2,0xEB,0x78, 0x14,0x4B,0x5A,0x87,0xF6,0x64,0x91,0x01,0x3B,0xCB,0x9B,0x8C,0xCE,0xEE,0x9F,0x44}, - "r95fjtovjRNhUEuv2JJnPBFyhgXyX5p8wD"}, - {{0xD8,0x0F,0x6B,0xB7,0x88,0xBA,0x01,0xEC,0x66,0xA0,0x7A,0x74,0xA4,0xA8,0xC6,0x35}, - {0xED,0x01,0xDD,0xD2,0x59,0x15,0x86,0xBC,0x53,0x44,0x0B,0xB3,0x65,0xA9,0x33,0x04, + .addr="r95fjtovjRNhUEuv2JJnPBFyhgXyX5p8wD"}, + {.seed={0xD8,0x0F,0x6B,0xB7,0x88,0xBA,0x01,0xEC,0x66,0xA0,0x7A,0x74,0xA4,0xA8,0xC6,0x35}, + .pubkey={0xED,0x01,0xDD,0xD2,0x59,0x15,0x86,0xBC,0x53,0x44,0x0B,0xB3,0x65,0xA9,0x33,0x04, 0x01,0x1E,0xD9,0x4E,0x17,0x2C,0xC3,0xB8,0x1C,0x1B,0x9A,0x40,0xFA,0x6B,0x17,0xD4,0x91}, - {0x17,0xDB,0xCC,0x50,0x27,0xAF,0xE2,0x42,0x30,0xA4,0xE7,0x98,0xA4,0xE9,0x76,0x39, + .seckey={0x17,0xDB,0xCC,0x50,0x27,0xAF,0xE2,0x42,0x30,0xA4,0xE7,0x98,0xA4,0xE9,0x76,0x39, 0x9A,0x8F,0x86,0xB3,0x5B,0x5D,0xEB,0x70,0x34,0x1B,0x8E,0x95,0x31,0x9D,0x69,0xDC}, - "rnBDWLjCaA6q9phZCqdEp7hjqAPfwHnfPA"}, - {{0x6B,0x5D,0x6A,0xC6,0x16,0xE9,0x2E,0x67,0x75,0xCC,0xAA,0x9D,0x7E,0x0B,0x06,0xEE}, - {0xED,0xE9,0xF8,0x84,0x0B,0x73,0x6B,0xC9,0x21,0xDF,0xAF,0xF5,0x69,0x8C,0x55,0xA1, + .addr="rnBDWLjCaA6q9phZCqdEp7hjqAPfwHnfPA"}, + {.seed={0x6B,0x5D,0x6A,0xC6,0x16,0xE9,0x2E,0x67,0x75,0xCC,0xAA,0x9D,0x7E,0x0B,0x06,0xEE}, + .pubkey={0xED,0xE9,0xF8,0x84,0x0B,0x73,0x6B,0xC9,0x21,0xDF,0xAF,0xF5,0x69,0x8C,0x55,0xA1, 0xB4,0xF6,0xFD,0x4F,0xA9,0xB6,0x6C,0xC2,0x2F,0x8E,0x98,0x5B,0x6F,0xD6,0x45,0x74,0x89}, - {0x67,0x4D,0xB7,0x06,0xEC,0xC0,0xB6,0xA0,0xA7,0xF9,0x5D,0xA6,0xE4,0x30,0x68,0x54, + .seckey={0x67,0x4D,0xB7,0x06,0xEC,0xC0,0xB6,0xA0,0xA7,0xF9,0x5D,0xA6,0xE4,0x30,0x68,0x54, 0x4D,0x12,0x35,0x17,0x78,0xA7,0x55,0xC1,0x55,0x23,0xD1,0xED,0x22,0x91,0xC8,0x01}, - "ra4G5d8mvtNJyZYFdo11BrWrgAz9AvP3Gz"}, - {{0x00,0xFB,0x91,0x86,0x81,0xE9,0x7E,0xF1,0x9D,0xF0,0x95,0x74,0x55,0xC2,0x06,0xA8}, - {0xED,0x07,0x88,0x61,0x92,0x19,0x34,0xBA,0xF4,0x20,0xCC,0x6F,0x7F,0xC5,0x90,0xE5, + .addr="ra4G5d8mvtNJyZYFdo11BrWrgAz9AvP3Gz"}, + {.seed={0x00,0xFB,0x91,0x86,0x81,0xE9,0x7E,0xF1,0x9D,0xF0,0x95,0x74,0x55,0xC2,0x06,0xA8}, + .pubkey={0xED,0x07,0x88,0x61,0x92,0x19,0x34,0xBA,0xF4,0x20,0xCC,0x6F,0x7F,0xC5,0x90,0xE5, 0x1A,0x8F,0xF7,0x59,0x07,0x05,0x3B,0x0C,0xD1,0xF6,0x99,0x52,0xE1,0x22,0x8F,0x02,0x08}, - {0xB1,0x8D,0xCE,0x19,0xF5,0xFD,0xA0,0x3E,0x92,0xEA,0x23,0x8A,0x35,0xB3,0x40,0xF2, + .seckey={0xB1,0x8D,0xCE,0x19,0xF5,0xFD,0xA0,0x3E,0x92,0xEA,0x23,0x8A,0x35,0xB3,0x40,0xF2, 0xA9,0x16,0xAF,0xEE,0x16,0x8B,0x9B,0xA4,0x44,0xBC,0x6E,0x59,0xC3,0x71,0x87,0x03}, - "rDaKYn9RrKrLHdeZAixuyi24uKnxSU5odT"}, - {{0x9A,0xF1,0x00,0x6A,0x00,0x74,0x91,0x8C,0x6A,0x0F,0xFB,0xD8,0x5E,0xD5,0xCA,0x1F}, - {0xED,0x19,0x23,0x72,0xA2,0xD8,0xB4,0x80,0x23,0x5A,0x74,0x69,0x39,0xDB,0x54,0xBF, + .addr="rDaKYn9RrKrLHdeZAixuyi24uKnxSU5odT"}, + {.seed={0x9A,0xF1,0x00,0x6A,0x00,0x74,0x91,0x8C,0x6A,0x0F,0xFB,0xD8,0x5E,0xD5,0xCA,0x1F}, + .pubkey={0xED,0x19,0x23,0x72,0xA2,0xD8,0xB4,0x80,0x23,0x5A,0x74,0x69,0x39,0xDB,0x54,0xBF, 0x7E,0xCF,0x3A,0x52,0xBB,0xE8,0xFC,0xB1,0x74,0x04,0xAE,0x2D,0x62,0x69,0x7B,0x33,0x4A}, - {0x21,0x79,0xBF,0x60,0xD5,0xF4,0xAB,0x6A,0x1D,0x72,0xB9,0xC4,0xAD,0xEE,0xFB,0x04, + .seckey={0x21,0x79,0xBF,0x60,0xD5,0xF4,0xAB,0x6A,0x1D,0x72,0xB9,0xC4,0xAD,0xEE,0xFB,0x04, 0x39,0x3D,0xD0,0xB3,0x17,0xAF,0xEC,0xE3,0x6D,0xB6,0xC1,0x1E,0xE1,0x73,0x98,0xDF}, - "rUyMe6fvoJ4Lm1PnPquFabP3VSKzqjBkkw"}, - {{0xCA,0x67,0x89,0xD8,0x5A,0x4F,0x15,0x1F,0xF5,0x1C,0x9B,0x1B,0x66,0xC2,0xFD,0xE0}, - {0xED,0x6A,0x17,0x41,0x82,0xEF,0x33,0xF7,0xC3,0x68,0x3C,0x0C,0x61,0xF0,0x17,0xDB, + .addr="rUyMe6fvoJ4Lm1PnPquFabP3VSKzqjBkkw"}, + {.seed={0xCA,0x67,0x89,0xD8,0x5A,0x4F,0x15,0x1F,0xF5,0x1C,0x9B,0x1B,0x66,0xC2,0xFD,0xE0}, + .pubkey={0xED,0x6A,0x17,0x41,0x82,0xEF,0x33,0xF7,0xC3,0x68,0x3C,0x0C,0x61,0xF0,0x17,0xDB, 0x12,0x68,0xE3,0x27,0x3F,0x39,0xE5,0x39,0x63,0x59,0x17,0x84,0xAF,0x08,0x71,0xAF,0x6E}, - {0x05,0xF2,0x19,0x7C,0xCB,0x44,0xD3,0x9E,0x60,0x88,0xA3,0x57,0x38,0x04,0x9E,0x23, + .seckey={0x05,0xF2,0x19,0x7C,0xCB,0x44,0xD3,0x9E,0x60,0x88,0xA3,0x57,0x38,0x04,0x9E,0x23, 0xD8,0x8F,0x42,0xDC,0x5A,0xB2,0x10,0x16,0xB1,0x07,0xF5,0x8F,0x0D,0x26,0xAB,0x09}, - "rN9pVkhR6qUeT73hkPCKyDHsuWWyarWRK"}, - {{0x31,0x95,0xC9,0x48,0x17,0x51,0xA8,0x9E,0xC5,0x6F,0xE1,0xC9,0x63,0x30,0x78,0xAF}, - {0xED,0x9C,0xEF,0xC2,0xF4,0xB3,0xC9,0x2D,0xC8,0xC2,0x01,0xE5,0xC5,0x21,0x0C,0x6B, + .addr="rN9pVkhR6qUeT73hkPCKyDHsuWWyarWRK"}, + {.seed={0x31,0x95,0xC9,0x48,0x17,0x51,0xA8,0x9E,0xC5,0x6F,0xE1,0xC9,0x63,0x30,0x78,0xAF}, + .pubkey={0xED,0x9C,0xEF,0xC2,0xF4,0xB3,0xC9,0x2D,0xC8,0xC2,0x01,0xE5,0xC5,0x21,0x0C,0x6B, 0x27,0x77,0x91,0xF8,0x6D,0x8F,0xE1,0x7B,0x8D,0x45,0xBB,0x70,0x56,0x7F,0x59,0xB5,0xFA}, - {0x8D,0x29,0xBE,0x69,0x84,0xF2,0x49,0x7E,0xE6,0xE1,0x6F,0xB1,0xD7,0x40,0x6A,0x78, + .seckey={0x8D,0x29,0xBE,0x69,0x84,0xF2,0x49,0x7E,0xE6,0xE1,0x6F,0xB1,0xD7,0x40,0x6A,0x78, 0x93,0x5C,0xDF,0x01,0xB5,0xBB,0xE2,0xB7,0xAA,0x0B,0x44,0x08,0x82,0x56,0xC6,0xD2}, - "rJcfnmHiPFzbn5gqQYdDk3aziuNztmGLcv"}, - {{0x29,0x03,0x13,0x97,0x68,0x4B,0xD2,0x9A,0x2A,0x09,0xF8,0xFF,0xC7,0x5A,0x87,0x07}, - {0xED,0xCA,0x63,0x21,0xD4,0xA9,0xDB,0x02,0x5E,0xE9,0x2A,0x2D,0xF3,0xCD,0x12,0xFD, + .addr="rJcfnmHiPFzbn5gqQYdDk3aziuNztmGLcv"}, + {.seed={0x29,0x03,0x13,0x97,0x68,0x4B,0xD2,0x9A,0x2A,0x09,0xF8,0xFF,0xC7,0x5A,0x87,0x07}, + .pubkey={0xED,0xCA,0x63,0x21,0xD4,0xA9,0xDB,0x02,0x5E,0xE9,0x2A,0x2D,0xF3,0xCD,0x12,0xFD, 0x75,0x69,0x7B,0xA4,0x39,0x4F,0xE4,0xA5,0x08,0xE0,0x8E,0xAD,0x21,0x83,0xAC,0x58,0xFD}, - {0x07,0x71,0x01,0xB4,0x34,0xA8,0x2D,0xCF,0x05,0x2D,0xD6,0x8E,0x08,0x14,0xCA,0x25, + .seckey={0x07,0x71,0x01,0xB4,0x34,0xA8,0x2D,0xCF,0x05,0x2D,0xD6,0x8E,0x08,0x14,0xCA,0x25, 0x1A,0xCB,0x12,0x62,0x25,0x2D,0x7B,0x14,0xA0,0x09,0xF0,0x6C,0x82,0x57,0xF9,0x24}, - "rU619NnNQQGiyPXLCGRcuXP7MhZR1TxFmP"}, - {{0xBA,0x63,0xEC,0x83,0x0F,0x51,0x96,0x76,0x67,0xC6,0x00,0x1C,0x9C,0x23,0x76,0xCB}, - {0xED,0xB7,0x37,0xBD,0xAD,0x90,0x48,0x85,0xDE,0xF9,0xBE,0x25,0x2D,0xA4,0x59,0x77, + .addr="rU619NnNQQGiyPXLCGRcuXP7MhZR1TxFmP"}, + {.seed={0xBA,0x63,0xEC,0x83,0x0F,0x51,0x96,0x76,0x67,0xC6,0x00,0x1C,0x9C,0x23,0x76,0xCB}, + .pubkey={0xED,0xB7,0x37,0xBD,0xAD,0x90,0x48,0x85,0xDE,0xF9,0xBE,0x25,0x2D,0xA4,0x59,0x77, 0xC7,0x5E,0xD7,0x8B,0x47,0x39,0x83,0xCC,0x66,0xA0,0x3F,0x5D,0x22,0x4F,0x17,0x60,0x9C}, - {0x1B,0x52,0xBB,0x05,0x64,0x2E,0x9B,0x06,0xB9,0x72,0xAF,0xE0,0x77,0x5B,0x1B,0xE5, + .seckey={0x1B,0x52,0xBB,0x05,0x64,0x2E,0x9B,0x06,0xB9,0x72,0xAF,0xE0,0x77,0x5B,0x1B,0xE5, 0x68,0x92,0x14,0xCB,0x32,0xC8,0x1A,0x46,0xB3,0x99,0xDC,0x52,0xDA,0x7B,0xD2,0x4D}, - "rP7ywfUBLDeAk1uV1RnWhu1pyJnG3sQL9h"}, - {{0x60,0x4C,0x3E,0x3D,0xA8,0xB3,0xF5,0xD7,0x67,0x8A,0xA7,0xAD,0xBB,0xBE,0x54,0xCB}, - {0xED,0x51,0xD2,0x7A,0x66,0x94,0xB6,0x09,0xE4,0xE4,0x76,0xFD,0x3E,0x67,0xB6,0x52, + .addr="rP7ywfUBLDeAk1uV1RnWhu1pyJnG3sQL9h"}, + {.seed={0x60,0x4C,0x3E,0x3D,0xA8,0xB3,0xF5,0xD7,0x67,0x8A,0xA7,0xAD,0xBB,0xBE,0x54,0xCB}, + .pubkey={0xED,0x51,0xD2,0x7A,0x66,0x94,0xB6,0x09,0xE4,0xE4,0x76,0xFD,0x3E,0x67,0xB6,0x52, 0x5C,0x76,0x83,0x75,0x4E,0x8C,0x82,0x36,0xA9,0xBC,0x5E,0x5F,0xBE,0xEC,0x2B,0xCB,0x7F}, - {0xE8,0x47,0xB6,0xE5,0xE8,0xC4,0x0F,0x70,0x92,0xC7,0x2E,0xE4,0xFD,0xF6,0x94,0xC4, + .seckey={0xE8,0x47,0xB6,0xE5,0xE8,0xC4,0x0F,0x70,0x92,0xC7,0x2E,0xE4,0xFD,0xF6,0x94,0xC4, 0x9E,0xB4,0x07,0x6D,0x93,0xD0,0xE7,0xCF,0x3C,0x54,0xCD,0x3C,0xC5,0x89,0x14,0xBA}, - "rDrShqPhNLn9e1yP7UTNZCty2ghfEgQMNa"}, - {{0x98,0xCC,0x63,0x7E,0x7C,0xE8,0x3C,0xD9,0xE2,0xDF,0xFA,0xC5,0xF2,0x32,0x84,0xA0}, - {0xED,0x22,0x7A,0xF8,0x21,0x57,0x3B,0xCC,0xCB,0x17,0xD9,0xD9,0x02,0x2D,0x20,0xFF, + .addr="rDrShqPhNLn9e1yP7UTNZCty2ghfEgQMNa"}, + {.seed={0x98,0xCC,0x63,0x7E,0x7C,0xE8,0x3C,0xD9,0xE2,0xDF,0xFA,0xC5,0xF2,0x32,0x84,0xA0}, + .pubkey={0xED,0x22,0x7A,0xF8,0x21,0x57,0x3B,0xCC,0xCB,0x17,0xD9,0xD9,0x02,0x2D,0x20,0xFF, 0xB4,0x35,0x1C,0x86,0xFF,0x3F,0xE6,0x34,0xB4,0xB1,0xB2,0x72,0x81,0x0A,0x76,0x98,0x32}, - {0x38,0xD3,0x62,0x0A,0xB9,0x25,0xD6,0x14,0xCF,0x7D,0x14,0x9B,0x68,0x31,0x46,0xF5, + .seckey={0x38,0xD3,0x62,0x0A,0xB9,0x25,0xD6,0x14,0xCF,0x7D,0x14,0x9B,0x68,0x31,0x46,0xF5, 0xB0,0xAE,0x35,0x6F,0xDA,0x00,0xFD,0x85,0x8F,0xC4,0x1F,0x26,0x9B,0xCC,0x54,0x84}, - "r3uekKMfuYuxuYkZjsrmYgJG8K39VE4VJY"}, - {{0x78,0x60,0x6D,0xAF,0x5A,0x6E,0xB5,0xD5,0xBF,0x54,0x65,0xD5,0xCB,0x85,0x69,0x07}, - {0xED,0x99,0x8D,0x93,0x23,0x7C,0x18,0x9A,0x18,0xA9,0x3C,0xB7,0xA0,0x0E,0xD7,0x70, + .addr="r3uekKMfuYuxuYkZjsrmYgJG8K39VE4VJY"}, + {.seed={0x78,0x60,0x6D,0xAF,0x5A,0x6E,0xB5,0xD5,0xBF,0x54,0x65,0xD5,0xCB,0x85,0x69,0x07}, + .pubkey={0xED,0x99,0x8D,0x93,0x23,0x7C,0x18,0x9A,0x18,0xA9,0x3C,0xB7,0xA0,0x0E,0xD7,0x70, 0x1C,0xE3,0x58,0x9A,0xDA,0x7D,0x72,0xDE,0xE2,0x38,0x26,0xB3,0xFC,0x0F,0x3E,0x4A,0xD7}, - {0xA9,0x43,0xF9,0x80,0xC7,0x65,0x70,0x41,0x90,0xB1,0x19,0xEC,0x1B,0x8A,0xE1,0xAA, + .seckey={0xA9,0x43,0xF9,0x80,0xC7,0x65,0x70,0x41,0x90,0xB1,0x19,0xEC,0x1B,0x8A,0xE1,0xAA, 0x00,0xB3,0x34,0xC7,0x36,0x64,0x5A,0xB4,0x94,0xB4,0x88,0x14,0x23,0x4B,0xFF,0xD9}, - "rNUXnPHuuwqftzNbwosussmnFcUePnbwjQ"}, - {{0x3F,0x2C,0xE1,0xDF,0x92,0x1B,0xD3,0xFE,0xA3,0x1B,0x4C,0x00,0xE1,0x2D,0x7F,0x3D}, - {0xED,0x31,0x8C,0x56,0x0E,0x69,0x41,0x7D,0x2E,0xCF,0x9F,0xDB,0x61,0xAC,0xB3,0xE0, + .addr="rNUXnPHuuwqftzNbwosussmnFcUePnbwjQ"}, + {.seed={0x3F,0x2C,0xE1,0xDF,0x92,0x1B,0xD3,0xFE,0xA3,0x1B,0x4C,0x00,0xE1,0x2D,0x7F,0x3D}, + .pubkey={0xED,0x31,0x8C,0x56,0x0E,0x69,0x41,0x7D,0x2E,0xCF,0x9F,0xDB,0x61,0xAC,0xB3,0xE0, 0x7B,0x99,0xC3,0x93,0x44,0x72,0xAC,0x5E,0x7B,0xE0,0xED,0x53,0xCB,0x3D,0x92,0x76,0x18}, - {0xD9,0xF7,0x8C,0x20,0x08,0xEB,0xBF,0xFF,0x76,0xA7,0xA9,0x32,0x3E,0x7E,0x7E,0x6A, + .seckey={0xD9,0xF7,0x8C,0x20,0x08,0xEB,0xBF,0xFF,0x76,0xA7,0xA9,0x32,0x3E,0x7E,0x7E,0x6A, 0x35,0x18,0x4F,0x2F,0xB5,0xE9,0xE5,0xF1,0xE9,0x3B,0x3F,0x00,0x33,0x49,0xB8,0x42}, - "rnj6vSuUXmMW8qwdXwUKWEezmBUWjf8krG"}, - {{0x98,0x3F,0x64,0x6B,0x02,0xDB,0xE9,0x4A,0x46,0x52,0x2D,0xA5,0x5C,0x73,0x04,0x66}, - {0xED,0x26,0x87,0xDB,0x80,0x3B,0xE4,0x35,0x5F,0x19,0xC1,0x57,0x74,0xDB,0x80,0x0A, + .addr="rnj6vSuUXmMW8qwdXwUKWEezmBUWjf8krG"}, + {.seed={0x98,0x3F,0x64,0x6B,0x02,0xDB,0xE9,0x4A,0x46,0x52,0x2D,0xA5,0x5C,0x73,0x04,0x66}, + .pubkey={0xED,0x26,0x87,0xDB,0x80,0x3B,0xE4,0x35,0x5F,0x19,0xC1,0x57,0x74,0xDB,0x80,0x0A, 0xD7,0xB4,0xB8,0xA9,0xA1,0x4D,0x41,0xCE,0x4B,0xFC,0xE5,0x13,0x4E,0x69,0x6A,0x2B,0xD3}, - {0x1D,0xF8,0x5C,0xFF,0xA0,0x11,0x59,0x99,0xB6,0xF4,0x33,0xE5,0xAA,0x2A,0x92,0x5D, + .seckey={0x1D,0xF8,0x5C,0xFF,0xA0,0x11,0x59,0x99,0xB6,0xF4,0x33,0xE5,0xAA,0x2A,0x92,0x5D, 0x8E,0x12,0x63,0xD3,0xD0,0x3C,0x65,0x6E,0xA2,0x7E,0x53,0xCE,0xC0,0x4B,0x87,0x0C}, - "rLwPm1MKU645YKtuEUCtUBfaKLuUafZKpK"}, - {{0x1E,0x03,0x9B,0x04,0x57,0xC1,0x9E,0xE3,0xA9,0xBF,0x48,0x1C,0x78,0x54,0x6C,0x3A}, - {0xED,0x1C,0x54,0xB7,0x64,0x7D,0xD8,0xD3,0x59,0x4D,0x9E,0x08,0xAA,0xF0,0x22,0xC2, + .addr="rLwPm1MKU645YKtuEUCtUBfaKLuUafZKpK"}, + {.seed={0x1E,0x03,0x9B,0x04,0x57,0xC1,0x9E,0xE3,0xA9,0xBF,0x48,0x1C,0x78,0x54,0x6C,0x3A}, + .pubkey={0xED,0x1C,0x54,0xB7,0x64,0x7D,0xD8,0xD3,0x59,0x4D,0x9E,0x08,0xAA,0xF0,0x22,0xC2, 0x85,0xCD,0xC6,0x54,0x76,0xD6,0x77,0x44,0x94,0x9A,0x7D,0x0F,0xDB,0x07,0xC1,0xAA,0x44}, - {0x18,0xE9,0xD0,0xA8,0xDE,0xA7,0x55,0x3E,0xA7,0xD2,0x88,0x6F,0x49,0xBB,0x0C,0xCD, + .seckey={0x18,0xE9,0xD0,0xA8,0xDE,0xA7,0x55,0x3E,0xA7,0xD2,0x88,0x6F,0x49,0xBB,0x0C,0xCD, 0xA4,0x46,0x42,0x9D,0x88,0xE8,0x3D,0xF0,0x38,0xC5,0x47,0xD8,0x95,0xF2,0x21,0x34}, - "r4JxbSBo2LNGLLkYF7D3waf3Nhcz2wJVPD"}, - {{0x3A,0x11,0x4E,0x5D,0xE8,0xBB,0x4E,0x17,0x9C,0x9E,0x31,0x92,0xD9,0x94,0x4E,0x88}, - {0xED,0x90,0x0E,0x5C,0xF1,0xED,0xCB,0xC3,0x8E,0xE2,0x40,0x1D,0x51,0xB4,0x1E,0x19, + .addr="r4JxbSBo2LNGLLkYF7D3waf3Nhcz2wJVPD"}, + {.seed={0x3A,0x11,0x4E,0x5D,0xE8,0xBB,0x4E,0x17,0x9C,0x9E,0x31,0x92,0xD9,0x94,0x4E,0x88}, + .pubkey={0xED,0x90,0x0E,0x5C,0xF1,0xED,0xCB,0xC3,0x8E,0xE2,0x40,0x1D,0x51,0xB4,0x1E,0x19, 0x8D,0xFC,0xA8,0x2C,0x6E,0x23,0xB4,0x28,0x2D,0xBA,0xF4,0x44,0xF2,0x86,0xE0,0x9A,0xC2}, - {0x64,0x21,0xB4,0x02,0x02,0x63,0x68,0xD5,0xEB,0xFB,0xA6,0x15,0x29,0x03,0x04,0x2D, + .seckey={0x64,0x21,0xB4,0x02,0x02,0x63,0x68,0xD5,0xEB,0xFB,0xA6,0x15,0x29,0x03,0x04,0x2D, 0x05,0xC6,0xB2,0x7C,0xCD,0x52,0x2C,0x21,0xBE,0x93,0xEE,0x3F,0x13,0xB0,0x0D,0x0F}, - "rPowZBd6n845AtJsjTnpMQQ4go4aE5rSrU"}, - {{0x27,0x2C,0x1B,0x39,0x6F,0x36,0x48,0xC8,0x45,0x68,0x7E,0x27,0x0C,0x31,0xD1,0x38}, - {0xED,0x98,0xBB,0xF9,0x98,0x65,0xED,0xAF,0x1A,0x03,0x81,0xE7,0x14,0x9E,0x49,0xC1, + .addr="rPowZBd6n845AtJsjTnpMQQ4go4aE5rSrU"}, + {.seed={0x27,0x2C,0x1B,0x39,0x6F,0x36,0x48,0xC8,0x45,0x68,0x7E,0x27,0x0C,0x31,0xD1,0x38}, + .pubkey={0xED,0x98,0xBB,0xF9,0x98,0x65,0xED,0xAF,0x1A,0x03,0x81,0xE7,0x14,0x9E,0x49,0xC1, 0x29,0x03,0x99,0x63,0xD4,0x60,0xB1,0x65,0xF5,0x9F,0x1D,0xDA,0xA9,0x5B,0x31,0xA9,0x25}, - {0x03,0x2C,0x27,0x61,0xB0,0x0F,0xA4,0xAB,0x89,0xB4,0x03,0x67,0x83,0x42,0x12,0x94, + .seckey={0x03,0x2C,0x27,0x61,0xB0,0x0F,0xA4,0xAB,0x89,0xB4,0x03,0x67,0x83,0x42,0x12,0x94, 0x16,0xAA,0xB1,0x3A,0x39,0x5F,0x3D,0x02,0x87,0xE4,0x4C,0xC9,0xDF,0x36,0x91,0xFD}, - "rsdP5KvUtanQDrDZ7gebdSMQN2zJveJL7n"}, - {{0x22,0xA2,0x2B,0xCA,0xB7,0xC7,0xD2,0x27,0xEC,0xD2,0x72,0x6A,0x4E,0xF2,0x8A,0x60}, - {0xED,0x75,0xBC,0x6C,0x7D,0x63,0x18,0x08,0x5F,0xEE,0xE3,0x66,0x81,0x34,0x3B,0x25, + .addr="rsdP5KvUtanQDrDZ7gebdSMQN2zJveJL7n"}, + {.seed={0x22,0xA2,0x2B,0xCA,0xB7,0xC7,0xD2,0x27,0xEC,0xD2,0x72,0x6A,0x4E,0xF2,0x8A,0x60}, + .pubkey={0xED,0x75,0xBC,0x6C,0x7D,0x63,0x18,0x08,0x5F,0xEE,0xE3,0x66,0x81,0x34,0x3B,0x25, 0xB5,0x23,0xD9,0x59,0xE7,0x1C,0xF8,0x93,0x08,0xD6,0xD6,0xF9,0xEF,0x10,0xF9,0xD7,0x23}, - {0x87,0xD1,0x07,0xAD,0x10,0x12,0x58,0x85,0xEA,0xF1,0xCD,0x2D,0x48,0x96,0xE2,0xA7, + .seckey={0x87,0xD1,0x07,0xAD,0x10,0x12,0x58,0x85,0xEA,0xF1,0xCD,0x2D,0x48,0x96,0xE2,0xA7, 0x17,0x11,0x28,0x4F,0xC1,0xCC,0x33,0x5E,0x83,0x6A,0x31,0xBD,0xB2,0xBD,0xA0,0xFE}, - "rwpWQzs9x9tZofsf1PdZA7E7LBzjgzC5DD"}, - {{0xF7,0xDA,0xC7,0x2E,0x0A,0x0B,0x75,0xB9,0x04,0x0C,0xFB,0xE9,0xAA,0x5B,0x96,0xAE}, - {0xED,0x82,0xE4,0x7D,0xF7,0xC4,0x6B,0xBF,0x23,0x43,0x65,0x51,0xB8,0xD0,0xF6,0x21, + .addr="rwpWQzs9x9tZofsf1PdZA7E7LBzjgzC5DD"}, + {.seed={0xF7,0xDA,0xC7,0x2E,0x0A,0x0B,0x75,0xB9,0x04,0x0C,0xFB,0xE9,0xAA,0x5B,0x96,0xAE}, + .pubkey={0xED,0x82,0xE4,0x7D,0xF7,0xC4,0x6B,0xBF,0x23,0x43,0x65,0x51,0xB8,0xD0,0xF6,0x21, 0x8B,0x98,0xE5,0x92,0x9E,0x57,0xDB,0x82,0x52,0x43,0xDB,0x74,0x77,0x7B,0x7A,0x6D,0x86}, - {0xA7,0x53,0xFD,0x0F,0xCC,0x59,0xA7,0xCA,0x47,0x74,0x46,0x5C,0xAC,0x2C,0x3C,0x5D, + .seckey={0xA7,0x53,0xFD,0x0F,0xCC,0x59,0xA7,0xCA,0x47,0x74,0x46,0x5C,0xAC,0x2C,0x3C,0x5D, 0x3E,0x59,0x8E,0x7C,0x68,0x99,0x81,0x91,0x09,0x15,0x3D,0x40,0x7A,0x3E,0xA5,0x11}, - "rfSP8muPdQGdevuRZmt1SDRWbzuLAk2S4C"}, - {{0x4B,0xC7,0x86,0x0F,0x05,0x33,0xEA,0x29,0xF0,0x17,0x45,0x94,0xB1,0x80,0x79,0xD9}, - {0xED,0x09,0xE6,0x5E,0xFA,0xD0,0x39,0x72,0x82,0x33,0xA6,0xE4,0x3D,0xDB,0xD5,0x97, + .addr="rfSP8muPdQGdevuRZmt1SDRWbzuLAk2S4C"}, + {.seed={0x4B,0xC7,0x86,0x0F,0x05,0x33,0xEA,0x29,0xF0,0x17,0x45,0x94,0xB1,0x80,0x79,0xD9}, + .pubkey={0xED,0x09,0xE6,0x5E,0xFA,0xD0,0x39,0x72,0x82,0x33,0xA6,0xE4,0x3D,0xDB,0xD5,0x97, 0x17,0x56,0xB8,0xB3,0xAA,0xE4,0x0C,0x37,0x28,0x3E,0x21,0x73,0x4B,0x2C,0x31,0x3C,0x4E}, - {0x07,0xC0,0x48,0xA5,0x27,0x72,0xCC,0xC0,0xCD,0x49,0xF3,0xE9,0xFC,0xEB,0x0A,0x89, + .seckey={0x07,0xC0,0x48,0xA5,0x27,0x72,0xCC,0xC0,0xCD,0x49,0xF3,0xE9,0xFC,0xEB,0x0A,0x89, 0xAC,0xCD,0x70,0xB0,0x72,0x43,0x60,0xFA,0x4E,0xBD,0x87,0x49,0x7A,0x43,0x3A,0x1F}, - "rhPpCGk6r6f1bLHaBvT1fc4sCknWLi6Kyd"}, - {{0x64,0x66,0x2B,0xCD,0x83,0x06,0x43,0xCC,0x2B,0x59,0x07,0x2F,0x3B,0x6C,0x6C,0xF7}, - {0xED,0xC8,0x1E,0x2D,0x5B,0xF8,0x3E,0xEB,0x9A,0x70,0x46,0x56,0x67,0x37,0x05,0xD0, + .addr="rhPpCGk6r6f1bLHaBvT1fc4sCknWLi6Kyd"}, + {.seed={0x64,0x66,0x2B,0xCD,0x83,0x06,0x43,0xCC,0x2B,0x59,0x07,0x2F,0x3B,0x6C,0x6C,0xF7}, + .pubkey={0xED,0xC8,0x1E,0x2D,0x5B,0xF8,0x3E,0xEB,0x9A,0x70,0x46,0x56,0x67,0x37,0x05,0xD0, 0x27,0xAC,0x07,0xDC,0x33,0x37,0xC2,0xD1,0x67,0x30,0xB6,0xEC,0x6D,0x6D,0x3B,0xD8,0x39}, - {0x8E,0xE8,0xF0,0x87,0x00,0x3E,0xA3,0x2E,0x94,0x62,0x2A,0x6F,0x3E,0x38,0xCC,0x1B, + .seckey={0x8E,0xE8,0xF0,0x87,0x00,0x3E,0xA3,0x2E,0x94,0x62,0x2A,0x6F,0x3E,0x38,0xCC,0x1B, 0xA9,0xFD,0x2E,0x19,0x7A,0x71,0x3C,0xB6,0x12,0x54,0x1A,0x1F,0x8F,0xBD,0xBC,0x57}, - "rMBy6xJfbGV4RNDy8mdBVDYTpoGArkEu95"}, - {{0xC2,0xBB,0x19,0xF7,0x2A,0x8B,0x59,0x5A,0xAF,0x57,0x34,0xB8,0xD0,0xCF,0x35,0x63}, - {0xED,0xB0,0x76,0xC8,0x12,0x11,0x54,0x3C,0x9D,0x49,0xF2,0xED,0x2E,0x7D,0xD5,0xF4, + .addr="rMBy6xJfbGV4RNDy8mdBVDYTpoGArkEu95"}, + {.seed={0xC2,0xBB,0x19,0xF7,0x2A,0x8B,0x59,0x5A,0xAF,0x57,0x34,0xB8,0xD0,0xCF,0x35,0x63}, + .pubkey={0xED,0xB0,0x76,0xC8,0x12,0x11,0x54,0x3C,0x9D,0x49,0xF2,0xED,0x2E,0x7D,0xD5,0xF4, 0x94,0x3B,0x74,0x55,0xB3,0xB1,0x93,0x73,0xF9,0x71,0x80,0x1F,0x9B,0x6D,0xC0,0xC3,0x4C}, - {0x1A,0xD7,0x16,0x90,0x7D,0x6A,0xDA,0x1A,0x27,0xD9,0x3C,0xB9,0xC6,0x29,0x90,0x24, + .seckey={0x1A,0xD7,0x16,0x90,0x7D,0x6A,0xDA,0x1A,0x27,0xD9,0x3C,0xB9,0xC6,0x29,0x90,0x24, 0x59,0x38,0x0B,0x5C,0x62,0xC0,0x91,0x19,0x70,0x45,0x57,0xA1,0x48,0xB3,0x57,0x55}, - "rDoEhMUA33qViCmhx69WxvmtfFXC55Avah"}, - {{0xCF,0xE0,0x00,0x67,0x9F,0x8E,0x7F,0xEC,0x63,0xDA,0x7C,0x9E,0x59,0xFB,0xD5,0xE9}, - {0xED,0x2A,0x83,0x43,0xF3,0x6B,0xCC,0x64,0xB3,0x9A,0x24,0xAD,0xE1,0xCB,0x94,0x39, + .addr="rDoEhMUA33qViCmhx69WxvmtfFXC55Avah"}, + {.seed={0xCF,0xE0,0x00,0x67,0x9F,0x8E,0x7F,0xEC,0x63,0xDA,0x7C,0x9E,0x59,0xFB,0xD5,0xE9}, + .pubkey={0xED,0x2A,0x83,0x43,0xF3,0x6B,0xCC,0x64,0xB3,0x9A,0x24,0xAD,0xE1,0xCB,0x94,0x39, 0x77,0xFC,0x33,0x66,0xE8,0xA2,0x50,0xD7,0x24,0x7D,0x06,0xE2,0xD8,0x07,0x75,0x38,0xC2}, - {0x25,0x52,0x3F,0x87,0xBB,0x6F,0x80,0x84,0x0C,0x40,0x3E,0xBA,0x50,0xE9,0x1D,0x46, + .seckey={0x25,0x52,0x3F,0x87,0xBB,0x6F,0x80,0x84,0x0C,0x40,0x3E,0xBA,0x50,0xE9,0x1D,0x46, 0x13,0x9F,0xA8,0x7F,0x25,0x0B,0x50,0x34,0x50,0xCC,0x35,0x83,0x41,0x94,0x01,0x5D}, - "rJ8ry1zRxQTnp1fu9qSxPNhxfWtFb2caio"}, - {{0x49,0x47,0xC6,0x34,0x42,0x84,0x19,0xC3,0x1A,0x26,0x7D,0xFF,0x87,0xDA,0x69,0xED}, - {0xED,0xD2,0x87,0xFB,0xDA,0xC8,0x4E,0x88,0x29,0x47,0x13,0x87,0x30,0x20,0x2B,0xF9, + .addr="rJ8ry1zRxQTnp1fu9qSxPNhxfWtFb2caio"}, + {.seed={0x49,0x47,0xC6,0x34,0x42,0x84,0x19,0xC3,0x1A,0x26,0x7D,0xFF,0x87,0xDA,0x69,0xED}, + .pubkey={0xED,0xD2,0x87,0xFB,0xDA,0xC8,0x4E,0x88,0x29,0x47,0x13,0x87,0x30,0x20,0x2B,0xF9, 0xA4,0xCA,0x90,0x10,0x38,0xC3,0x7D,0xD8,0x00,0xB5,0xD2,0xBA,0xBB,0x57,0xE6,0xED,0xD1}, - {0xBB,0xE6,0x3C,0x1F,0x2B,0x03,0x71,0xDC,0xEB,0x27,0x4E,0x64,0x48,0xE9,0x05,0xE0, + .seckey={0xBB,0xE6,0x3C,0x1F,0x2B,0x03,0x71,0xDC,0xEB,0x27,0x4E,0x64,0x48,0xE9,0x05,0xE0, 0x95,0xE2,0x04,0xB8,0xDA,0x32,0xD4,0x96,0x45,0x15,0xC3,0x77,0xA9,0xB4,0xC3,0x8A}, - "rBTmbytPkthAonMoFEFdr9ewQc9d5AQdVE"}, - {{0x6B,0xC3,0x37,0xB0,0x07,0x6F,0xB7,0x60,0xAF,0x78,0x58,0x9A,0xDE,0xDA,0x0D,0x71}, - {0xED,0x7E,0x0D,0xBB,0x97,0xD6,0x0D,0xB6,0x74,0x57,0xB0,0x22,0x28,0xF0,0x20,0x34, + .addr="rBTmbytPkthAonMoFEFdr9ewQc9d5AQdVE"}, + {.seed={0x6B,0xC3,0x37,0xB0,0x07,0x6F,0xB7,0x60,0xAF,0x78,0x58,0x9A,0xDE,0xDA,0x0D,0x71}, + .pubkey={0xED,0x7E,0x0D,0xBB,0x97,0xD6,0x0D,0xB6,0x74,0x57,0xB0,0x22,0x28,0xF0,0x20,0x34, 0x9F,0x1B,0xCD,0x89,0xA0,0xB5,0xFB,0xD3,0x2B,0xE8,0x8C,0x5B,0x2A,0x8D,0x50,0x5A,0x4F}, - {0xEE,0xC0,0x42,0x75,0x85,0x15,0x24,0xC5,0x30,0x62,0xE6,0x21,0xBA,0xC7,0x02,0xEC, + .seckey={0xEE,0xC0,0x42,0x75,0x85,0x15,0x24,0xC5,0x30,0x62,0xE6,0x21,0xBA,0xC7,0x02,0xEC, 0x3C,0x46,0x3F,0xC1,0x7D,0xDF,0x03,0xD4,0xAA,0xF4,0xF4,0x83,0xCE,0xB1,0x59,0xF2}, - "r3q66ccmLGZHdsStqGDawGt8ek8DKthLU"}, - {{0xD8,0xE6,0x93,0x8A,0x9F,0x79,0xDE,0x01,0x3B,0x76,0x47,0x9E,0xD5,0x1C,0xB5,0xF4}, - {0xED,0x2A,0xCC,0x07,0xAC,0x51,0x1E,0xEB,0x5F,0x0C,0x37,0xC4,0x5B,0x4D,0x7F,0x58, + .addr="r3q66ccmLGZHdsStqGDawGt8ek8DKthLU"}, + {.seed={0xD8,0xE6,0x93,0x8A,0x9F,0x79,0xDE,0x01,0x3B,0x76,0x47,0x9E,0xD5,0x1C,0xB5,0xF4}, + .pubkey={0xED,0x2A,0xCC,0x07,0xAC,0x51,0x1E,0xEB,0x5F,0x0C,0x37,0xC4,0x5B,0x4D,0x7F,0x58, 0xBE,0x16,0x9B,0xF7,0x30,0xE8,0x6D,0x5B,0x39,0x3F,0x61,0x7A,0xFD,0xDA,0xFA,0x6F,0xBA}, - {0x97,0x18,0xB2,0x55,0xAE,0xC6,0x25,0x34,0xE9,0xC7,0x7C,0x1F,0xC7,0xCF,0xA9,0x9A, + .seckey={0x97,0x18,0xB2,0x55,0xAE,0xC6,0x25,0x34,0xE9,0xC7,0x7C,0x1F,0xC7,0xCF,0xA9,0x9A, 0x24,0x6E,0x41,0xFF,0xB5,0x19,0x7F,0x14,0xB7,0x33,0x17,0x4A,0xBE,0x06,0x5E,0x9C}, - "rMS5BvvLjC1HCDtL81M394JAbg7ymqymiV"}, - {{0xB6,0x14,0xFA,0x0C,0x4A,0x18,0x83,0x96,0x5E,0x04,0x93,0x55,0x83,0xBC,0x7D,0x88}, - {0xED,0xB0,0xD8,0xE9,0x32,0x13,0xB6,0x10,0xF9,0x0B,0xF7,0xEE,0x59,0x01,0x52,0xFD, + .addr="rMS5BvvLjC1HCDtL81M394JAbg7ymqymiV"}, + {.seed={0xB6,0x14,0xFA,0x0C,0x4A,0x18,0x83,0x96,0x5E,0x04,0x93,0x55,0x83,0xBC,0x7D,0x88}, + .pubkey={0xED,0xB0,0xD8,0xE9,0x32,0x13,0xB6,0x10,0xF9,0x0B,0xF7,0xEE,0x59,0x01,0x52,0xFD, 0x21,0xCA,0x9D,0xC9,0x4B,0xCD,0x02,0x03,0x45,0x6C,0xF2,0x86,0xF2,0x65,0x52,0x2B,0xCA}, - {0x3B,0xD7,0x9F,0x6C,0xFC,0x9F,0x74,0x03,0x0E,0xB1,0xE9,0x1E,0xA9,0x78,0x0E,0x82, + .seckey={0x3B,0xD7,0x9F,0x6C,0xFC,0x9F,0x74,0x03,0x0E,0xB1,0xE9,0x1E,0xA9,0x78,0x0E,0x82, 0x77,0x64,0x4D,0x4B,0x9C,0x15,0xD7,0x59,0x05,0xC4,0x90,0x57,0xB1,0x61,0x04,0x43}, - "rGGVv46pEy7R8G7tcYsPAsjWhR6WCA7L4T"}, - {{0xA7,0xA2,0x39,0xD1,0x52,0xA2,0x89,0xE4,0xD5,0x02,0xC2,0x43,0x8E,0xFF,0x6B,0x71}, - {0xED,0xFE,0xA6,0xAF,0x9A,0xEA,0x34,0xC8,0xA2,0x78,0x3C,0xED,0x52,0x25,0x97,0x28, + .addr="rGGVv46pEy7R8G7tcYsPAsjWhR6WCA7L4T"}, + {.seed={0xA7,0xA2,0x39,0xD1,0x52,0xA2,0x89,0xE4,0xD5,0x02,0xC2,0x43,0x8E,0xFF,0x6B,0x71}, + .pubkey={0xED,0xFE,0xA6,0xAF,0x9A,0xEA,0x34,0xC8,0xA2,0x78,0x3C,0xED,0x52,0x25,0x97,0x28, 0x1E,0x2E,0x0E,0x47,0xC4,0x8B,0x5D,0x7E,0xDD,0x80,0xAE,0x6B,0xE7,0x30,0x05,0x14,0x84}, - {0xEA,0x8D,0x5B,0x9F,0xA2,0x5B,0x56,0x31,0x97,0x07,0x73,0x6C,0x3B,0xB2,0xA0,0x24, + .seckey={0xEA,0x8D,0x5B,0x9F,0xA2,0x5B,0x56,0x31,0x97,0x07,0x73,0x6C,0x3B,0xB2,0xA0,0x24, 0x66,0x84,0xBA,0x72,0x3E,0xA8,0x64,0x9D,0xDE,0xB7,0x66,0x33,0x54,0x49,0xCE,0xE7}, - "rSZmSEymX238fWeoscc1DqvP3GuXNmNDR"}, - {{0xF6,0xA6,0xE7,0x2C,0xD6,0x32,0x8B,0x7B,0xAF,0x46,0x32,0xC3,0xC5,0x08,0x6C,0xE7}, - {0xED,0x80,0xE2,0x78,0x44,0x83,0x23,0x7B,0xE7,0x14,0xF6,0xE6,0x65,0x34,0x64,0xF2, + .addr="rSZmSEymX238fWeoscc1DqvP3GuXNmNDR"}, + {.seed={0xF6,0xA6,0xE7,0x2C,0xD6,0x32,0x8B,0x7B,0xAF,0x46,0x32,0xC3,0xC5,0x08,0x6C,0xE7}, + .pubkey={0xED,0x80,0xE2,0x78,0x44,0x83,0x23,0x7B,0xE7,0x14,0xF6,0xE6,0x65,0x34,0x64,0xF2, 0x72,0x16,0x11,0xEF,0x4A,0xAC,0x79,0xCC,0xD9,0xA5,0x5E,0x94,0xBB,0x5C,0x8E,0x9A,0x0D}, - {0x9A,0x0F,0xB3,0x5E,0x98,0x6E,0x7C,0x86,0x6E,0xB1,0x99,0x5C,0xD6,0xFA,0xFC,0x97, + .seckey={0x9A,0x0F,0xB3,0x5E,0x98,0x6E,0x7C,0x86,0x6E,0xB1,0x99,0x5C,0xD6,0xFA,0xFC,0x97, 0xE7,0xE3,0x93,0x59,0xF8,0xA9,0x4E,0xBC,0x2C,0xA0,0x3D,0xD2,0x35,0x45,0xCE,0x75}, - "rDdnbVT5k4GDWtqE8qVUTTVvj1Hpsxnm31"}, - {{0x52,0x9B,0x42,0xD5,0x7F,0xC7,0x88,0x9B,0x76,0x37,0xA9,0x3A,0x78,0xF3,0x25,0xA8}, - {0xED,0x42,0xFD,0x63,0x56,0x5F,0x4F,0xBD,0xBA,0x05,0x64,0x07,0xB0,0xD1,0xB7,0xEC, + .addr="rDdnbVT5k4GDWtqE8qVUTTVvj1Hpsxnm31"}, + {.seed={0x52,0x9B,0x42,0xD5,0x7F,0xC7,0x88,0x9B,0x76,0x37,0xA9,0x3A,0x78,0xF3,0x25,0xA8}, + .pubkey={0xED,0x42,0xFD,0x63,0x56,0x5F,0x4F,0xBD,0xBA,0x05,0x64,0x07,0xB0,0xD1,0xB7,0xEC, 0x22,0x57,0x1F,0x40,0x16,0x88,0xA1,0xA1,0x4E,0x4F,0x64,0xF8,0xF7,0xC5,0xD1,0x75,0x75}, - {0xB0,0xC0,0x27,0x7E,0x16,0xF9,0xAD,0xEF,0x10,0xC8,0x69,0xBE,0x35,0x21,0xD2,0xE9, + .seckey={0xB0,0xC0,0x27,0x7E,0x16,0xF9,0xAD,0xEF,0x10,0xC8,0x69,0xBE,0x35,0x21,0xD2,0xE9, 0x3C,0x88,0x97,0x77,0xAD,0xE9,0xAE,0x0C,0x9E,0x54,0xDD,0xB4,0x06,0xDE,0xD3,0xF0}, - "rNLiq2KbE7N4qTcuiFzTAJ34hHKgaSAp22"}, - {{0x39,0xCF,0x81,0xC4,0x1F,0xD3,0xB3,0x2E,0x94,0x55,0x86,0xC7,0x6C,0xF9,0x9B,0x6E}, - {0xED,0x79,0x65,0x13,0x48,0x56,0x93,0xFD,0xE0,0x53,0x85,0x5A,0x95,0xB9,0x17,0x6A, + .addr="rNLiq2KbE7N4qTcuiFzTAJ34hHKgaSAp22"}, + {.seed={0x39,0xCF,0x81,0xC4,0x1F,0xD3,0xB3,0x2E,0x94,0x55,0x86,0xC7,0x6C,0xF9,0x9B,0x6E}, + .pubkey={0xED,0x79,0x65,0x13,0x48,0x56,0x93,0xFD,0xE0,0x53,0x85,0x5A,0x95,0xB9,0x17,0x6A, 0x7D,0x87,0x1D,0x1A,0xA5,0xB9,0x6A,0x5D,0x05,0x3D,0x71,0x71,0xD9,0x4B,0x8F,0xCA,0x78}, - {0x8C,0x38,0x71,0x66,0x07,0x67,0x21,0x7C,0x56,0xBD,0xC9,0xAE,0x16,0x8C,0x3C,0x20, + .seckey={0x8C,0x38,0x71,0x66,0x07,0x67,0x21,0x7C,0x56,0xBD,0xC9,0xAE,0x16,0x8C,0x3C,0x20, 0xED,0xE4,0x08,0xED,0x9E,0xF5,0xEA,0x74,0xDF,0xAA,0xE8,0xC6,0x3E,0xA0,0x16,0xF1}, - "rnAiWEMNatkbaQkCeTdkwB4jeR56Ybwn8H"}, - {{0xE0,0x82,0x92,0x4A,0x14,0x48,0x1B,0xE5,0x91,0xAC,0xD9,0xED,0x33,0x5C,0xDE,0xD7}, - {0xED,0x8D,0xCE,0x64,0x63,0xCB,0xF2,0x73,0x98,0xC1,0xF3,0x5A,0x01,0x51,0xA5,0x22, + .addr="rnAiWEMNatkbaQkCeTdkwB4jeR56Ybwn8H"}, + {.seed={0xE0,0x82,0x92,0x4A,0x14,0x48,0x1B,0xE5,0x91,0xAC,0xD9,0xED,0x33,0x5C,0xDE,0xD7}, + .pubkey={0xED,0x8D,0xCE,0x64,0x63,0xCB,0xF2,0x73,0x98,0xC1,0xF3,0x5A,0x01,0x51,0xA5,0x22, 0x71,0xD3,0xF4,0xF6,0xD7,0x1A,0x10,0x4B,0x05,0x1F,0x23,0x16,0xDD,0xE5,0x0C,0xAC,0x71}, - {0x5A,0xC1,0x39,0x8F,0x4E,0x80,0xF9,0x9D,0xCB,0xC2,0xEF,0xF4,0x16,0xDB,0x5C,0xE6, + .seckey={0x5A,0xC1,0x39,0x8F,0x4E,0x80,0xF9,0x9D,0xCB,0xC2,0xEF,0xF4,0x16,0xDB,0x5C,0xE6, 0xD1,0x62,0xDE,0xA4,0xBD,0x0D,0x99,0x66,0x3C,0xCE,0xFF,0xC9,0xF9,0x84,0xD6,0xB2}, - "r8wffJxiecJuUHxFvhWK6pUP5CG7zKqJR"}, - {{0xD9,0xCB,0x92,0x95,0xB6,0xE6,0xD3,0xBC,0xC9,0x07,0xF9,0x51,0x5D,0xF3,0x11,0x58}, - {0xED,0x86,0xB3,0x5D,0x6E,0xFD,0xDE,0x1E,0x35,0x47,0x48,0x75,0xFB,0xB2,0xA7,0x5B, + .addr="r8wffJxiecJuUHxFvhWK6pUP5CG7zKqJR"}, + {.seed={0xD9,0xCB,0x92,0x95,0xB6,0xE6,0xD3,0xBC,0xC9,0x07,0xF9,0x51,0x5D,0xF3,0x11,0x58}, + .pubkey={0xED,0x86,0xB3,0x5D,0x6E,0xFD,0xDE,0x1E,0x35,0x47,0x48,0x75,0xFB,0xB2,0xA7,0x5B, 0x27,0xC4,0x85,0x56,0xDC,0x34,0x19,0xC3,0xEA,0x2E,0xA6,0xA5,0x42,0x7B,0x5B,0x41,0x29}, - {0xB5,0x5A,0xD0,0xD9,0x93,0x95,0x8E,0xC5,0xF4,0x65,0x00,0x05,0x3F,0xA6,0xD5,0xB4, + .seckey={0xB5,0x5A,0xD0,0xD9,0x93,0x95,0x8E,0xC5,0xF4,0x65,0x00,0x05,0x3F,0xA6,0xD5,0xB4, 0x3F,0x21,0x46,0x0B,0x07,0x37,0xD1,0xD1,0x85,0xF7,0x90,0x62,0x76,0x0F,0x28,0x9B}, - "rGqEtykmqM48BLYHpaX1EvLQRAsxcQdrVb"}, - {{0xC0,0x48,0xD9,0x81,0x1D,0x69,0x70,0x9C,0xD5,0xCE,0x39,0x3A,0xC4,0x53,0x4F,0x10}, - {0xED,0x03,0x77,0x2E,0x58,0x61,0xB1,0xE3,0xEE,0x00,0xDA,0xF6,0x56,0xCD,0x31,0x1B, + .addr="rGqEtykmqM48BLYHpaX1EvLQRAsxcQdrVb"}, + {.seed={0xC0,0x48,0xD9,0x81,0x1D,0x69,0x70,0x9C,0xD5,0xCE,0x39,0x3A,0xC4,0x53,0x4F,0x10}, + .pubkey={0xED,0x03,0x77,0x2E,0x58,0x61,0xB1,0xE3,0xEE,0x00,0xDA,0xF6,0x56,0xCD,0x31,0x1B, 0x3F,0x69,0x49,0x93,0xA0,0x1C,0x57,0x82,0xD5,0x76,0x29,0xB0,0x00,0xCD,0x77,0x2E,0xDB}, - {0xD3,0xED,0x63,0x35,0x0D,0x04,0xF8,0x63,0x98,0xAF,0x78,0xBA,0xCA,0x05,0xB9,0x6F, + .seckey={0xD3,0xED,0x63,0x35,0x0D,0x04,0xF8,0x63,0x98,0xAF,0x78,0xBA,0xCA,0x05,0xB9,0x6F, 0xD4,0x77,0xCF,0x9A,0xA1,0xB4,0xC1,0xFA,0x97,0x8D,0xF9,0xCE,0xF2,0xE3,0xD8,0xE4}, - "rL4NnQiQnF6c5Y1RpcmRLoDXBfhqGbXfz7"}, - {{0x59,0x15,0xCB,0xBC,0xBE,0x81,0x71,0x7F,0x92,0x87,0xB4,0x9D,0xC0,0x71,0x92,0xCE}, - {0xED,0x50,0xBF,0xA6,0x4D,0x2D,0x46,0xB6,0x37,0xCB,0xF7,0x4C,0xEB,0x0B,0xAE,0xF2, + .addr="rL4NnQiQnF6c5Y1RpcmRLoDXBfhqGbXfz7"}, + {.seed={0x59,0x15,0xCB,0xBC,0xBE,0x81,0x71,0x7F,0x92,0x87,0xB4,0x9D,0xC0,0x71,0x92,0xCE}, + .pubkey={0xED,0x50,0xBF,0xA6,0x4D,0x2D,0x46,0xB6,0x37,0xCB,0xF7,0x4C,0xEB,0x0B,0xAE,0xF2, 0xF4,0xAF,0xB2,0x67,0xEF,0x7D,0x9B,0xE9,0x23,0x46,0x20,0x2B,0x67,0x6E,0x7B,0x96,0x68}, - {0xFB,0x75,0x27,0xE7,0xA6,0x5F,0x41,0x04,0xA4,0xFE,0x56,0xB3,0xFD,0x22,0x8A,0x38, + .seckey={0xFB,0x75,0x27,0xE7,0xA6,0x5F,0x41,0x04,0xA4,0xFE,0x56,0xB3,0xFD,0x22,0x8A,0x38, 0x73,0x28,0x1E,0x01,0x07,0xF7,0x50,0x7C,0x33,0x9B,0x64,0x53,0x01,0x65,0x1B,0x9D}, - "rUxeSACZn7nT3VqubgoREY3yqnRbzKLYs"}, - {{0xB9,0xE1,0x68,0xB8,0x95,0x4C,0xA3,0xB2,0x7E,0x03,0x68,0xC0,0xC8,0x45,0x13,0x47}, - {0xED,0xB4,0x64,0xF1,0x2B,0xFB,0x7B,0x04,0x93,0x5E,0xFC,0x6E,0x46,0x40,0xBB,0x46, + .addr="rUxeSACZn7nT3VqubgoREY3yqnRbzKLYs"}, + {.seed={0xB9,0xE1,0x68,0xB8,0x95,0x4C,0xA3,0xB2,0x7E,0x03,0x68,0xC0,0xC8,0x45,0x13,0x47}, + .pubkey={0xED,0xB4,0x64,0xF1,0x2B,0xFB,0x7B,0x04,0x93,0x5E,0xFC,0x6E,0x46,0x40,0xBB,0x46, 0x6D,0x40,0x94,0x72,0x61,0x60,0xA7,0xC2,0x08,0xF6,0x80,0x1C,0x1A,0xE8,0xEF,0xAF,0x1D}, - {0xE8,0xD3,0x03,0x76,0xA9,0x68,0x90,0x03,0xE5,0x87,0x4E,0x37,0x3C,0xD6,0x78,0xE1, + .seckey={0xE8,0xD3,0x03,0x76,0xA9,0x68,0x90,0x03,0xE5,0x87,0x4E,0x37,0x3C,0xD6,0x78,0xE1, 0x0E,0xCC,0x9C,0xB0,0xAD,0xD5,0xB6,0x6D,0xFA,0xDF,0x70,0xAA,0x68,0x86,0xED,0x07}, - "rMCAnfWAwGSNCq8aBh6QdZjwvfjy1icMnA"}, - {{0x35,0xD6,0x75,0x85,0x52,0xBF,0x61,0x4C,0xA7,0xEB,0xA4,0xB5,0xDD,0x03,0x01,0x75}, - {0xED,0x9C,0xC9,0x6A,0x89,0x2E,0x2D,0x7B,0x10,0xEB,0x55,0xAD,0x5B,0xE1,0xDC,0x9B, + .addr="rMCAnfWAwGSNCq8aBh6QdZjwvfjy1icMnA"}, + {.seed={0x35,0xD6,0x75,0x85,0x52,0xBF,0x61,0x4C,0xA7,0xEB,0xA4,0xB5,0xDD,0x03,0x01,0x75}, + .pubkey={0xED,0x9C,0xC9,0x6A,0x89,0x2E,0x2D,0x7B,0x10,0xEB,0x55,0xAD,0x5B,0xE1,0xDC,0x9B, 0x40,0xC4,0x5C,0xE8,0x5B,0x4C,0xEA,0x53,0x03,0x3B,0x96,0x58,0xBD,0x0F,0x50,0x6A,0x21}, - {0x43,0xA6,0xFB,0x04,0xA6,0xBB,0x0A,0x6E,0x8B,0x0D,0x16,0x7E,0x1F,0x4E,0x60,0xEF, + .seckey={0x43,0xA6,0xFB,0x04,0xA6,0xBB,0x0A,0x6E,0x8B,0x0D,0x16,0x7E,0x1F,0x4E,0x60,0xEF, 0x8D,0x54,0xFF,0x7F,0xCD,0x8B,0x4C,0x4B,0x67,0xAF,0x26,0x86,0x46,0xB1,0x67,0x0B}, - "rB9EttAzy3mwq1snef5nZdTVrvEU7BXfmv"}, - {{0xD2,0xB7,0x78,0x83,0x50,0x80,0x9B,0x83,0x32,0x01,0xBE,0xF2,0x0E,0xF4,0xA5,0x77}, - {0xED,0x9D,0x0B,0x8F,0x08,0x35,0x7A,0xF9,0x27,0x52,0xAB,0x85,0x56,0x7A,0x6C,0xA6, + .addr="rB9EttAzy3mwq1snef5nZdTVrvEU7BXfmv"}, + {.seed={0xD2,0xB7,0x78,0x83,0x50,0x80,0x9B,0x83,0x32,0x01,0xBE,0xF2,0x0E,0xF4,0xA5,0x77}, + .pubkey={0xED,0x9D,0x0B,0x8F,0x08,0x35,0x7A,0xF9,0x27,0x52,0xAB,0x85,0x56,0x7A,0x6C,0xA6, 0xE3,0xCC,0x6F,0xEF,0x6F,0x68,0xBE,0xEA,0xE9,0x23,0x3C,0x17,0x38,0xF3,0xFE,0x7A,0x21}, - {0x3C,0xF3,0xD7,0x99,0x8B,0x32,0xE1,0xE3,0xFD,0x4C,0x2D,0x64,0x81,0xA4,0x5B,0x37, + .seckey={0x3C,0xF3,0xD7,0x99,0x8B,0x32,0xE1,0xE3,0xFD,0x4C,0x2D,0x64,0x81,0xA4,0x5B,0x37, 0x32,0xBC,0x5E,0xF2,0x49,0x3B,0x66,0x8C,0xF7,0x09,0x7D,0xBF,0xEE,0x04,0x20,0x42}, - "rHRcCSww7zrZd6YWATkHSPfB8hiY95x89W"}, - {{0xE6,0xC3,0x5D,0x69,0xB0,0x5A,0xA4,0x68,0xC4,0x55,0xCF,0xBE,0x48,0x1C,0x44,0xDA}, - {0xED,0x06,0x93,0x43,0xDF,0x20,0x7F,0x83,0x13,0x36,0x92,0x84,0xD4,0x8E,0xAA,0xD4, + .addr="rHRcCSww7zrZd6YWATkHSPfB8hiY95x89W"}, + {.seed={0xE6,0xC3,0x5D,0x69,0xB0,0x5A,0xA4,0x68,0xC4,0x55,0xCF,0xBE,0x48,0x1C,0x44,0xDA}, + .pubkey={0xED,0x06,0x93,0x43,0xDF,0x20,0x7F,0x83,0x13,0x36,0x92,0x84,0xD4,0x8E,0xAA,0xD4, 0xDA,0xC9,0x2F,0x90,0x68,0xE5,0xFB,0x70,0xE9,0x02,0x4E,0x6C,0xD3,0x0E,0x95,0x56,0x59}, - {0xDE,0x0B,0x64,0x22,0xB7,0x27,0x23,0x17,0xC1,0xC2,0x87,0x14,0xFE,0x76,0x12,0x01, + .seckey={0xDE,0x0B,0x64,0x22,0xB7,0x27,0x23,0x17,0xC1,0xC2,0x87,0x14,0xFE,0x76,0x12,0x01, 0xE3,0x88,0x61,0xFC,0xCB,0x3C,0x6C,0xD1,0x28,0xB2,0x5F,0xE5,0xBA,0xAF,0xA1,0xF5}, - "rMGb1sfstgo3wrEsaJHpUq7HnQHGB18ca4"}, - {{0xBC,0xA0,0x3D,0xB1,0xC1,0xAC,0x5D,0x95,0x8A,0x0A,0x8F,0x85,0x57,0xEA,0x8F,0x3A}, - {0xED,0x81,0xFD,0x11,0x50,0xF0,0x7E,0x30,0x8C,0x82,0x09,0xAE,0xA6,0x18,0xFA,0x00, + .addr="rMGb1sfstgo3wrEsaJHpUq7HnQHGB18ca4"}, + {.seed={0xBC,0xA0,0x3D,0xB1,0xC1,0xAC,0x5D,0x95,0x8A,0x0A,0x8F,0x85,0x57,0xEA,0x8F,0x3A}, + .pubkey={0xED,0x81,0xFD,0x11,0x50,0xF0,0x7E,0x30,0x8C,0x82,0x09,0xAE,0xA6,0x18,0xFA,0x00, 0xDC,0xF7,0xA9,0xD8,0xCE,0xB4,0xA6,0x07,0x53,0x6F,0x3D,0x2B,0x16,0xEE,0xDD,0x27,0x27}, - {0xB4,0x02,0x85,0x56,0xD6,0xDF,0x94,0x96,0x02,0x17,0x3B,0x35,0xA4,0xF3,0x23,0xC9, + .seckey={0xB4,0x02,0x85,0x56,0xD6,0xDF,0x94,0x96,0x02,0x17,0x3B,0x35,0xA4,0xF3,0x23,0xC9, 0xB2,0x63,0x6B,0xDA,0x5A,0xC2,0xF0,0x62,0x0C,0x5E,0xBF,0x3B,0xE2,0x1B,0xDD,0x1C}, - "rMd5FozFR6P5KZpdiYobDsR7pLcGYzYNNC"}, - {{0x6E,0x8F,0x73,0xA9,0x4F,0x55,0xD8,0x78,0x79,0xF7,0x1F,0xDA,0x52,0xF2,0x21,0xFE}, - {0xED,0x10,0x2F,0xF5,0xD3,0xED,0xC4,0xDB,0xB8,0xF7,0x8F,0x1B,0x76,0xF0,0xFC,0x1B, + .addr="rMd5FozFR6P5KZpdiYobDsR7pLcGYzYNNC"}, + {.seed={0x6E,0x8F,0x73,0xA9,0x4F,0x55,0xD8,0x78,0x79,0xF7,0x1F,0xDA,0x52,0xF2,0x21,0xFE}, + .pubkey={0xED,0x10,0x2F,0xF5,0xD3,0xED,0xC4,0xDB,0xB8,0xF7,0x8F,0x1B,0x76,0xF0,0xFC,0x1B, 0x4E,0xB6,0x5A,0xFA,0xD5,0x88,0x70,0xA7,0xD0,0x97,0xB3,0x03,0x6F,0x76,0x49,0x15,0x47}, - {0xF2,0x13,0xEE,0xF6,0xF9,0x2E,0x96,0x1F,0xA3,0x07,0x9C,0xD8,0x43,0x5B,0x72,0xC9, + .seckey={0xF2,0x13,0xEE,0xF6,0xF9,0x2E,0x96,0x1F,0xA3,0x07,0x9C,0xD8,0x43,0x5B,0x72,0xC9, 0xA1,0xF9,0xDE,0xF5,0xA6,0x60,0x65,0x43,0x8E,0x43,0xE2,0x04,0xF9,0x51,0x32,0x9F}, - "rQUcKBg3eHzTWRUJD4PbNcmPBNwvhbvF3o"}, - {{0x1E,0x52,0x4A,0x10,0x70,0x6B,0x4C,0x92,0x71,0xAA,0x5A,0x43,0x18,0x7C,0x2B,0x63}, - {0xED,0x57,0x58,0x44,0xBA,0x0B,0xCA,0xAE,0x24,0xB1,0xFF,0xFE,0xD9,0xA8,0x7C,0xB6, + .addr="rQUcKBg3eHzTWRUJD4PbNcmPBNwvhbvF3o"}, + {.seed={0x1E,0x52,0x4A,0x10,0x70,0x6B,0x4C,0x92,0x71,0xAA,0x5A,0x43,0x18,0x7C,0x2B,0x63}, + .pubkey={0xED,0x57,0x58,0x44,0xBA,0x0B,0xCA,0xAE,0x24,0xB1,0xFF,0xFE,0xD9,0xA8,0x7C,0xB6, 0xE4,0xB3,0x8F,0x64,0x6C,0x91,0xBD,0x78,0x2A,0x8A,0xFA,0x82,0x99,0x2B,0x31,0x2A,0xBE}, - {0xE0,0x10,0x7E,0x8C,0x5F,0x0A,0xFE,0xAC,0xC4,0xEC,0x23,0xDD,0x19,0x2B,0x6F,0x19, + .seckey={0xE0,0x10,0x7E,0x8C,0x5F,0x0A,0xFE,0xAC,0xC4,0xEC,0x23,0xDD,0x19,0x2B,0x6F,0x19, 0x56,0xD9,0xF0,0x11,0xAE,0x78,0xE3,0x09,0xF8,0x5A,0x40,0xFF,0x55,0x28,0x70,0xDB}, - "rJmrBAQs7Rw6pZiKRchGS9zySz3H9S9jRE"}, - {{0x6E,0xA9,0x92,0xD3,0x42,0x3A,0x80,0x53,0x9C,0xC3,0x0C,0xFC,0x3A,0x37,0x30,0x61}, - {0xED,0xB2,0x46,0xA6,0x54,0x0A,0xE4,0xDE,0x4E,0xB1,0xFA,0x44,0x25,0xB9,0x8E,0x8D, + .addr="rJmrBAQs7Rw6pZiKRchGS9zySz3H9S9jRE"}, + {.seed={0x6E,0xA9,0x92,0xD3,0x42,0x3A,0x80,0x53,0x9C,0xC3,0x0C,0xFC,0x3A,0x37,0x30,0x61}, + .pubkey={0xED,0xB2,0x46,0xA6,0x54,0x0A,0xE4,0xDE,0x4E,0xB1,0xFA,0x44,0x25,0xB9,0x8E,0x8D, 0x14,0x0D,0xC5,0x4B,0x74,0xC5,0xEE,0x5F,0xFB,0x7C,0x92,0x1F,0xBE,0x65,0x2E,0xBC,0x44}, - {0xE4,0x3D,0xFE,0x62,0x4E,0x98,0x00,0x30,0x7E,0x79,0x70,0x6D,0x70,0x0E,0x6B,0xEC, + .seckey={0xE4,0x3D,0xFE,0x62,0x4E,0x98,0x00,0x30,0x7E,0x79,0x70,0x6D,0x70,0x0E,0x6B,0xEC, 0x32,0x93,0x6C,0xBB,0x99,0xC4,0x4C,0x49,0x94,0xF5,0x6C,0xC4,0x9E,0x5B,0x85,0x88}, - "rMasL6hDPMB25XMh3AoTXcNE1ggQpox4sX"}, - {{0xE0,0xB2,0x0C,0x61,0x5E,0x22,0x0F,0xA8,0xB7,0xC9,0xAA,0x7C,0x06,0x39,0x38,0x0E}, - {0xED,0x1A,0x10,0xE1,0xE5,0xF6,0xBC,0x51,0x92,0xFC,0x8B,0x3B,0xBD,0x76,0x2A,0xEC, + .addr="rMasL6hDPMB25XMh3AoTXcNE1ggQpox4sX"}, + {.seed={0xE0,0xB2,0x0C,0x61,0x5E,0x22,0x0F,0xA8,0xB7,0xC9,0xAA,0x7C,0x06,0x39,0x38,0x0E}, + .pubkey={0xED,0x1A,0x10,0xE1,0xE5,0xF6,0xBC,0x51,0x92,0xFC,0x8B,0x3B,0xBD,0x76,0x2A,0xEC, 0x16,0x09,0xE5,0x08,0xDE,0x1E,0xAE,0x33,0x37,0x47,0x0E,0xD3,0xC1,0x7C,0xA9,0x48,0x84}, - {0x59,0x94,0x21,0x92,0xEF,0x9C,0xA7,0xF8,0xD3,0x76,0xA9,0x82,0xFC,0x76,0x4B,0xF7, + .seckey={0x59,0x94,0x21,0x92,0xEF,0x9C,0xA7,0xF8,0xD3,0x76,0xA9,0x82,0xFC,0x76,0x4B,0xF7, 0x87,0x1F,0x15,0x7C,0x35,0xF0,0xB2,0xB5,0x79,0xD3,0xCE,0x5B,0xFE,0x5F,0x8B,0x9C}, - "rKdzTk4JtuS6iad4WvA7vCVgNAYLd3L6R1"}, - {{0x4E,0x7E,0x66,0xFF,0x98,0x41,0x44,0x82,0xC1,0x96,0xAA,0xF9,0x30,0xA9,0xC2,0x6D}, - {0xED,0x87,0x05,0x76,0xA3,0x27,0x67,0x78,0x32,0x2D,0x46,0xF4,0x10,0x1F,0x64,0x3A, + .addr="rKdzTk4JtuS6iad4WvA7vCVgNAYLd3L6R1"}, + {.seed={0x4E,0x7E,0x66,0xFF,0x98,0x41,0x44,0x82,0xC1,0x96,0xAA,0xF9,0x30,0xA9,0xC2,0x6D}, + .pubkey={0xED,0x87,0x05,0x76,0xA3,0x27,0x67,0x78,0x32,0x2D,0x46,0xF4,0x10,0x1F,0x64,0x3A, 0xDC,0x81,0xBC,0xE0,0xE2,0x5A,0xB3,0xB3,0x23,0x31,0x78,0x87,0x82,0xFA,0xA1,0x83,0xB0}, - {0x83,0x2D,0x28,0x6A,0xA6,0x7B,0xD6,0x31,0xDB,0x54,0x83,0x40,0x43,0xC4,0x4D,0x09, + .seckey={0x83,0x2D,0x28,0x6A,0xA6,0x7B,0xD6,0x31,0xDB,0x54,0x83,0x40,0x43,0xC4,0x4D,0x09, 0x6F,0xBD,0xFD,0x0B,0x6C,0x00,0x9E,0x27,0x28,0xC9,0x92,0xCF,0x27,0xD4,0x7B,0x9A}, - "rP9f847oBmousWhxkf3FsYFmvmmDXr4U8F"}, - {{0xE6,0x8D,0x1F,0xF8,0x07,0x3B,0xA3,0xFB,0x3D,0xA7,0xD0,0x21,0x09,0x0F,0x00,0xAE}, - {0xED,0x63,0x58,0xA0,0x9A,0x6B,0x4A,0xF9,0xD8,0x8D,0xCF,0x59,0x3E,0x6C,0xB7,0x7B, + .addr="rP9f847oBmousWhxkf3FsYFmvmmDXr4U8F"}, + {.seed={0xE6,0x8D,0x1F,0xF8,0x07,0x3B,0xA3,0xFB,0x3D,0xA7,0xD0,0x21,0x09,0x0F,0x00,0xAE}, + .pubkey={0xED,0x63,0x58,0xA0,0x9A,0x6B,0x4A,0xF9,0xD8,0x8D,0xCF,0x59,0x3E,0x6C,0xB7,0x7B, 0x6A,0x49,0x82,0x98,0x35,0x0D,0x38,0x60,0x49,0xE0,0xD2,0xDB,0xEF,0xE2,0x49,0xE7,0xF4}, - {0xB8,0x97,0xC6,0x04,0xCF,0x24,0xED,0x9D,0x2D,0x24,0x9D,0x8D,0x7A,0xD1,0xED,0x31, + .seckey={0xB8,0x97,0xC6,0x04,0xCF,0x24,0xED,0x9D,0x2D,0x24,0x9D,0x8D,0x7A,0xD1,0xED,0x31, 0x20,0x4D,0x77,0xD9,0x03,0x47,0x69,0x85,0x08,0xFA,0x88,0xFC,0xB1,0x25,0x85,0x92}, - "rUU3a724prcKc7ZhPFjD2jbqi2ASTWLwb5"}, - {{0x8B,0x69,0x73,0xBE,0xBE,0x79,0x14,0x81,0x0E,0x0C,0x83,0x13,0x47,0x8E,0xCF,0x3F}, - {0xED,0x84,0x49,0xF9,0xB5,0xC9,0x0E,0xEE,0x3B,0x13,0x3B,0xBF,0x60,0x17,0x11,0x14, + .addr="rUU3a724prcKc7ZhPFjD2jbqi2ASTWLwb5"}, + {.seed={0x8B,0x69,0x73,0xBE,0xBE,0x79,0x14,0x81,0x0E,0x0C,0x83,0x13,0x47,0x8E,0xCF,0x3F}, + .pubkey={0xED,0x84,0x49,0xF9,0xB5,0xC9,0x0E,0xEE,0x3B,0x13,0x3B,0xBF,0x60,0x17,0x11,0x14, 0xB1,0xD8,0xC4,0x9E,0x25,0xB8,0x04,0xD3,0xDC,0x3F,0xB5,0x97,0x9D,0xDE,0xB6,0x71,0xF8}, - {0xBD,0xEF,0xBD,0x40,0xC4,0x11,0x3F,0xDD,0x5C,0x7E,0xBE,0xA1,0x11,0xC5,0x23,0x59, + .seckey={0xBD,0xEF,0xBD,0x40,0xC4,0x11,0x3F,0xDD,0x5C,0x7E,0xBE,0xA1,0x11,0xC5,0x23,0x59, 0x36,0xA8,0x73,0x14,0x64,0xE5,0x8B,0x16,0x2E,0xF7,0xF8,0x46,0x83,0x28,0x84,0xF1}, - "rNrAyuhowX4Lvy1qdb19CZhDe7jWjAuQQh"}, - {{0x3B,0xF3,0x6E,0x7E,0xE4,0xB1,0x7E,0x2B,0xD3,0x86,0xC0,0xE6,0x81,0xED,0x07,0x07}, - {0xED,0x99,0xBD,0x79,0xAA,0xE3,0x57,0x89,0xF0,0x1D,0xDC,0x29,0x12,0x47,0x1A,0xF7, + .addr="rNrAyuhowX4Lvy1qdb19CZhDe7jWjAuQQh"}, + {.seed={0x3B,0xF3,0x6E,0x7E,0xE4,0xB1,0x7E,0x2B,0xD3,0x86,0xC0,0xE6,0x81,0xED,0x07,0x07}, + .pubkey={0xED,0x99,0xBD,0x79,0xAA,0xE3,0x57,0x89,0xF0,0x1D,0xDC,0x29,0x12,0x47,0x1A,0xF7, 0xC0,0x05,0xB1,0xD9,0xD5,0xAC,0x3A,0xA7,0x76,0x57,0x7C,0x49,0xEC,0xF3,0xCC,0xFB,0xD2}, - {0x1D,0x87,0x3A,0x2F,0xCE,0x48,0xFF,0xD4,0xEF,0x13,0xCE,0x83,0x94,0x88,0x75,0xF5, + .seckey={0x1D,0x87,0x3A,0x2F,0xCE,0x48,0xFF,0xD4,0xEF,0x13,0xCE,0x83,0x94,0x88,0x75,0xF5, 0x58,0x39,0x82,0x50,0x7D,0x46,0xBF,0x6C,0x25,0xAB,0x1F,0xDB,0x42,0xB3,0x54,0x5C}, - "rDMWBAzDeam8BvJEpjntHBczHPQeppR9nx"}, - {{0x68,0x52,0x0F,0x9F,0xB9,0x6E,0xB5,0x01,0x10,0xC3,0x6C,0x13,0x83,0x78,0xE9,0x14}, - {0xED,0x17,0xA9,0x94,0x74,0x77,0x89,0x18,0x02,0xE0,0xE9,0x48,0xAE,0xC4,0x31,0x7E, + .addr="rDMWBAzDeam8BvJEpjntHBczHPQeppR9nx"}, + {.seed={0x68,0x52,0x0F,0x9F,0xB9,0x6E,0xB5,0x01,0x10,0xC3,0x6C,0x13,0x83,0x78,0xE9,0x14}, + .pubkey={0xED,0x17,0xA9,0x94,0x74,0x77,0x89,0x18,0x02,0xE0,0xE9,0x48,0xAE,0xC4,0x31,0x7E, 0x1E,0xE0,0xEC,0x45,0xBC,0xC5,0x69,0x6E,0x94,0x07,0x00,0xEB,0x0B,0x26,0x6B,0xF5,0x0D}, - {0x02,0xE9,0xBC,0x25,0xB7,0x1F,0xA4,0x8A,0x3D,0x35,0xA2,0xDB,0x89,0xF2,0xAE,0xE0, + .seckey={0x02,0xE9,0xBC,0x25,0xB7,0x1F,0xA4,0x8A,0x3D,0x35,0xA2,0xDB,0x89,0xF2,0xAE,0xE0, 0x5C,0x15,0xA1,0xA3,0x31,0x28,0x53,0xFF,0x43,0xD1,0xC8,0x66,0x74,0x14,0x3B,0xE6}, - "rBAzfmZZqjPFK7TzjHfCMhV8aHLDgr6wBC"}, - {{0x8A,0x6D,0x4F,0xF7,0x60,0xD3,0xDB,0xD1,0xE5,0xF7,0x3E,0xA5,0x4A,0xC3,0x8B,0xA5}, - {0xED,0x66,0x4B,0x49,0x86,0xBD,0x84,0x6F,0x8E,0x6F,0x79,0x43,0x5C,0x45,0x38,0xF7, + .addr="rBAzfmZZqjPFK7TzjHfCMhV8aHLDgr6wBC"}, + {.seed={0x8A,0x6D,0x4F,0xF7,0x60,0xD3,0xDB,0xD1,0xE5,0xF7,0x3E,0xA5,0x4A,0xC3,0x8B,0xA5}, + .pubkey={0xED,0x66,0x4B,0x49,0x86,0xBD,0x84,0x6F,0x8E,0x6F,0x79,0x43,0x5C,0x45,0x38,0xF7, 0x12,0xC8,0x7F,0xCE,0xF4,0xD0,0x29,0xD8,0x23,0x03,0xCE,0x69,0x22,0x41,0xFB,0x93,0x1F}, - {0x07,0x20,0xDB,0x0A,0xBC,0x3D,0x1F,0xB5,0x83,0x80,0x97,0x13,0xE0,0x64,0xAD,0x6B, + .seckey={0x07,0x20,0xDB,0x0A,0xBC,0x3D,0x1F,0xB5,0x83,0x80,0x97,0x13,0xE0,0x64,0xAD,0x6B, 0xAD,0x9A,0x88,0xD1,0x3A,0x94,0xC2,0x63,0xE9,0x54,0x9D,0x1E,0x61,0xB6,0x20,0xF5}, - "rGvs6gtwzf6JM1emzYDftUHngJ4CjTmnjz"}, - {{0xEA,0xD6,0xF2,0x74,0x7C,0x69,0x18,0xB3,0x24,0x18,0xF6,0xAE,0x68,0x32,0xC2,0x3B}, - {0xED,0xC9,0x61,0xB8,0xFE,0xB0,0x67,0x63,0xC6,0xCD,0x26,0x44,0x12,0xBD,0xEC,0xEE, + .addr="rGvs6gtwzf6JM1emzYDftUHngJ4CjTmnjz"}, + {.seed={0xEA,0xD6,0xF2,0x74,0x7C,0x69,0x18,0xB3,0x24,0x18,0xF6,0xAE,0x68,0x32,0xC2,0x3B}, + .pubkey={0xED,0xC9,0x61,0xB8,0xFE,0xB0,0x67,0x63,0xC6,0xCD,0x26,0x44,0x12,0xBD,0xEC,0xEE, 0x8E,0xD4,0x6F,0x9E,0x75,0x13,0xF5,0xDB,0x0D,0x7D,0x1D,0x8C,0xD4,0x2C,0xAE,0xD0,0x0C}, - {0x80,0x46,0x0F,0x71,0xF0,0x51,0x2C,0xF7,0xFB,0x33,0x1A,0xF2,0x7D,0x18,0xD4,0x33, + .seckey={0x80,0x46,0x0F,0x71,0xF0,0x51,0x2C,0xF7,0xFB,0x33,0x1A,0xF2,0x7D,0x18,0xD4,0x33, 0x2E,0xC6,0x1E,0xD8,0x54,0x2E,0x6C,0x04,0x40,0xB4,0xE1,0xCC,0xC4,0x0E,0x18,0x93}, - "rsQcFiFTAHgY8JEssbG9daaz7YV8XeFMK4"}, - {{0x00,0xF7,0xAD,0xB8,0x65,0xE9,0x3A,0x29,0xD0,0x16,0xEC,0x90,0x5B,0x26,0xA4,0x36}, - {0xED,0xF9,0x3C,0x87,0xD0,0x9D,0x31,0xA7,0x19,0x18,0xC3,0x5E,0xDC,0xD3,0x1E,0x87, + .addr="rsQcFiFTAHgY8JEssbG9daaz7YV8XeFMK4"}, + {.seed={0x00,0xF7,0xAD,0xB8,0x65,0xE9,0x3A,0x29,0xD0,0x16,0xEC,0x90,0x5B,0x26,0xA4,0x36}, + .pubkey={0xED,0xF9,0x3C,0x87,0xD0,0x9D,0x31,0xA7,0x19,0x18,0xC3,0x5E,0xDC,0xD3,0x1E,0x87, 0x44,0x1A,0xA8,0x11,0xA8,0x07,0x6B,0xCB,0x0E,0xED,0xBA,0x44,0x28,0x33,0xE0,0x9E,0x65}, - {0x64,0xAB,0xE9,0xFE,0x6D,0x4F,0x82,0x70,0x7D,0xEF,0x9A,0xF4,0x81,0x88,0x16,0x95, + .seckey={0x64,0xAB,0xE9,0xFE,0x6D,0x4F,0x82,0x70,0x7D,0xEF,0x9A,0xF4,0x81,0x88,0x16,0x95, 0x49,0x42,0x8D,0x8A,0xD9,0x7E,0x62,0x81,0xF4,0x4A,0x35,0x01,0xD3,0x4B,0xFA,0xF0}, - "r58iT3yfxxeLZvLevRcWcDgNFrSUyBieP"}, - {{0x83,0x6D,0xFD,0xE4,0x9A,0xCA,0xAA,0xDA,0x08,0xA4,0xBD,0xB0,0x65,0xE6,0x84,0x10}, - {0xED,0xE1,0x2C,0x6C,0x9B,0x70,0x0B,0x1D,0xBA,0x49,0x49,0x1F,0xEF,0x72,0x4D,0x46, + .addr="r58iT3yfxxeLZvLevRcWcDgNFrSUyBieP"}, + {.seed={0x83,0x6D,0xFD,0xE4,0x9A,0xCA,0xAA,0xDA,0x08,0xA4,0xBD,0xB0,0x65,0xE6,0x84,0x10}, + .pubkey={0xED,0xE1,0x2C,0x6C,0x9B,0x70,0x0B,0x1D,0xBA,0x49,0x49,0x1F,0xEF,0x72,0x4D,0x46, 0xE8,0x72,0xB5,0x2B,0x16,0xDC,0xC6,0xC1,0xB6,0x7D,0xC4,0x5B,0xA1,0xAA,0x99,0x43,0x9E}, - {0x8F,0xD8,0x72,0x25,0x43,0x5E,0xD6,0x6B,0xD0,0x6A,0x21,0x2D,0x11,0x81,0xCD,0xE9, + .seckey={0x8F,0xD8,0x72,0x25,0x43,0x5E,0xD6,0x6B,0xD0,0x6A,0x21,0x2D,0x11,0x81,0xCD,0xE9, 0x3C,0x58,0xA7,0x91,0xDC,0x29,0x79,0x3F,0x29,0xB1,0x23,0x80,0xBE,0x6C,0xAB,0x3D}, - "rhUqESrPkP75maWRrpGqAAVda6HsR9wQbR"}, - {{0xD1,0xB7,0x57,0x48,0xD2,0x27,0x31,0x3B,0x43,0x15,0xA2,0x6D,0x30,0x8A,0xB4,0x2A}, - {0xED,0x02,0xBB,0x15,0x41,0x52,0x62,0xE0,0xA6,0xDA,0xCD,0x5E,0xA7,0xF1,0x64,0xBA, + .addr="rhUqESrPkP75maWRrpGqAAVda6HsR9wQbR"}, + {.seed={0xD1,0xB7,0x57,0x48,0xD2,0x27,0x31,0x3B,0x43,0x15,0xA2,0x6D,0x30,0x8A,0xB4,0x2A}, + .pubkey={0xED,0x02,0xBB,0x15,0x41,0x52,0x62,0xE0,0xA6,0xDA,0xCD,0x5E,0xA7,0xF1,0x64,0xBA, 0x5E,0x45,0xB9,0x6A,0xFA,0x62,0xE0,0xF1,0x82,0x6B,0x94,0x10,0x8A,0xD9,0xDB,0xD6,0xDC}, - {0x18,0xFE,0xAD,0x09,0x91,0xFB,0x01,0xDF,0xFB,0x98,0x3B,0xB3,0x52,0xB8,0xB8,0xA4, + .seckey={0x18,0xFE,0xAD,0x09,0x91,0xFB,0x01,0xDF,0xFB,0x98,0x3B,0xB3,0x52,0xB8,0xB8,0xA4, 0x0E,0x81,0x84,0xBC,0x04,0xD8,0x69,0xC0,0x0C,0x2C,0xD4,0x0F,0x28,0x49,0xFC,0x11}, - "r9iuLmgHRCbUaA9AMybjBuBjNYTN34viiK"}, - {{0xBE,0x60,0x4D,0x3F,0x85,0x07,0x3B,0x0E,0x0C,0xD7,0xD5,0xDB,0x69,0x9E,0x2A,0xAC}, - {0xED,0xD8,0xB2,0x19,0x60,0xC3,0xA0,0x27,0x24,0x3C,0x01,0x4E,0x07,0x39,0x17,0xF3, + .addr="r9iuLmgHRCbUaA9AMybjBuBjNYTN34viiK"}, + {.seed={0xBE,0x60,0x4D,0x3F,0x85,0x07,0x3B,0x0E,0x0C,0xD7,0xD5,0xDB,0x69,0x9E,0x2A,0xAC}, + .pubkey={0xED,0xD8,0xB2,0x19,0x60,0xC3,0xA0,0x27,0x24,0x3C,0x01,0x4E,0x07,0x39,0x17,0xF3, 0xC9,0x93,0x7B,0xB5,0x5E,0xF4,0x55,0xEB,0xD0,0xD0,0xB7,0x62,0x82,0xC7,0xD7,0xA9,0xAE}, - {0x07,0x3C,0x18,0x34,0x37,0xCA,0xE4,0xCE,0x3B,0xD6,0xBD,0xB0,0x5D,0xB0,0x2A,0xE1, + .seckey={0x07,0x3C,0x18,0x34,0x37,0xCA,0xE4,0xCE,0x3B,0xD6,0xBD,0xB0,0x5D,0xB0,0x2A,0xE1, 0x31,0xBD,0x95,0x9A,0x9D,0xC7,0x3E,0x4C,0xEA,0x18,0x44,0x05,0xF4,0xE9,0x31,0xB2}, - "rnrYBExFRbfamRgyrTo7uFhG2r1XzjgL8Y"}, - {{0x3A,0xAC,0x26,0x07,0xC1,0xAD,0x65,0x58,0xDE,0x12,0x6B,0x94,0xB9,0x4F,0x5F,0x68}, - {0xED,0x26,0x42,0xE5,0xF8,0x41,0x5B,0x28,0x2C,0x7B,0x32,0x19,0x73,0x31,0xFB,0x44, + .addr="rnrYBExFRbfamRgyrTo7uFhG2r1XzjgL8Y"}, + {.seed={0x3A,0xAC,0x26,0x07,0xC1,0xAD,0x65,0x58,0xDE,0x12,0x6B,0x94,0xB9,0x4F,0x5F,0x68}, + .pubkey={0xED,0x26,0x42,0xE5,0xF8,0x41,0x5B,0x28,0x2C,0x7B,0x32,0x19,0x73,0x31,0xFB,0x44, 0x89,0xBD,0x3E,0xA9,0xCC,0x82,0x5D,0xC9,0x18,0x7D,0x0A,0xF8,0x4D,0x2E,0xA2,0xA4,0x20}, - {0x1E,0x8C,0x09,0x43,0x9A,0x3E,0x23,0x7B,0x54,0x73,0x75,0x67,0xCE,0x6C,0x56,0xCD, + .seckey={0x1E,0x8C,0x09,0x43,0x9A,0x3E,0x23,0x7B,0x54,0x73,0x75,0x67,0xCE,0x6C,0x56,0xCD, 0x6E,0x1B,0x26,0xCC,0xE6,0x7D,0x69,0x9F,0x00,0xE5,0x10,0x2F,0x36,0xFC,0xC5,0xF7}, - "r3YdsPCvfJ5AVbaWyd2oK7fy7zFnSiyA8a"}, - {{0xF0,0x42,0x36,0x84,0xA4,0xC3,0xF7,0xED,0x27,0x0F,0x8E,0x99,0x8C,0x62,0x6A,0x01}, - {0xED,0xEA,0xCE,0xD9,0x7E,0xF9,0x59,0x6D,0x7D,0x3A,0x82,0x24,0x42,0x2A,0x1C,0xF5, + .addr="r3YdsPCvfJ5AVbaWyd2oK7fy7zFnSiyA8a"}, + {.seed={0xF0,0x42,0x36,0x84,0xA4,0xC3,0xF7,0xED,0x27,0x0F,0x8E,0x99,0x8C,0x62,0x6A,0x01}, + .pubkey={0xED,0xEA,0xCE,0xD9,0x7E,0xF9,0x59,0x6D,0x7D,0x3A,0x82,0x24,0x42,0x2A,0x1C,0xF5, 0xF8,0x1A,0xBF,0xD0,0x62,0x23,0x0D,0xDF,0x18,0x4F,0x5A,0xD7,0x1E,0x1E,0x2B,0x05,0xED}, - {0x39,0xBC,0xA3,0x9D,0x64,0xCB,0x30,0x5B,0x7A,0x9F,0xFC,0x0B,0xD0,0x01,0x4C,0xEB, + .seckey={0x39,0xBC,0xA3,0x9D,0x64,0xCB,0x30,0x5B,0x7A,0x9F,0xFC,0x0B,0xD0,0x01,0x4C,0xEB, 0xF8,0x26,0x5F,0x03,0x04,0x7D,0xF2,0x29,0x6E,0x21,0xF3,0x70,0xE3,0xCD,0x92,0x08}, - "rNMgmiC2hzF6Qe5NRb4Nfd2r14hx3sc2v5"}, - {{0x32,0x68,0x6A,0x27,0x24,0xDC,0xFA,0x84,0xFE,0xB8,0x70,0xC0,0xCD,0xB3,0x4C,0x91}, - {0xED,0xB2,0xF1,0xFB,0xDC,0x26,0x17,0x49,0x0D,0x9D,0x6B,0x4B,0xEC,0xFA,0xC7,0xCE, + .addr="rNMgmiC2hzF6Qe5NRb4Nfd2r14hx3sc2v5"}, + {.seed={0x32,0x68,0x6A,0x27,0x24,0xDC,0xFA,0x84,0xFE,0xB8,0x70,0xC0,0xCD,0xB3,0x4C,0x91}, + .pubkey={0xED,0xB2,0xF1,0xFB,0xDC,0x26,0x17,0x49,0x0D,0x9D,0x6B,0x4B,0xEC,0xFA,0xC7,0xCE, 0x37,0x8F,0x90,0x98,0x87,0x88,0x34,0xE3,0x85,0x12,0xD4,0x82,0xC8,0x61,0xCD,0xA7,0x25}, - {0xFF,0x49,0x97,0x28,0x69,0xD9,0x20,0x49,0x9A,0x5D,0x67,0x1D,0xB7,0x25,0x68,0x23, + .seckey={0xFF,0x49,0x97,0x28,0x69,0xD9,0x20,0x49,0x9A,0x5D,0x67,0x1D,0xB7,0x25,0x68,0x23, 0x5C,0x4A,0x53,0xAB,0xFB,0xED,0xDB,0x50,0x30,0xDC,0x4B,0xED,0xF8,0x81,0xBD,0x9C}, - "rMCRWBFcdcC36Nvams6VfztDbVe7TNYh1j"}, - {{0x88,0x8B,0x76,0x7B,0x59,0x28,0x21,0x47,0xAA,0xF3,0xB4,0x88,0x99,0x4B,0x55,0xC1}, - {0xED,0x08,0x56,0x1B,0x8F,0x67,0x6F,0xC1,0xE1,0x7F,0xF2,0xF1,0x18,0xA6,0x1A,0x94, + .addr="rMCRWBFcdcC36Nvams6VfztDbVe7TNYh1j"}, + {.seed={0x88,0x8B,0x76,0x7B,0x59,0x28,0x21,0x47,0xAA,0xF3,0xB4,0x88,0x99,0x4B,0x55,0xC1}, + .pubkey={0xED,0x08,0x56,0x1B,0x8F,0x67,0x6F,0xC1,0xE1,0x7F,0xF2,0xF1,0x18,0xA6,0x1A,0x94, 0x60,0xAB,0x6E,0xE2,0x2B,0xEB,0x15,0xBB,0xBA,0x51,0x2D,0x99,0x1B,0xDE,0x30,0xDC,0x41}, - {0x73,0xA8,0xE8,0xDC,0xCD,0x83,0xB6,0x7C,0xA7,0x3A,0x4B,0x3C,0xF1,0x11,0x0A,0x01, + .seckey={0x73,0xA8,0xE8,0xDC,0xCD,0x83,0xB6,0x7C,0xA7,0x3A,0x4B,0x3C,0xF1,0x11,0x0A,0x01, 0x13,0x69,0x6E,0x07,0x6C,0x6C,0xFF,0x23,0xE2,0x7B,0x16,0xAC,0x50,0xED,0x2A,0x9F}, - "rM6iPDQ7RkieWJdU9vUxM4ynhFNScHWszZ"}, - {{0xA5,0x94,0x33,0x40,0xE0,0x33,0xC9,0xF8,0x37,0x11,0x7A,0xB7,0xA5,0xD1,0xD2,0x90}, - {0xED,0x9E,0x74,0x80,0x3B,0xFF,0x2A,0xD4,0x02,0xE4,0x81,0xD0,0x1A,0x98,0xAA,0x51, + .addr="rM6iPDQ7RkieWJdU9vUxM4ynhFNScHWszZ"}, + {.seed={0xA5,0x94,0x33,0x40,0xE0,0x33,0xC9,0xF8,0x37,0x11,0x7A,0xB7,0xA5,0xD1,0xD2,0x90}, + .pubkey={0xED,0x9E,0x74,0x80,0x3B,0xFF,0x2A,0xD4,0x02,0xE4,0x81,0xD0,0x1A,0x98,0xAA,0x51, 0x84,0xC0,0x7F,0x5D,0xC4,0x69,0xC1,0x76,0xAE,0x81,0x2B,0xC9,0x5E,0xA0,0xE7,0x12,0x53}, - {0x46,0x8F,0x5A,0x8B,0x56,0x92,0xE8,0x12,0xC9,0x48,0x60,0xAF,0x8F,0xDF,0xDA,0x15, + .seckey={0x46,0x8F,0x5A,0x8B,0x56,0x92,0xE8,0x12,0xC9,0x48,0x60,0xAF,0x8F,0xDF,0xDA,0x15, 0xEC,0x4C,0xF4,0xA1,0x0C,0x56,0x2B,0x8A,0x6B,0xFA,0xF9,0x9D,0xF1,0x1A,0xEC,0x4B}, - "rEfpJHQrcCyps27bjHL4kvvousu1UDHWVA"}, - {{0xF2,0x5D,0x4B,0x04,0xDD,0xD0,0xF6,0x59,0x89,0xC7,0x02,0xF6,0x17,0x24,0x6D,0x0D}, - {0xED,0xE6,0x37,0x43,0x60,0xF5,0xDF,0x14,0xCE,0x95,0xC9,0x80,0xDD,0xF5,0x14,0x31, + .addr="rEfpJHQrcCyps27bjHL4kvvousu1UDHWVA"}, + {.seed={0xF2,0x5D,0x4B,0x04,0xDD,0xD0,0xF6,0x59,0x89,0xC7,0x02,0xF6,0x17,0x24,0x6D,0x0D}, + .pubkey={0xED,0xE6,0x37,0x43,0x60,0xF5,0xDF,0x14,0xCE,0x95,0xC9,0x80,0xDD,0xF5,0x14,0x31, 0xD6,0xE2,0x4F,0xFD,0x75,0x17,0x4E,0xDE,0xC6,0x70,0x63,0x7F,0xB2,0x88,0x22,0xD7,0xD6}, - {0xA4,0x46,0xD7,0xBA,0x7C,0x56,0x3C,0x72,0xE9,0xD8,0x4C,0x0D,0x5A,0x06,0xBE,0xBB, + .seckey={0xA4,0x46,0xD7,0xBA,0x7C,0x56,0x3C,0x72,0xE9,0xD8,0x4C,0x0D,0x5A,0x06,0xBE,0xBB, 0xF2,0xD2,0x5C,0x27,0x7E,0x44,0x97,0x8A,0x5B,0x57,0x0C,0xC9,0x45,0x53,0xD8,0x09}, - "rDzNPeQPwy67Q64PHi759dLdrJZGZ6Fam6"}, - {{0x1B,0x3B,0xA6,0xA3,0x34,0xAC,0xF1,0x2F,0x1F,0x56,0xA3,0xC4,0xAF,0x43,0xE4,0x69}, - {0xED,0x99,0xC0,0x65,0x5D,0xBA,0x42,0x4E,0x53,0x0F,0xF8,0x92,0x4F,0x6B,0x41,0xEC, + .addr="rDzNPeQPwy67Q64PHi759dLdrJZGZ6Fam6"}, + {.seed={0x1B,0x3B,0xA6,0xA3,0x34,0xAC,0xF1,0x2F,0x1F,0x56,0xA3,0xC4,0xAF,0x43,0xE4,0x69}, + .pubkey={0xED,0x99,0xC0,0x65,0x5D,0xBA,0x42,0x4E,0x53,0x0F,0xF8,0x92,0x4F,0x6B,0x41,0xEC, 0xDD,0x94,0xB6,0xF9,0x27,0xF8,0xCA,0xE7,0x79,0xAD,0x0A,0xA4,0x02,0x98,0x8D,0xA6,0x6B}, - {0x81,0x8D,0xD1,0x46,0xE8,0xEE,0x60,0x6E,0x18,0x7E,0xDF,0x41,0xC4,0xFE,0x64,0x9B, + .seckey={0x81,0x8D,0xD1,0x46,0xE8,0xEE,0x60,0x6E,0x18,0x7E,0xDF,0x41,0xC4,0xFE,0x64,0x9B, 0x8D,0x96,0xF8,0x1A,0xB4,0x1D,0x67,0xE3,0x03,0xB2,0x7E,0x63,0xAC,0x31,0x98,0x17}, - "r99hrhMgWrzUssGoLUttkmVFoERgf9fB56"}, - {{0x21,0x06,0xF7,0xF1,0xEB,0xF6,0xA6,0xFE,0x11,0x1E,0x58,0x3D,0x01,0x1E,0xD9,0x6D}, - {0xED,0x36,0xD8,0x7E,0x9F,0x16,0xC4,0xA5,0x36,0x8F,0xBF,0x20,0x8C,0x4C,0x19,0x19, + .addr="r99hrhMgWrzUssGoLUttkmVFoERgf9fB56"}, + {.seed={0x21,0x06,0xF7,0xF1,0xEB,0xF6,0xA6,0xFE,0x11,0x1E,0x58,0x3D,0x01,0x1E,0xD9,0x6D}, + .pubkey={0xED,0x36,0xD8,0x7E,0x9F,0x16,0xC4,0xA5,0x36,0x8F,0xBF,0x20,0x8C,0x4C,0x19,0x19, 0x55,0x33,0x28,0xEC,0x16,0xA3,0xAB,0xAE,0xD4,0x75,0x4D,0xCC,0x53,0x5C,0xB2,0x4A,0x53}, - {0x9F,0xCE,0x33,0x4E,0x5D,0x8A,0x5F,0xAE,0x98,0x99,0x8A,0x2B,0x31,0x22,0x49,0x53, + .seckey={0x9F,0xCE,0x33,0x4E,0x5D,0x8A,0x5F,0xAE,0x98,0x99,0x8A,0x2B,0x31,0x22,0x49,0x53, 0x5A,0xA3,0x00,0x89,0x53,0x4C,0xFE,0x35,0xBE,0x15,0xD1,0xD3,0xE7,0x5E,0xBB,0x90}, - "rHkZ4ddVoyrkEcANucjXDXouZ8GYVmG9R2"}, - {{0x76,0xE4,0x37,0x07,0x61,0x85,0x64,0x5E,0x78,0x0F,0xAA,0xC3,0x4F,0x22,0x52,0x12}, - {0xED,0x0E,0xFD,0x87,0xB2,0x99,0xE2,0xD2,0x68,0x11,0xFE,0xE6,0x16,0x46,0xF9,0x2D, + .addr="rHkZ4ddVoyrkEcANucjXDXouZ8GYVmG9R2"}, + {.seed={0x76,0xE4,0x37,0x07,0x61,0x85,0x64,0x5E,0x78,0x0F,0xAA,0xC3,0x4F,0x22,0x52,0x12}, + .pubkey={0xED,0x0E,0xFD,0x87,0xB2,0x99,0xE2,0xD2,0x68,0x11,0xFE,0xE6,0x16,0x46,0xF9,0x2D, 0xEF,0x64,0x2E,0x77,0x83,0x3A,0x0D,0xC7,0xFF,0x70,0xDD,0x21,0xEA,0x51,0x1A,0xCB,0xB8}, - {0x8F,0x3C,0xD2,0x22,0x84,0xAE,0xE0,0x91,0x3D,0x11,0x0B,0x29,0xE1,0xAE,0x43,0x12, + .seckey={0x8F,0x3C,0xD2,0x22,0x84,0xAE,0xE0,0x91,0x3D,0x11,0x0B,0x29,0xE1,0xAE,0x43,0x12, 0x8D,0xF6,0xD1,0x2C,0x5F,0x2F,0x1E,0xCD,0xB8,0x93,0xE5,0x69,0x4F,0xA9,0x90,0x40}, - "rB4z3FJgPhFGBKsCvAY6bpN6dbychpAzZm"}, - {{0x7D,0x9A,0x2F,0x52,0xF8,0x5F,0x65,0x6A,0xFC,0x30,0x68,0xFE,0x3A,0xB2,0xDA,0x88}, - {0xED,0x21,0xDC,0x2B,0x58,0x3E,0xE9,0x24,0x89,0x53,0xA6,0xB2,0x37,0xC5,0x97,0xB6, + .addr="rB4z3FJgPhFGBKsCvAY6bpN6dbychpAzZm"}, + {.seed={0x7D,0x9A,0x2F,0x52,0xF8,0x5F,0x65,0x6A,0xFC,0x30,0x68,0xFE,0x3A,0xB2,0xDA,0x88}, + .pubkey={0xED,0x21,0xDC,0x2B,0x58,0x3E,0xE9,0x24,0x89,0x53,0xA6,0xB2,0x37,0xC5,0x97,0xB6, 0x46,0xBC,0xAB,0xD7,0xB0,0xCE,0x73,0xCD,0xE1,0x68,0xA7,0xAC,0x20,0x9A,0x94,0xDF,0xC4}, - {0x2E,0x55,0x98,0xA9,0xA3,0xDD,0x00,0xAF,0xDB,0x2A,0xB0,0x04,0xFA,0x20,0x1E,0xEA, + .seckey={0x2E,0x55,0x98,0xA9,0xA3,0xDD,0x00,0xAF,0xDB,0x2A,0xB0,0x04,0xFA,0x20,0x1E,0xEA, 0x9D,0xB9,0x9F,0xD8,0xB4,0xCC,0xA9,0x30,0x52,0x6A,0x4D,0x97,0x43,0xD2,0x31,0xE1}, - "rjFtnLNUWENruoRZd7WTZxvh2qrNrQEir"}, - {{0xB7,0xFC,0x52,0xEC,0x34,0x1F,0x62,0x2F,0xCF,0xBF,0x90,0x38,0x6F,0x12,0x4D,0x1C}, - {0xED,0xF4,0x8C,0xBC,0xC5,0xEA,0x1A,0xA7,0x1F,0x79,0xC7,0xFB,0x44,0x97,0x3D,0x9A, + .addr="rjFtnLNUWENruoRZd7WTZxvh2qrNrQEir"}, + {.seed={0xB7,0xFC,0x52,0xEC,0x34,0x1F,0x62,0x2F,0xCF,0xBF,0x90,0x38,0x6F,0x12,0x4D,0x1C}, + .pubkey={0xED,0xF4,0x8C,0xBC,0xC5,0xEA,0x1A,0xA7,0x1F,0x79,0xC7,0xFB,0x44,0x97,0x3D,0x9A, 0x60,0xDD,0xA3,0xD4,0x83,0x68,0x31,0xE8,0xF8,0xA3,0x77,0xC8,0x98,0x2C,0x5F,0x64,0x26}, - {0x81,0xD7,0x7D,0x1F,0xE3,0xC0,0xAE,0xD6,0x2C,0x13,0x3A,0xBF,0x7E,0x63,0x20,0x9D, + .seckey={0x81,0xD7,0x7D,0x1F,0xE3,0xC0,0xAE,0xD6,0x2C,0x13,0x3A,0xBF,0x7E,0x63,0x20,0x9D, 0xF6,0x04,0x50,0xD6,0xCC,0x6F,0x6D,0xED,0xC3,0x35,0x10,0x32,0x23,0x36,0x1D,0x74}, - "r4iFodQDmVS27jsvHoa1c58d5MQjHCFCzr"}, - {{0x6B,0xD9,0x01,0xBA,0x68,0xCF,0xAA,0xB3,0x2E,0x58,0x72,0xCC,0x4A,0xD3,0xAC,0xFA}, - {0xED,0x6A,0xF4,0xE2,0x9D,0xFD,0x47,0x5B,0x62,0x2C,0x50,0x17,0x3E,0x70,0x08,0x27, + .addr="r4iFodQDmVS27jsvHoa1c58d5MQjHCFCzr"}, + {.seed={0x6B,0xD9,0x01,0xBA,0x68,0xCF,0xAA,0xB3,0x2E,0x58,0x72,0xCC,0x4A,0xD3,0xAC,0xFA}, + .pubkey={0xED,0x6A,0xF4,0xE2,0x9D,0xFD,0x47,0x5B,0x62,0x2C,0x50,0x17,0x3E,0x70,0x08,0x27, 0x0D,0x78,0x72,0x91,0x3B,0x9D,0xD2,0xA5,0x0F,0xFD,0x92,0x18,0xC5,0x21,0xAA,0xB5,0xDB}, - {0x6A,0x4D,0x06,0xBE,0xB6,0xA6,0x24,0x63,0x93,0x94,0x86,0x5D,0xF3,0xCD,0x21,0x79, + .seckey={0x6A,0x4D,0x06,0xBE,0xB6,0xA6,0x24,0x63,0x93,0x94,0x86,0x5D,0xF3,0xCD,0x21,0x79, 0x36,0xF1,0x60,0x42,0x36,0x8F,0xD4,0xE7,0xE3,0x4E,0x6F,0x48,0xC7,0x5F,0xF5,0x49}, - "raXmHhhDutvNXtZijEds9YkiuRrGSGBu32"}, - {{0x06,0x6E,0xCB,0xEA,0x65,0xA8,0x14,0x8F,0xBB,0x06,0x4B,0x57,0xB3,0x6D,0x53,0x5C}, - {0xED,0x71,0x36,0xFF,0xA4,0xF9,0x41,0xB4,0x99,0x94,0xD4,0x28,0xD6,0xAF,0xE8,0xEF, + .addr="raXmHhhDutvNXtZijEds9YkiuRrGSGBu32"}, + {.seed={0x06,0x6E,0xCB,0xEA,0x65,0xA8,0x14,0x8F,0xBB,0x06,0x4B,0x57,0xB3,0x6D,0x53,0x5C}, + .pubkey={0xED,0x71,0x36,0xFF,0xA4,0xF9,0x41,0xB4,0x99,0x94,0xD4,0x28,0xD6,0xAF,0xE8,0xEF, 0xE4,0xD4,0x18,0x8D,0xC9,0xFB,0xF4,0x9D,0x8A,0x00,0x10,0x3A,0x62,0xEA,0x5A,0xF6,0x20}, - {0xEA,0x33,0xE3,0xD1,0x8B,0x96,0x82,0x5D,0x88,0xC0,0x43,0x78,0xC3,0x54,0x32,0x09, + .seckey={0xEA,0x33,0xE3,0xD1,0x8B,0x96,0x82,0x5D,0x88,0xC0,0x43,0x78,0xC3,0x54,0x32,0x09, 0xAA,0x6F,0xBB,0xDC,0xFB,0x5A,0x8B,0xFE,0xCF,0x8C,0xF6,0x2D,0x9D,0xA9,0xA1,0xE1}, - "rPxBkKtFFZHJT71r3AFdAN4pU89PLQJ1QG"}, - {{0xDC,0x30,0xE4,0xB2,0x30,0xBA,0x1A,0x0C,0xF1,0xA4,0x92,0x7B,0x16,0x58,0xB9,0xA1}, - {0xED,0x82,0x91,0xCA,0xBF,0x4A,0x95,0x59,0x0F,0x32,0x92,0xE5,0x0C,0x3B,0x26,0x2D, + .addr="rPxBkKtFFZHJT71r3AFdAN4pU89PLQJ1QG"}, + {.seed={0xDC,0x30,0xE4,0xB2,0x30,0xBA,0x1A,0x0C,0xF1,0xA4,0x92,0x7B,0x16,0x58,0xB9,0xA1}, + .pubkey={0xED,0x82,0x91,0xCA,0xBF,0x4A,0x95,0x59,0x0F,0x32,0x92,0xE5,0x0C,0x3B,0x26,0x2D, 0x9F,0xF8,0xBE,0xC3,0x61,0x91,0x0E,0xE5,0xAD,0x67,0x0D,0x22,0x56,0xF6,0xB3,0x98,0xB7}, - {0x1D,0x7A,0x60,0x86,0xB7,0xB4,0x96,0x1B,0xFC,0x9D,0x49,0x5C,0x40,0x5D,0x05,0x4C, + .seckey={0x1D,0x7A,0x60,0x86,0xB7,0xB4,0x96,0x1B,0xFC,0x9D,0x49,0x5C,0x40,0x5D,0x05,0x4C, 0x51,0x26,0x55,0x01,0xCC,0xAC,0x6D,0x24,0x55,0xAE,0x87,0x74,0x6C,0xE2,0x45,0xDB}, - "rKFEmeByntzm5pti2qAVvpbTpK8S7sEsV4"}, - {{0xE7,0x17,0xCA,0x1B,0xFC,0x0D,0x50,0xFD,0x7D,0xD7,0x56,0x3C,0x8A,0xDE,0x1B,0xCB}, - {0xED,0x76,0x1C,0xE5,0x81,0xD1,0xB0,0x8F,0xE5,0x3C,0x79,0x18,0xC0,0xB6,0xE6,0x8B, + .addr="rKFEmeByntzm5pti2qAVvpbTpK8S7sEsV4"}, + {.seed={0xE7,0x17,0xCA,0x1B,0xFC,0x0D,0x50,0xFD,0x7D,0xD7,0x56,0x3C,0x8A,0xDE,0x1B,0xCB}, + .pubkey={0xED,0x76,0x1C,0xE5,0x81,0xD1,0xB0,0x8F,0xE5,0x3C,0x79,0x18,0xC0,0xB6,0xE6,0x8B, 0x95,0xA1,0x37,0x32,0xD4,0x2B,0x36,0xBB,0x63,0x4E,0xE6,0x32,0xF8,0xCE,0x4B,0xF1,0x1E}, - {0x9A,0xCF,0x55,0xF4,0xAD,0x1C,0xDE,0xB7,0x6A,0xE8,0x44,0xD5,0x3E,0x15,0x2A,0x20, + .seckey={0x9A,0xCF,0x55,0xF4,0xAD,0x1C,0xDE,0xB7,0x6A,0xE8,0x44,0xD5,0x3E,0x15,0x2A,0x20, 0xF6,0x38,0x59,0xBF,0xB4,0x98,0x2F,0xC7,0x69,0xF2,0x70,0x51,0x2C,0x40,0xBC,0x43}, - "rM7P6ouMaCkvHpCPANcXrhnXcQZUuwHLhT"}, - {{0x6A,0x2E,0xBE,0xE7,0xD7,0x89,0x85,0xB2,0xF6,0x09,0xEE,0x5C,0x23,0x0C,0xE0,0xCB}, - {0xED,0x6A,0xE8,0x90,0x42,0x56,0xFF,0x41,0x90,0xAB,0x1E,0xBE,0x6B,0x7D,0xC7,0x53, + .addr="rM7P6ouMaCkvHpCPANcXrhnXcQZUuwHLhT"}, + {.seed={0x6A,0x2E,0xBE,0xE7,0xD7,0x89,0x85,0xB2,0xF6,0x09,0xEE,0x5C,0x23,0x0C,0xE0,0xCB}, + .pubkey={0xED,0x6A,0xE8,0x90,0x42,0x56,0xFF,0x41,0x90,0xAB,0x1E,0xBE,0x6B,0x7D,0xC7,0x53, 0x7E,0x36,0xB3,0x6A,0x41,0xD0,0x42,0x46,0x22,0x51,0x9D,0x73,0x76,0x0B,0x74,0xE6,0x6A}, - {0x01,0xDD,0x0D,0x7C,0xB3,0xF1,0xF7,0x58,0x0B,0xD9,0x08,0x39,0xE7,0x5F,0x15,0x85, + .seckey={0x01,0xDD,0x0D,0x7C,0xB3,0xF1,0xF7,0x58,0x0B,0xD9,0x08,0x39,0xE7,0x5F,0x15,0x85, 0xE5,0xE4,0x68,0xCC,0x11,0xB3,0x96,0x6A,0x78,0x0F,0xB8,0xBE,0x8A,0xDC,0xF9,0x89}, - "rLGH2vSxgeeM5QynNK8qmcdFtTP1rfg4Tg"}, - {{0x00,0xCC,0xB8,0xC5,0x68,0x56,0x59,0xAD,0x75,0xEF,0x34,0xAF,0x9D,0xEA,0xCF,0x77}, - {0xED,0xF8,0x15,0x47,0x9F,0xFC,0x3F,0x8F,0x60,0xF8,0xE2,0x97,0xD4,0x90,0x5F,0x0D, + .addr="rLGH2vSxgeeM5QynNK8qmcdFtTP1rfg4Tg"}, + {.seed={0x00,0xCC,0xB8,0xC5,0x68,0x56,0x59,0xAD,0x75,0xEF,0x34,0xAF,0x9D,0xEA,0xCF,0x77}, + .pubkey={0xED,0xF8,0x15,0x47,0x9F,0xFC,0x3F,0x8F,0x60,0xF8,0xE2,0x97,0xD4,0x90,0x5F,0x0D, 0x7A,0x7D,0x34,0x5A,0x1E,0x49,0x1B,0x27,0x7F,0x49,0x9E,0x80,0xB0,0xDE,0x3A,0x9D,0xDD}, - {0x27,0x2D,0x1E,0xF0,0xD6,0xE0,0xE1,0x03,0x1E,0xEC,0xE9,0x71,0x4E,0x74,0x5E,0xEF, + .seckey={0x27,0x2D,0x1E,0xF0,0xD6,0xE0,0xE1,0x03,0x1E,0xEC,0xE9,0x71,0x4E,0x74,0x5E,0xEF, 0xCC,0x97,0xA4,0xF0,0x98,0xC7,0x5D,0x1D,0x2B,0xDB,0xDA,0x02,0xAC,0x92,0xE9,0x17}, - "r3sq3TsjtadXRzt7N5bUCkJCBCrR26zNZJ"}, - {{0xB4,0xBC,0x80,0x7F,0xDA,0x31,0xB0,0xD1,0x69,0x7B,0xEB,0x0F,0xE9,0x9A,0x32,0x4B}, - {0xED,0xD6,0x6A,0x27,0x23,0x52,0xAB,0x9B,0xD4,0x72,0xC0,0xD6,0x88,0xA2,0x75,0x68, + .addr="r3sq3TsjtadXRzt7N5bUCkJCBCrR26zNZJ"}, + {.seed={0xB4,0xBC,0x80,0x7F,0xDA,0x31,0xB0,0xD1,0x69,0x7B,0xEB,0x0F,0xE9,0x9A,0x32,0x4B}, + .pubkey={0xED,0xD6,0x6A,0x27,0x23,0x52,0xAB,0x9B,0xD4,0x72,0xC0,0xD6,0x88,0xA2,0x75,0x68, 0x0A,0xAC,0x21,0x8B,0xAB,0x3C,0x99,0xDA,0xAE,0x89,0xCF,0x27,0xDD,0x7D,0x04,0x80,0xA3}, - {0x10,0xA2,0xBA,0xF1,0xBA,0xDB,0x75,0x0C,0x71,0x79,0xAC,0x82,0x95,0x81,0x2E,0xFA, + .seckey={0x10,0xA2,0xBA,0xF1,0xBA,0xDB,0x75,0x0C,0x71,0x79,0xAC,0x82,0x95,0x81,0x2E,0xFA, 0x83,0x7C,0x63,0x7C,0x9C,0x45,0x67,0x4C,0x59,0x49,0x7B,0x17,0x0C,0x2A,0xF3,0x91}, - "rPbwRy2SXuYjHBpamBttr73degia9aLTJV"}, - {{0x1F,0x79,0x56,0x35,0x2E,0x46,0x34,0xFD,0x32,0xDA,0xF2,0xE1,0xE7,0xA5,0xF8,0x6D}, - {0xED,0x6A,0xB7,0x3A,0x06,0xC0,0x29,0x6D,0x38,0x4F,0xC1,0xFE,0x79,0xF1,0xCA,0xBB, + .addr="rPbwRy2SXuYjHBpamBttr73degia9aLTJV"}, + {.seed={0x1F,0x79,0x56,0x35,0x2E,0x46,0x34,0xFD,0x32,0xDA,0xF2,0xE1,0xE7,0xA5,0xF8,0x6D}, + .pubkey={0xED,0x6A,0xB7,0x3A,0x06,0xC0,0x29,0x6D,0x38,0x4F,0xC1,0xFE,0x79,0xF1,0xCA,0xBB, 0x1A,0xBD,0xAE,0xCF,0xA4,0x49,0xE5,0x52,0x68,0xB6,0x16,0xF5,0x05,0xF7,0xE0,0x1D,0xE0}, - {0x67,0x22,0xC5,0xC3,0x26,0xEF,0x52,0x22,0xE5,0x03,0xFA,0x61,0x01,0x64,0x49,0x63, + .seckey={0x67,0x22,0xC5,0xC3,0x26,0xEF,0x52,0x22,0xE5,0x03,0xFA,0x61,0x01,0x64,0x49,0x63, 0xF0,0x54,0x84,0x01,0x34,0x43,0xF5,0xF0,0xCA,0x72,0x55,0xE5,0xDB,0xA7,0xCE,0xD6}, - "rfS18n1hbRaEaJw79nbV2ZTHSmMuRUsDdN"}, - {{0xD1,0xF7,0x94,0xBE,0xFD,0x48,0x18,0x3F,0xA8,0x00,0x0C,0xCE,0x91,0x93,0x65,0xD5}, - {0xED,0xEA,0x05,0x86,0x7C,0x18,0x83,0x59,0x07,0x2C,0xA7,0x82,0x09,0xB1,0xF5,0x63, + .addr="rfS18n1hbRaEaJw79nbV2ZTHSmMuRUsDdN"}, + {.seed={0xD1,0xF7,0x94,0xBE,0xFD,0x48,0x18,0x3F,0xA8,0x00,0x0C,0xCE,0x91,0x93,0x65,0xD5}, + .pubkey={0xED,0xEA,0x05,0x86,0x7C,0x18,0x83,0x59,0x07,0x2C,0xA7,0x82,0x09,0xB1,0xF5,0x63, 0x3B,0x52,0x1D,0xF3,0x2A,0x6C,0x95,0x44,0xE1,0xD8,0xD8,0x07,0x06,0xA0,0x7B,0x24,0xCD}, - {0x5E,0x8E,0xCA,0xB0,0xC2,0xA3,0x33,0x8C,0x21,0xDF,0xEC,0xC3,0x34,0xF6,0x48,0x3A, + .seckey={0x5E,0x8E,0xCA,0xB0,0xC2,0xA3,0x33,0x8C,0x21,0xDF,0xEC,0xC3,0x34,0xF6,0x48,0x3A, 0x87,0x83,0xEB,0xD9,0x9F,0xF3,0x45,0xBC,0x3F,0xFE,0x13,0x54,0x35,0x5F,0xF8,0x92}, - "rKj6PKqZAtChGkjspvRCP9SR5JkqUvzrnY"}, - {{0x3D,0x77,0x10,0x8C,0x0D,0x8D,0xE3,0xB6,0x78,0xC2,0x44,0x42,0x39,0xB8,0xD2,0xD6}, - {0xED,0x90,0x0C,0xCE,0x77,0xC7,0x19,0xAF,0x5A,0xF2,0xEF,0xBE,0x4B,0xC1,0xA4,0xF6, + .addr="rKj6PKqZAtChGkjspvRCP9SR5JkqUvzrnY"}, + {.seed={0x3D,0x77,0x10,0x8C,0x0D,0x8D,0xE3,0xB6,0x78,0xC2,0x44,0x42,0x39,0xB8,0xD2,0xD6}, + .pubkey={0xED,0x90,0x0C,0xCE,0x77,0xC7,0x19,0xAF,0x5A,0xF2,0xEF,0xBE,0x4B,0xC1,0xA4,0xF6, 0xA7,0x66,0x11,0xBF,0x6D,0x57,0xA5,0xAE,0xAC,0x18,0x12,0x3E,0x76,0x5A,0xCC,0x5B,0x10}, - {0x6E,0x32,0x83,0xAB,0x90,0xCB,0xA6,0x69,0xF1,0xD8,0xF9,0xED,0xCF,0x0A,0xF4,0x11, + .seckey={0x6E,0x32,0x83,0xAB,0x90,0xCB,0xA6,0x69,0xF1,0xD8,0xF9,0xED,0xCF,0x0A,0xF4,0x11, 0xC3,0x67,0x15,0xF5,0xA3,0x0E,0x29,0x26,0x2E,0xC9,0xB2,0x9F,0xCB,0x08,0x2B,0xAF}, - "rn7ddvAPRroTMaF3fGh4DUw3H5h1u4CdCP"}, - {{0xB4,0x7E,0x80,0x90,0xFD,0xCC,0xD9,0x90,0xC2,0x66,0x7A,0x92,0xDF,0x29,0x36,0xAE}, - {0xED,0x83,0xDD,0xE0,0x7B,0xFE,0xC4,0x4F,0x53,0xB9,0x78,0x79,0xFD,0xC3,0xFF,0x47, + .addr="rn7ddvAPRroTMaF3fGh4DUw3H5h1u4CdCP"}, + {.seed={0xB4,0x7E,0x80,0x90,0xFD,0xCC,0xD9,0x90,0xC2,0x66,0x7A,0x92,0xDF,0x29,0x36,0xAE}, + .pubkey={0xED,0x83,0xDD,0xE0,0x7B,0xFE,0xC4,0x4F,0x53,0xB9,0x78,0x79,0xFD,0xC3,0xFF,0x47, 0xDD,0xB5,0x09,0xCF,0x3B,0xFC,0xB4,0x49,0x7E,0x8E,0x8A,0x83,0x1D,0xD8,0x80,0x36,0x83}, - {0x03,0x54,0x27,0x82,0x38,0x85,0x9B,0xBD,0x07,0xB7,0xE7,0xBE,0xF4,0xC7,0x20,0xE4, + .seckey={0x03,0x54,0x27,0x82,0x38,0x85,0x9B,0xBD,0x07,0xB7,0xE7,0xBE,0xF4,0xC7,0x20,0xE4, 0xB8,0x74,0xAD,0x77,0xC9,0xA5,0x8A,0x8A,0x62,0xD4,0xA4,0x5F,0xB0,0x62,0xE7,0x7F}, - "rfTHpX7jyQgVL4T5ErYvTVMfYEiQmrhpdu"}, - {{0xDF,0x89,0xC9,0xA7,0xB6,0xFB,0xB5,0x03,0xFF,0xD3,0x16,0xA0,0xBF,0x57,0xED,0xD1}, - {0xED,0x03,0x48,0x03,0x06,0x47,0x50,0xC9,0xB6,0xE9,0x7B,0x9F,0xD0,0x53,0x50,0xAE, + .addr="rfTHpX7jyQgVL4T5ErYvTVMfYEiQmrhpdu"}, + {.seed={0xDF,0x89,0xC9,0xA7,0xB6,0xFB,0xB5,0x03,0xFF,0xD3,0x16,0xA0,0xBF,0x57,0xED,0xD1}, + .pubkey={0xED,0x03,0x48,0x03,0x06,0x47,0x50,0xC9,0xB6,0xE9,0x7B,0x9F,0xD0,0x53,0x50,0xAE, 0x5F,0x92,0xEF,0xDA,0x63,0xBB,0xF7,0xD7,0x81,0x69,0x96,0x43,0x71,0xCF,0x97,0xD4,0xCD}, - {0xBA,0xA9,0x3D,0x91,0xEE,0xEE,0x96,0xBD,0x0C,0x53,0xEF,0x0F,0xF2,0x8C,0xD6,0xA2, + .seckey={0xBA,0xA9,0x3D,0x91,0xEE,0xEE,0x96,0xBD,0x0C,0x53,0xEF,0x0F,0xF2,0x8C,0xD6,0xA2, 0x48,0xDD,0xF8,0x9F,0xC1,0x22,0x45,0x70,0x0C,0xD5,0x3C,0xA2,0x20,0x65,0x8F,0x7B}, - "rM84gaT9yh6TXS51xsTawH2CDrEZeuffgZ"}, - {{0x88,0x2D,0xB9,0x2E,0x15,0xCC,0x70,0xB0,0xE0,0xD7,0x82,0x06,0x4E,0x7F,0x06,0xA4}, - {0xED,0x30,0xC8,0x1F,0x58,0x63,0x63,0xD4,0x61,0xFF,0x8C,0x21,0x18,0xF9,0x2F,0x19, + .addr="rM84gaT9yh6TXS51xsTawH2CDrEZeuffgZ"}, + {.seed={0x88,0x2D,0xB9,0x2E,0x15,0xCC,0x70,0xB0,0xE0,0xD7,0x82,0x06,0x4E,0x7F,0x06,0xA4}, + .pubkey={0xED,0x30,0xC8,0x1F,0x58,0x63,0x63,0xD4,0x61,0xFF,0x8C,0x21,0x18,0xF9,0x2F,0x19, 0x9A,0xDA,0x24,0x94,0xA7,0xD1,0x9C,0xC5,0x19,0xAD,0xC6,0x5D,0xA5,0x95,0xD9,0x56,0xEA}, - {0x69,0x2D,0xDE,0xE4,0xD0,0x31,0xF3,0x30,0x1D,0xDC,0x17,0x1F,0x40,0x1F,0xB5,0xDF, + .seckey={0x69,0x2D,0xDE,0xE4,0xD0,0x31,0xF3,0x30,0x1D,0xDC,0x17,0x1F,0x40,0x1F,0xB5,0xDF, 0x41,0xEA,0xD3,0x8B,0x45,0x94,0x8D,0x79,0x81,0xCD,0x6B,0x84,0xE8,0x25,0x43,0xCF}, - "rH2q2kVDnmazJUGuEJrskgPdMZehdLzeUA"}, - {{0x84,0xB7,0xB5,0x7E,0x48,0x52,0x17,0xDA,0xDD,0xF9,0x33,0xBA,0x5A,0x04,0x38,0xF4}, - {0xED,0x16,0x8A,0x23,0xDB,0x39,0x5C,0x84,0x6D,0xC1,0x5A,0x68,0x44,0xE3,0x51,0xAC, + .addr="rH2q2kVDnmazJUGuEJrskgPdMZehdLzeUA"}, + {.seed={0x84,0xB7,0xB5,0x7E,0x48,0x52,0x17,0xDA,0xDD,0xF9,0x33,0xBA,0x5A,0x04,0x38,0xF4}, + .pubkey={0xED,0x16,0x8A,0x23,0xDB,0x39,0x5C,0x84,0x6D,0xC1,0x5A,0x68,0x44,0xE3,0x51,0xAC, 0x9A,0xD8,0x18,0x02,0x34,0xC5,0xAC,0xAF,0x02,0xB6,0xEB,0x3A,0x7E,0x9D,0x51,0x7B,0x82}, - {0x5E,0xEB,0x85,0xCE,0xD3,0x5D,0x95,0x77,0x66,0x4A,0x8D,0x6B,0x2B,0xE0,0x71,0x61, + .seckey={0x5E,0xEB,0x85,0xCE,0xD3,0x5D,0x95,0x77,0x66,0x4A,0x8D,0x6B,0x2B,0xE0,0x71,0x61, 0xF3,0x46,0x2C,0x43,0x20,0x09,0xEB,0x8E,0x1A,0x45,0x4D,0x27,0x28,0x5C,0x7A,0x4C}, - "rsHuiJJnnhyGf4vtT3wVt4ZnsxdA8P7sZm"}, - {{0xBC,0x7C,0x5D,0x12,0x55,0x64,0xD2,0x5C,0xD0,0x70,0xA9,0xDE,0x04,0x61,0xAA,0x9E}, - {0xED,0x86,0xD3,0xD8,0x44,0x91,0xA7,0x8F,0x78,0xA8,0x16,0x8E,0x92,0x6C,0x0A,0x72, + .addr="rsHuiJJnnhyGf4vtT3wVt4ZnsxdA8P7sZm"}, + {.seed={0xBC,0x7C,0x5D,0x12,0x55,0x64,0xD2,0x5C,0xD0,0x70,0xA9,0xDE,0x04,0x61,0xAA,0x9E}, + .pubkey={0xED,0x86,0xD3,0xD8,0x44,0x91,0xA7,0x8F,0x78,0xA8,0x16,0x8E,0x92,0x6C,0x0A,0x72, 0x84,0x4B,0xD4,0xEB,0x15,0x9C,0xF7,0xB8,0x3F,0xF1,0x4E,0xC6,0x54,0x3D,0xB1,0xE3,0x2A}, - {0x16,0x22,0xF0,0x6D,0xB9,0x22,0xF8,0xA1,0x27,0x46,0x0E,0xF9,0x9C,0x31,0x3E,0xA9, + .seckey={0x16,0x22,0xF0,0x6D,0xB9,0x22,0xF8,0xA1,0x27,0x46,0x0E,0xF9,0x9C,0x31,0x3E,0xA9, 0x34,0xE9,0xC7,0x7D,0xC3,0x5F,0x02,0x6D,0x1C,0xEF,0x71,0x64,0x75,0x97,0x46,0x83}, - "rnesu4gx539Q7CwFkZQtG1AuGsjHNZro46"}, - {{0x4B,0x58,0x3A,0xF8,0xAF,0x5C,0xFF,0xC3,0xFD,0x39,0x74,0xBE,0x05,0x62,0x23,0x5F}, - {0xED,0x5B,0x64,0x25,0xC7,0x8D,0xEE,0xF6,0x4A,0x97,0x9C,0xF9,0xAF,0xFF,0xD3,0x8C, + .addr="rnesu4gx539Q7CwFkZQtG1AuGsjHNZro46"}, + {.seed={0x4B,0x58,0x3A,0xF8,0xAF,0x5C,0xFF,0xC3,0xFD,0x39,0x74,0xBE,0x05,0x62,0x23,0x5F}, + .pubkey={0xED,0x5B,0x64,0x25,0xC7,0x8D,0xEE,0xF6,0x4A,0x97,0x9C,0xF9,0xAF,0xFF,0xD3,0x8C, 0x57,0x15,0x6B,0x73,0xD9,0xB4,0xB0,0xDB,0x6C,0xAC,0x5F,0xA1,0x25,0x79,0xDA,0xA8,0x53}, - {0xF5,0x40,0x53,0x15,0xA2,0x34,0x9E,0xCE,0x4E,0x1E,0xE5,0x19,0x78,0x99,0xB3,0xE4, + .seckey={0xF5,0x40,0x53,0x15,0xA2,0x34,0x9E,0xCE,0x4E,0x1E,0xE5,0x19,0x78,0x99,0xB3,0xE4, 0x0D,0xB7,0x84,0x05,0xCF,0x60,0x78,0x3E,0x82,0x23,0x22,0x2A,0x0D,0xE2,0x34,0xAB}, - "rHYvTtFVVm7fed5no7JjXQnVJz3vMV2dRV"}, - {{0x13,0xB4,0x06,0x1F,0x0E,0xB1,0xE6,0x94,0xC3,0x1A,0x4A,0x73,0x2E,0x6B,0x26,0xA7}, - {0xED,0x61,0x7A,0x04,0xF7,0xC3,0xBA,0x23,0xF0,0x1B,0x93,0x57,0x25,0x1B,0x6E,0x42, + .addr="rHYvTtFVVm7fed5no7JjXQnVJz3vMV2dRV"}, + {.seed={0x13,0xB4,0x06,0x1F,0x0E,0xB1,0xE6,0x94,0xC3,0x1A,0x4A,0x73,0x2E,0x6B,0x26,0xA7}, + .pubkey={0xED,0x61,0x7A,0x04,0xF7,0xC3,0xBA,0x23,0xF0,0x1B,0x93,0x57,0x25,0x1B,0x6E,0x42, 0x63,0x18,0x72,0x1B,0x55,0x32,0xEC,0x81,0x03,0x17,0x6A,0x65,0xB9,0xCE,0x49,0xEA,0x09}, - {0xC5,0xF4,0xEB,0x19,0x28,0xD6,0x80,0xFA,0x85,0x59,0xC5,0xC1,0xB1,0x15,0x68,0x03, + .seckey={0xC5,0xF4,0xEB,0x19,0x28,0xD6,0x80,0xFA,0x85,0x59,0xC5,0xC1,0xB1,0x15,0x68,0x03, 0x9C,0x8C,0xF4,0x38,0x9E,0x5B,0x62,0x98,0x3A,0x05,0x2E,0x69,0x17,0x0B,0x5C,0x52}, - "rKggDDftQLRV2sSrYexWZXhA5nMwLzguZq"}, - {{0xE2,0xCE,0x8C,0xE1,0x86,0xDF,0x83,0x43,0x40,0x1F,0x78,0x6E,0xA0,0x17,0x9D,0x2D}, - {0xED,0x49,0xEA,0x8C,0x43,0x5F,0xB1,0xBC,0xC0,0xC9,0x59,0xD8,0xAF,0x24,0x24,0xFC, + .addr="rKggDDftQLRV2sSrYexWZXhA5nMwLzguZq"}, + {.seed={0xE2,0xCE,0x8C,0xE1,0x86,0xDF,0x83,0x43,0x40,0x1F,0x78,0x6E,0xA0,0x17,0x9D,0x2D}, + .pubkey={0xED,0x49,0xEA,0x8C,0x43,0x5F,0xB1,0xBC,0xC0,0xC9,0x59,0xD8,0xAF,0x24,0x24,0xFC, 0xDB,0xA4,0x96,0x92,0xD6,0xA2,0x58,0xB3,0xA3,0xFD,0xEB,0x86,0xBE,0x3E,0x71,0x3F,0x29}, - {0x1D,0x75,0xE3,0xFB,0x07,0x54,0xEA,0x72,0x69,0xAD,0xBA,0x37,0x20,0x7B,0xFB,0xEF, + .seckey={0x1D,0x75,0xE3,0xFB,0x07,0x54,0xEA,0x72,0x69,0xAD,0xBA,0x37,0x20,0x7B,0xFB,0xEF, 0x81,0x22,0x88,0x94,0xBB,0x8B,0xDA,0x0F,0x1E,0x37,0xC6,0xF8,0x0D,0x46,0xA5,0x5B}, - "rwgf6e2bg4a8vPadtsgZ6HJuNsorufBwzZ"}, - {{0xDE,0x5E,0xDD,0x25,0x80,0x44,0x31,0x37,0xF8,0x38,0x72,0xC4,0x39,0x69,0x9C,0x51}, - {0xED,0x39,0x3B,0x1C,0x26,0x8C,0x24,0x11,0x4B,0xD5,0xD4,0xB5,0xAB,0xA7,0xAE,0x48, + .addr="rwgf6e2bg4a8vPadtsgZ6HJuNsorufBwzZ"}, + {.seed={0xDE,0x5E,0xDD,0x25,0x80,0x44,0x31,0x37,0xF8,0x38,0x72,0xC4,0x39,0x69,0x9C,0x51}, + .pubkey={0xED,0x39,0x3B,0x1C,0x26,0x8C,0x24,0x11,0x4B,0xD5,0xD4,0xB5,0xAB,0xA7,0xAE,0x48, 0xED,0x5E,0xF0,0x0B,0x2F,0x53,0x1C,0x49,0x64,0xF8,0xEA,0x16,0x76,0xDA,0xDF,0xE0,0x51}, - {0xBC,0xFD,0x2C,0x3D,0x65,0x97,0x83,0x64,0x04,0x42,0x2E,0x5C,0x72,0x5C,0xC4,0xCF, + .seckey={0xBC,0xFD,0x2C,0x3D,0x65,0x97,0x83,0x64,0x04,0x42,0x2E,0x5C,0x72,0x5C,0xC4,0xCF, 0x28,0x92,0x81,0xE3,0xAB,0xF2,0x22,0xA4,0x2A,0xCF,0xE1,0xB5,0xDE,0x5F,0x70,0x10}, - "rD7xAXQhKidGjkVtzo7ixZr3c3PCEiiDRS"}, - {{0xC7,0x41,0xF5,0x5E,0x62,0x2D,0x4F,0x10,0xAE,0xCA,0xA5,0x0D,0x91,0xA7,0xD3,0x66}, - {0xED,0x36,0x81,0xFA,0xD1,0xF5,0xCF,0xBB,0x60,0x28,0x88,0x6D,0x51,0xB1,0xC7,0x75, + .addr="rD7xAXQhKidGjkVtzo7ixZr3c3PCEiiDRS"}, + {.seed={0xC7,0x41,0xF5,0x5E,0x62,0x2D,0x4F,0x10,0xAE,0xCA,0xA5,0x0D,0x91,0xA7,0xD3,0x66}, + .pubkey={0xED,0x36,0x81,0xFA,0xD1,0xF5,0xCF,0xBB,0x60,0x28,0x88,0x6D,0x51,0xB1,0xC7,0x75, 0xD1,0xCA,0xB7,0x10,0xED,0x86,0x75,0xA1,0x71,0x9C,0x41,0x81,0xC8,0x9D,0xB9,0x04,0xC7}, - {0xA3,0x5A,0xBA,0xF9,0xB2,0xE5,0x61,0x92,0xAC,0x22,0x67,0x8F,0x5A,0x5E,0x61,0x35, + .seckey={0xA3,0x5A,0xBA,0xF9,0xB2,0xE5,0x61,0x92,0xAC,0x22,0x67,0x8F,0x5A,0x5E,0x61,0x35, 0xAE,0x67,0x96,0xDD,0x75,0xFB,0x00,0xB1,0xF8,0x4F,0xC4,0x48,0x4A,0xEA,0xFA,0xFC}, - "rwdo3TEgC2uS173RasWvhBouuWfTSFEPhD"}, - {{0xF5,0x73,0xD8,0xDE,0xA2,0x07,0xDB,0x93,0x96,0x9A,0x92,0x2E,0xE6,0xE7,0x3C,0xBA}, - {0xED,0x61,0x55,0xF1,0xD3,0xDA,0xD3,0x19,0xCF,0xB3,0xDE,0xB1,0xCA,0xCB,0x65,0xDC, + .addr="rwdo3TEgC2uS173RasWvhBouuWfTSFEPhD"}, + {.seed={0xF5,0x73,0xD8,0xDE,0xA2,0x07,0xDB,0x93,0x96,0x9A,0x92,0x2E,0xE6,0xE7,0x3C,0xBA}, + .pubkey={0xED,0x61,0x55,0xF1,0xD3,0xDA,0xD3,0x19,0xCF,0xB3,0xDE,0xB1,0xCA,0xCB,0x65,0xDC, 0x63,0xAD,0x61,0x67,0xB6,0x1C,0xFA,0x52,0xCF,0x2B,0x07,0x7C,0x15,0xF0,0xCD,0x41,0x6A}, - {0x0C,0x87,0x0A,0x05,0x07,0x25,0x95,0x4D,0x66,0x4E,0xE0,0x01,0x0C,0x58,0x0A,0xD6, + .seckey={0x0C,0x87,0x0A,0x05,0x07,0x25,0x95,0x4D,0x66,0x4E,0xE0,0x01,0x0C,0x58,0x0A,0xD6, 0x28,0x52,0x03,0x05,0x6A,0xAF,0x6F,0x59,0x43,0x02,0xCB,0x98,0xE0,0x3E,0x56,0xE3}, - "rNXHq25tNB23Ce6fbPw2wakxnmdzE3Fq6Q"} + .addr="rNXHq25tNB23Ce6fbPw2wakxnmdzE3Fq6Q"} }; // clang-format on diff --git a/src/test/protocol/SeqProxy_test.cpp b/src/test/protocol/SeqProxy_test.cpp index 4a5c0c4506..d0764d7399 100644 --- a/src/test/protocol/SeqProxy_test.cpp +++ b/src/test/protocol/SeqProxy_test.cpp @@ -54,7 +54,7 @@ struct SeqProxy_test : public beast::unit_test::suite ss << seqProx; std::string str{ss.str()}; - return str.find(type) == 0 && str[type.size()] == ' ' && + return str.starts_with(type) && str[type.size()] == ' ' && str.find(value) == (type.size() + 1); } diff --git a/src/test/protocol/TER_test.cpp b/src/test/protocol/TER_test.cpp index 814fa4ece5..5b83a7905b 100644 --- a/src/test/protocol/TER_test.cpp +++ b/src/test/protocol/TER_test.cpp @@ -51,20 +51,18 @@ struct TER_test : public beast::unit_test::suite using To_t = std::decay_t(tup))>; using From_t = std::decay_t(tup))>; static_assert( - std::is_same::value == std::is_convertible::value, - "Convert err"); + std::is_same_v == std::is_convertible_v, "Convert err"); static_assert( - std::is_same::value == std::is_constructible::value, + std::is_same_v == std::is_constructible_v, "Construct err"); static_assert( - std::is_same::value == - std::is_assignable::value, + std::is_same_v == std::is_assignable_v, "Assign err"); // Assignment or conversion from integer to type should never work. - static_assert(!std::is_convertible::value, "Convert err"); - static_assert(!std::is_constructible::value, "Construct err"); - static_assert(!std::is_assignable::value, "Assign err"); + static_assert(!std::is_convertible_v, "Convert err"); + static_assert(!std::is_constructible_v, "Construct err"); + static_assert(!std::is_assignable_v, "Assign err"); } }; @@ -93,7 +91,7 @@ struct TER_test : public beast::unit_test::suite { Func const func; func(tup, s); - testIterate::value - 1, I2 - 1, Func>(tup, s); + testIterate - 1, I2 - 1, Func>(tup, s); } // Finish iteration over the tuple. @@ -118,7 +116,7 @@ struct TER_test : public beast::unit_test::suite // Examples of each kind of enum. static auto const terEnums = std::make_tuple( telLOCAL_ERROR, temMALFORMED, tefFAILURE, terRETRY, tesSUCCESS, tecCLAIM); - static int const hiIndex{std::tuple_size::value - 1}; + static int const hiIndex{std::tuple_size_v - 1}; // Verify that enums cannot be converted to other enum types. testIterate(terEnums, *this); @@ -127,9 +125,9 @@ struct TER_test : public beast::unit_test::suite auto isConvertible = [](auto from, auto to) { using From_t = std::decay_t; using To_t = std::decay_t; - static_assert(std::is_convertible::value, "Convert err"); - static_assert(std::is_constructible::value, "Construct err"); - static_assert(std::is_assignable::value, "Assign err"); + static_assert(std::is_convertible_v, "Convert err"); + static_assert(std::is_constructible_v, "Construct err"); + static_assert(std::is_assignable_v, "Assign err"); }; // Verify the right types convert to NotTEC. @@ -145,9 +143,9 @@ struct TER_test : public beast::unit_test::suite auto notConvertible = [](auto from, auto to) { using To_t = std::decay_t; using From_t = std::decay_t; - static_assert(!std::is_convertible::value, "Convert err"); - static_assert(!std::is_constructible::value, "Construct err"); - static_assert(!std::is_assignable::value, "Assign err"); + static_assert(!std::is_convertible_v, "Convert err"); + static_assert(!std::is_constructible_v, "Construct err"); + static_assert(!std::is_assignable_v, "Assign err"); }; // Verify types that shouldn't convert to NotTEC. @@ -189,17 +187,17 @@ struct TER_test : public beast::unit_test::suite auto const lhs = std::get(tup); auto const rhs = std::get(tup); - static_assert(std::is_same::value, "== err"); + static_assert(std::is_same_v, "== err"); - static_assert(std::is_same::value, "!= err"); + static_assert(std::is_same_v, "!= err"); - static_assert(std::is_same::value, "< err"); + static_assert(std::is_same_v, "< err"); - static_assert(std::is_same::value, "<= err"); + static_assert(std::is_same_v, "<= err"); - static_assert(std::is_same(lhs, rhs)), bool>::value, "> err"); + static_assert(std::is_same_v(lhs, rhs)), bool>, "> err"); - static_assert(std::is_same=(lhs, rhs)), bool>::value, ">= err"); + static_assert(std::is_same_v=(lhs, rhs)), bool>, ">= err"); // Make sure a sampling of TER types exhibit the expected behavior // for all comparison operators. @@ -227,7 +225,7 @@ struct TER_test : public beast::unit_test::suite tecCLAIM, NotTEC{telLOCAL_ERROR}, TER{tecCLAIM}); - static int const hiIndex{std::tuple_size::value - 1}; + static int const hiIndex{std::tuple_size_v - 1}; // Verify that all types in the ters tuple can be compared with all // the other types in ters. diff --git a/src/test/resource/Logic_test.cpp b/src/test/resource/Logic_test.cpp index 095df62cfb..f6da313b22 100644 --- a/src/test/resource/Logic_test.cpp +++ b/src/test/resource/Logic_test.cpp @@ -21,8 +21,7 @@ #include #include -namespace xrpl { -namespace Resource { +namespace xrpl::Resource { class ResourceManager_test : public beast::unit_test::suite { @@ -292,5 +291,4 @@ public: BEAST_DEFINE_TESTSUITE(ResourceManager, resource, xrpl); -} // namespace Resource -} // namespace xrpl +} // namespace xrpl::Resource diff --git a/src/test/rpc/AMMInfo_test.cpp b/src/test/rpc/AMMInfo_test.cpp index 0a1d050520..876c9b66f1 100644 --- a/src/test/rpc/AMMInfo_test.cpp +++ b/src/test/rpc/AMMInfo_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AMMInfo_test : public jtx::AMMTestBase { @@ -377,5 +376,4 @@ public: BEAST_DEFINE_TESTSUITE(AMMInfo, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/AccountCurrencies_test.cpp b/src/test/rpc/AccountCurrencies_test.cpp index 41ce6a128c..c3b9135f07 100644 --- a/src/test/rpc/AccountCurrencies_test.cpp +++ b/src/test/rpc/AccountCurrencies_test.cpp @@ -127,7 +127,7 @@ class AccountCurrencies_test : public beast::unit_test::suite env.fund(XRP(10000), alice, gw); char currencySuffix{'A'}; std::vector> gwCurrencies(26); // A - Z - std::generate(gwCurrencies.begin(), gwCurrencies.end(), [&]() { + std::ranges::generate(gwCurrencies, [&]() { auto gwc = gw[std::string("US") + currencySuffix++]; env(trust(alice, gwc(100))); return gwc; diff --git a/src/test/rpc/AccountInfo_test.cpp b/src/test/rpc/AccountInfo_test.cpp index b586ff45b0..a8f849b6d2 100644 --- a/src/test/rpc/AccountInfo_test.cpp +++ b/src/test/rpc/AccountInfo_test.cpp @@ -20,8 +20,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AccountInfo_test : public beast::unit_test::suite { @@ -642,5 +641,4 @@ public: BEAST_DEFINE_TESTSUITE(AccountInfo, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/AccountLines_test.cpp b/src/test/rpc/AccountLines_test.cpp index 26d8158545..6f50c93bd8 100644 --- a/src/test/rpc/AccountLines_test.cpp +++ b/src/test/rpc/AccountLines_test.cpp @@ -34,8 +34,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { class AccountLines_test : public beast::unit_test::suite { @@ -1287,5 +1286,4 @@ public: BEAST_DEFINE_TESTSUITE(AccountLines, rpc, xrpl); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/test/rpc/AccountObjects_test.cpp b/src/test/rpc/AccountObjects_test.cpp index 92c571429a..6f3ae2e2b3 100644 --- a/src/test/rpc/AccountObjects_test.cpp +++ b/src/test/rpc/AccountObjects_test.cpp @@ -34,8 +34,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { static char const* bob_account_objects[] = { R"json({ @@ -942,7 +941,7 @@ public: jss::RippleState.c_str(), jss::PayChannel.c_str(), jss::PermissionedDomain.c_str()}; - std::sort(v.begin(), v.end()); + std::ranges::sort(v); return v; }(); @@ -958,7 +957,7 @@ public: { gotLedgerTypes.push_back(aobjs[i]["LedgerEntryType"].asString()); } - std::sort(gotLedgerTypes.begin(), gotLedgerTypes.end()); + std::ranges::sort(gotLedgerTypes); BEAST_EXPECT(gotLedgerTypes == expectedLedgerTypes); } } @@ -983,7 +982,7 @@ public: auto const objs = resp[jss::result][jss::account_objects]; for (auto const& obj : resp[jss::result][jss::account_objects]) typesOut.push_back(obj[sfLedgerEntryType.fieldName].asString()); - std::sort(typesOut.begin(), typesOut.end()); + std::ranges::sort(typesOut); }; // Make a lambda we can use to check the number of fetched // account objects and their ledger type @@ -1367,5 +1366,4 @@ public: BEAST_DEFINE_TESTSUITE(AccountObjects, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/AccountOffers_test.cpp b/src/test/rpc/AccountOffers_test.cpp index 211671fad8..8c93b15c4a 100644 --- a/src/test/rpc/AccountOffers_test.cpp +++ b/src/test/rpc/AccountOffers_test.cpp @@ -14,8 +14,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class AccountOffers_test : public beast::unit_test::suite { @@ -300,5 +299,4 @@ public: BEAST_DEFINE_TESTSUITE(AccountOffers, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/AccountTx_test.cpp b/src/test/rpc/AccountTx_test.cpp index 833b35e0ea..60ad83934a 100644 --- a/src/test/rpc/AccountTx_test.cpp +++ b/src/test/rpc/AccountTx_test.cpp @@ -48,9 +48,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class AccountTx_test : public beast::unit_test::suite { @@ -902,5 +900,4 @@ public: }; BEAST_DEFINE_TESTSUITE(AccountTx, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/BookChanges_test.cpp b/src/test/rpc/BookChanges_test.cpp index ecda672517..d6881217b5 100644 --- a/src/test/rpc/BookChanges_test.cpp +++ b/src/test/rpc/BookChanges_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class BookChanges_test : public beast::unit_test::suite { @@ -129,5 +128,4 @@ public: BEAST_DEFINE_TESTSUITE(BookChanges, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Book_test.cpp b/src/test/rpc/Book_test.cpp index 59b7fd01aa..90a621c693 100644 --- a/src/test/rpc/Book_test.cpp +++ b/src/test/rpc/Book_test.cpp @@ -33,8 +33,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Book_test : public beast::unit_test::suite { @@ -1848,5 +1847,4 @@ public: BEAST_DEFINE_TESTSUITE_PRIO(Book, rpc, xrpl, 1); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/DeliveredAmount_test.cpp b/src/test/rpc/DeliveredAmount_test.cpp index 4367e54fe9..133c5771b7 100644 --- a/src/test/rpc/DeliveredAmount_test.cpp +++ b/src/test/rpc/DeliveredAmount_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { // Helper class to track the expected number `delivered_amount` results. class CheckDeliveredAmount @@ -422,5 +421,4 @@ public: BEAST_DEFINE_TESTSUITE(DeliveredAmount, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/DepositAuthorized_test.cpp b/src/test/rpc/DepositAuthorized_test.cpp index 26e384dd27..900adb5c7e 100644 --- a/src/test/rpc/DepositAuthorized_test.cpp +++ b/src/test/rpc/DepositAuthorized_test.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class DepositAuthorized_test : public beast::unit_test::suite { @@ -546,5 +545,4 @@ public: BEAST_DEFINE_TESTSUITE(DepositAuthorized, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Feature_test.cpp b/src/test/rpc/Feature_test.cpp index 4eebc2d0e2..cdeff57131 100644 --- a/src/test/rpc/Feature_test.cpp +++ b/src/test/rpc/Feature_test.cpp @@ -521,10 +521,9 @@ class Feature_test : public beast::unit_test::suite Env env{*this}; auto const& supportedAmendments = xrpl::detail::supportedAmendments(); - auto obsoleteFeature = std::find_if( - std::begin(supportedAmendments), std::end(supportedAmendments), [](auto const& pair) { - return pair.second == VoteBehavior::Obsolete; - }); + auto obsoleteFeature = std::ranges::find_if(supportedAmendments, [](auto const& pair) { + return pair.second == VoteBehavior::Obsolete; + }); if (obsoleteFeature == std::end(supportedAmendments)) { diff --git a/src/test/rpc/GatewayBalances_test.cpp b/src/test/rpc/GatewayBalances_test.cpp index 20654c46ef..be51f60f02 100644 --- a/src/test/rpc/GatewayBalances_test.cpp +++ b/src/test/rpc/GatewayBalances_test.cpp @@ -15,8 +15,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class GatewayBalances_test : public beast::unit_test::suite { @@ -289,5 +288,4 @@ public: BEAST_DEFINE_TESTSUITE(GatewayBalances, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/GetAggregatePrice_test.cpp b/src/test/rpc/GetAggregatePrice_test.cpp index d3d4729137..f4473c0aa3 100644 --- a/src/test/rpc/GetAggregatePrice_test.cpp +++ b/src/test/rpc/GetAggregatePrice_test.cpp @@ -13,10 +13,7 @@ #include #include -namespace xrpl { -namespace test { -namespace jtx { -namespace oracle { +namespace xrpl::test::jtx::oracle { class GetAggregatePrice_test : public beast::unit_test::suite { @@ -325,7 +322,4 @@ public: BEAST_DEFINE_TESTSUITE(GetAggregatePrice, rpc, xrpl); -} // namespace oracle -} // namespace jtx -} // namespace test -} // namespace xrpl +} // namespace xrpl::test::jtx::oracle diff --git a/src/test/rpc/Handler_test.cpp b/src/test/rpc/Handler_test.cpp index 996010059f..bb9b72c63f 100644 --- a/src/test/rpc/Handler_test.cpp +++ b/src/test/rpc/Handler_test.cpp @@ -64,7 +64,7 @@ class Handler_test : public beast::unit_test::suite samples[k] = (std::chrono::steady_clock::now() - start).count(); } - std::sort(samples.begin(), samples.end()); + std::ranges::sort(samples); for (std::size_t k = 35; k < 65; ++k) { j += 1; diff --git a/src/test/rpc/JSONRPC_test.cpp b/src/test/rpc/JSONRPC_test.cpp index 83f6c04092..40c2389617 100644 --- a/src/test/rpc/JSONRPC_test.cpp +++ b/src/test/rpc/JSONRPC_test.cpp @@ -36,9 +36,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { struct TxnTestData { @@ -2849,5 +2847,4 @@ public: BEAST_DEFINE_TESTSUITE(JSONRPC, rpc, xrpl); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/test/rpc/KeyGeneration_test.cpp b/src/test/rpc/KeyGeneration_test.cpp index 806fe73e4b..a496664ef0 100644 --- a/src/test/rpc/KeyGeneration_test.cpp +++ b/src/test/rpc/KeyGeneration_test.cpp @@ -15,9 +15,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { struct key_strings { @@ -40,45 +38,48 @@ static char const* master_seed_hex = "BE6A670A19B209E112146D0A7ED2AAD7"; } // namespace common static key_strings const secp256k1_strings = { - "r4Vtj2jrfmTVZGfSP3gH9hQPMqFPQFin8f", - common::master_key, - common::master_seed, - common::master_seed_hex, - "aBQxK2YFNqzmAaXNczYcjqDjfiKkLsJUizsr1UBf44RCF8FHdrmX", - "038AAE247B2344B1837FBED8F57389C8C11774510A3F7D784F2A09F0CB6843236C", - "1949ECD889EA71324BC7A30C8E81F4E93CB73EE19D59E9082111E78CC3DDABC2", - common::passphrase, - "This wallet was generated using a user-supplied " - "passphrase that has low entropy and is vulnerable " - "to brute-force attacks.", + .account_id = "r4Vtj2jrfmTVZGfSP3gH9hQPMqFPQFin8f", + .master_key = common::master_key, + .master_seed = common::master_seed, + .master_seed_hex = common::master_seed_hex, + .public_key = "aBQxK2YFNqzmAaXNczYcjqDjfiKkLsJUizsr1UBf44RCF8FHdrmX", + .public_key_hex = "038AAE247B2344B1837FBED8F57389C8C11774510A3F7D784F2A09F0CB6843236C", + .secret_key_hex = "1949ECD889EA71324BC7A30C8E81F4E93CB73EE19D59E9082111E78CC3DDABC2", + .passphrase = common::passphrase, + .passphrase_warning = + "This wallet was generated using a user-supplied " + "passphrase that has low entropy and is vulnerable " + "to brute-force attacks.", }; static key_strings const ed25519_strings = { - "r4qV6xTXerqaZav3MJfSY79ynmc1BSBev1", - common::master_key, - common::master_seed, - common::master_seed_hex, - "aKEQmgLMyZPMruJFejUuedp169LgW6DbJt1rej1DJ5hWUMH4pHJ7", - "ED54C3F5BEDA8BD588B203D23A27398FAD9D20F88A974007D6994659CD7273FE1D", - "77AAED2698D56D6676323629160F4EEF21CFD9EE3D0745CC78FA291461F98278", - common::passphrase, - "This wallet was generated using a user-supplied " - "passphrase that has low entropy and is vulnerable " - "to brute-force attacks.", + .account_id = "r4qV6xTXerqaZav3MJfSY79ynmc1BSBev1", + .master_key = common::master_key, + .master_seed = common::master_seed, + .master_seed_hex = common::master_seed_hex, + .public_key = "aKEQmgLMyZPMruJFejUuedp169LgW6DbJt1rej1DJ5hWUMH4pHJ7", + .public_key_hex = "ED54C3F5BEDA8BD588B203D23A27398FAD9D20F88A974007D6994659CD7273FE1D", + .secret_key_hex = "77AAED2698D56D6676323629160F4EEF21CFD9EE3D0745CC78FA291461F98278", + .passphrase = common::passphrase, + .passphrase_warning = + "This wallet was generated using a user-supplied " + "passphrase that has low entropy and is vulnerable " + "to brute-force attacks.", }; static key_strings const strong_brain_strings = { - "rBcvXmNb7KPkNdMkpckdWPpbvkWgcV3nir", - "TED AVON CAVE HOUR BRAG JEFF RIFT NEAL TOLD FAT SEW SAN", - "shKdhWka8hS7Es3bpctCZXBiAwfUN", - "74BA8389B44F98CF41E795CD91F9C93F", - "aBRL2sqVuzrsM6zikPB4v8UBHGn1aKkrsxhYEffhcQxB2LKyywE5", - "03BD334FB9E06C58D69603E9922686528B18A754BC2F2E1ADA095FFE67DE952C64", - "84262FB16AA25BE407174C7EDAB531220C30FA4D8A28AA9D564673FB3D34502C", - "A4yKIRGdzrw0YQ$2%TFKYG9HP*&ok^!sy7E@RwICs", - "This wallet was generated using a user-supplied " - "passphrase. It may be vulnerable to brute-force " - "attacks.", + .account_id = "rBcvXmNb7KPkNdMkpckdWPpbvkWgcV3nir", + .master_key = "TED AVON CAVE HOUR BRAG JEFF RIFT NEAL TOLD FAT SEW SAN", + .master_seed = "shKdhWka8hS7Es3bpctCZXBiAwfUN", + .master_seed_hex = "74BA8389B44F98CF41E795CD91F9C93F", + .public_key = "aBRL2sqVuzrsM6zikPB4v8UBHGn1aKkrsxhYEffhcQxB2LKyywE5", + .public_key_hex = "03BD334FB9E06C58D69603E9922686528B18A754BC2F2E1ADA095FFE67DE952C64", + .secret_key_hex = "84262FB16AA25BE407174C7EDAB531220C30FA4D8A28AA9D564673FB3D34502C", + .passphrase = "A4yKIRGdzrw0YQ$2%TFKYG9HP*&ok^!sy7E@RwICs", + .passphrase_warning = + "This wallet was generated using a user-supplied " + "passphrase. It may be vulnerable to brute-force " + "attacks.", }; class WalletPropose_test : public xrpl::TestSuite @@ -799,5 +800,4 @@ public: BEAST_DEFINE_TESTSUITE(WalletPropose, rpc, xrpl); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/test/rpc/LedgerEntry_test.cpp b/src/test/rpc/LedgerEntry_test.cpp index 7f67c92e3b..d208d718f4 100644 --- a/src/test/rpc/LedgerEntry_test.cpp +++ b/src/test/rpc/LedgerEntry_test.cpp @@ -62,9 +62,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { enum class FieldType { AccountField, @@ -2928,12 +2926,12 @@ class LedgerEntry_XChain_test : public beast::unit_test::suite, a[i].isMember(jss::Destination) && a[i][jss::Destination] == scCarol.human()); BEAST_EXPECT( a[i].isMember(sfAttestationSignerAccount.jsonName) && - std::any_of(signers.begin(), signers.end(), [&](signer const& s) { + std::ranges::any_of(signers, [&](signer const& s) { return a[i][sfAttestationSignerAccount.jsonName] == s.account.human(); })); BEAST_EXPECT( a[i].isMember(sfAttestationRewardAccount.jsonName) && - std::any_of(payee.begin(), payee.end(), [&](Account const& account) { + std::ranges::any_of(payee, [&](Account const& account) { return a[i][sfAttestationRewardAccount.jsonName] == account.human(); })); BEAST_EXPECT( @@ -2977,5 +2975,4 @@ public: BEAST_DEFINE_TESTSUITE(LedgerEntry, rpc, xrpl); BEAST_DEFINE_TESTSUITE(LedgerEntry_XChain, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/LedgerRPC_test.cpp b/src/test/rpc/LedgerRPC_test.cpp index b9a10ece7f..c8c40ce0cc 100644 --- a/src/test/rpc/LedgerRPC_test.cpp +++ b/src/test/rpc/LedgerRPC_test.cpp @@ -25,9 +25,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class LedgerRPC_test : public beast::unit_test::suite { @@ -709,5 +707,4 @@ public: BEAST_DEFINE_TESTSUITE(LedgerRPC, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/LedgerRequest_test.cpp b/src/test/rpc/LedgerRequest_test.cpp index 8360c10619..496cd9478a 100644 --- a/src/test/rpc/LedgerRequest_test.cpp +++ b/src/test/rpc/LedgerRequest_test.cpp @@ -16,9 +16,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { class LedgerRequest_test : public beast::unit_test::suite { @@ -360,5 +358,4 @@ public: BEAST_DEFINE_TESTSUITE(LedgerRequest, rpc, xrpl); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/test/rpc/ManifestRPC_test.cpp b/src/test/rpc/ManifestRPC_test.cpp index f85a9b3a70..aa27c67ca9 100644 --- a/src/test/rpc/ManifestRPC_test.cpp +++ b/src/test/rpc/ManifestRPC_test.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ManifestRPC_test : public beast::unit_test::suite { @@ -73,5 +72,4 @@ public: }; BEAST_DEFINE_TESTSUITE(ManifestRPC, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/NoRipple_test.cpp b/src/test/rpc/NoRipple_test.cpp index 6004b28cc9..75d26ca208 100644 --- a/src/test/rpc/NoRipple_test.cpp +++ b/src/test/rpc/NoRipple_test.cpp @@ -21,9 +21,7 @@ #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class NoRipple_test : public beast::unit_test::suite { @@ -283,5 +281,4 @@ public: BEAST_DEFINE_TESTSUITE(NoRipple, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/RPCCall_test.cpp b/src/test/rpc/RPCCall_test.cpp index 524e14b5eb..3ece97344c 100644 --- a/src/test/rpc/RPCCall_test.cpp +++ b/src/test/rpc/RPCCall_test.cpp @@ -21,8 +21,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { struct RPCCallTestData { @@ -5934,5 +5933,4 @@ public: BEAST_DEFINE_TESTSUITE(RPCCall, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/RPCHelpers_test.cpp b/src/test/rpc/RPCHelpers_test.cpp index ed981e16e8..e87ac50bcf 100644 --- a/src/test/rpc/RPCHelpers_test.cpp +++ b/src/test/rpc/RPCHelpers_test.cpp @@ -7,8 +7,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class RPCHelpers_test : public beast::unit_test::suite { @@ -76,5 +75,4 @@ public: BEAST_DEFINE_TESTSUITE(RPCHelpers, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/RPCOverload_test.cpp b/src/test/rpc/RPCOverload_test.cpp index 85872dfeca..a49b52578a 100644 --- a/src/test/rpc/RPCOverload_test.cpp +++ b/src/test/rpc/RPCOverload_test.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class RPCOverload_test : public beast::unit_test::suite { @@ -83,5 +82,4 @@ public: BEAST_DEFINE_TESTSUITE(RPCOverload, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/RobustTransaction_test.cpp b/src/test/rpc/RobustTransaction_test.cpp index 8141bec410..96a8c5f869 100644 --- a/src/test/rpc/RobustTransaction_test.cpp +++ b/src/test/rpc/RobustTransaction_test.cpp @@ -14,8 +14,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { class RobustTransaction_test : public beast::unit_test::suite { @@ -442,5 +441,4 @@ public: BEAST_DEFINE_TESTSUITE(RobustTransaction, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Roles_test.cpp b/src/test/rpc/Roles_test.cpp index b503048bb4..eaf6143f5d 100644 --- a/src/test/rpc/Roles_test.cpp +++ b/src/test/rpc/Roles_test.cpp @@ -10,9 +10,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class Roles_test : public beast::unit_test::suite { @@ -349,6 +347,4 @@ public: BEAST_DEFINE_TESTSUITE(Roles, rpc, xrpl); -} // namespace test - -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/ServerDefinitions_test.cpp b/src/test/rpc/ServerDefinitions_test.cpp index 60c5c67d05..60312d470d 100644 --- a/src/test/rpc/ServerDefinitions_test.cpp +++ b/src/test/rpc/ServerDefinitions_test.cpp @@ -7,9 +7,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class ServerDefinitions_test : public beast::unit_test::suite { @@ -462,5 +460,4 @@ public: BEAST_DEFINE_TESTSUITE(ServerDefinitions, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/ServerInfo_test.cpp b/src/test/rpc/ServerInfo_test.cpp index 490248e45f..f94fe51d5d 100644 --- a/src/test/rpc/ServerInfo_test.cpp +++ b/src/test/rpc/ServerInfo_test.cpp @@ -13,9 +13,7 @@ #include -namespace xrpl { - -namespace test { +namespace xrpl::test { namespace validator_data { static auto const public_key = "nHBt9fsb4849WmZiCds4r5TXyBeQjqnH5kzPtqgMAQMgi39YZRPa"; @@ -162,5 +160,4 @@ admin = 127.0.0.1 BEAST_DEFINE_TESTSUITE(ServerInfo, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Simulate_test.cpp b/src/test/rpc/Simulate_test.cpp index d9cd61ed93..0ef66d67d9 100644 --- a/src/test/rpc/Simulate_test.cpp +++ b/src/test/rpc/Simulate_test.cpp @@ -40,9 +40,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class Simulate_test : public beast::unit_test::suite { @@ -1193,6 +1191,4 @@ public: BEAST_DEFINE_TESTSUITE(Simulate, rpc, xrpl); -} // namespace test - -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Status_test.cpp b/src/test/rpc/Status_test.cpp index 5d79911f95..d1a5684262 100644 --- a/src/test/rpc/Status_test.cpp +++ b/src/test/rpc/Status_test.cpp @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { class codeString_test : public beast::unit_test::suite { @@ -205,5 +204,4 @@ public: BEAST_DEFINE_TESTSUITE(fillJson, rpc, RPC); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/test/rpc/Subscribe_test.cpp b/src/test/rpc/Subscribe_test.cpp index bb3692b0cc..02c4fd8c8d 100644 --- a/src/test/rpc/Subscribe_test.cpp +++ b/src/test/rpc/Subscribe_test.cpp @@ -54,8 +54,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class Subscribe_test : public beast::unit_test::suite { @@ -1370,8 +1369,8 @@ public: return nftID; }); // Sort both array to prepare for comparison - std::sort(metaIDs.begin(), metaIDs.end()); - std::sort(actualNftIDs.begin(), actualNftIDs.end()); + std::ranges::sort(metaIDs); + std::ranges::sort(actualNftIDs); // Make sure the expect number of NFTs is correct BEAST_EXPECT(metaIDs.size() == actualNftIDs.size()); @@ -1532,5 +1531,4 @@ public: BEAST_DEFINE_TESTSUITE(Subscribe, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Transaction_test.cpp b/src/test/rpc/Transaction_test.cpp index 6ed37364a7..fdb0ed1c8f 100644 --- a/src/test/rpc/Transaction_test.cpp +++ b/src/test/rpc/Transaction_test.cpp @@ -660,7 +660,7 @@ class Transaction_test : public beast::unit_test::suite // Change the first upper case letter to lower case. std::string mixedCase = ctid; { - auto const iter = std::find_if(mixedCase.begin(), mixedCase.end(), isUpper); + auto const iter = std::ranges::find_if(mixedCase, isUpper); *iter = std::tolower(*iter); } BEAST_EXPECT(ctid != mixedCase); diff --git a/src/test/rpc/ValidatorInfo_test.cpp b/src/test/rpc/ValidatorInfo_test.cpp index 62182dc5db..71760b601b 100644 --- a/src/test/rpc/ValidatorInfo_test.cpp +++ b/src/test/rpc/ValidatorInfo_test.cpp @@ -13,8 +13,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ValidatorInfo_test : public beast::unit_test::suite { @@ -92,5 +91,4 @@ public: }; BEAST_DEFINE_TESTSUITE(ValidatorInfo, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/ValidatorRPC_test.cpp b/src/test/rpc/ValidatorRPC_test.cpp index 4926df2d05..2d8a73e31d 100644 --- a/src/test/rpc/ValidatorRPC_test.cpp +++ b/src/test/rpc/ValidatorRPC_test.cpp @@ -28,9 +28,7 @@ #include #include -namespace xrpl { - -namespace test { +namespace xrpl::test { class ValidatorRPC_test : public beast::unit_test::suite { @@ -547,5 +545,4 @@ public: BEAST_DEFINE_TESTSUITE(ValidatorRPC, rpc, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/rpc/Version_test.cpp b/src/test/rpc/Version_test.cpp index 3a582df617..39983ac09e 100644 --- a/src/test/rpc/Version_test.cpp +++ b/src/test/rpc/Version_test.cpp @@ -53,7 +53,8 @@ class Version_test : public beast::unit_test::suite { if (re["error_what"].isString()) { - return re["error_what"].asString().find(jss::invalid_API_version.c_str()) == 0; + return re["error_what"].asString().starts_with( + jss::invalid_API_version.c_str()); } } return false; diff --git a/src/test/server/ServerStatus_test.cpp b/src/test/server/ServerStatus_test.cpp index b3ecd85aca..09282c9d14 100644 --- a/src/test/server/ServerStatus_test.cpp +++ b/src/test/server/ServerStatus_test.cpp @@ -44,8 +44,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { class ServerStatus_test : public beast::unit_test::suite, public beast::test::enable_yield_to { @@ -595,8 +594,7 @@ class ServerStatus_test : public beast::unit_test::suite, public beast::test::en int const testTo = (limit == 0) ? 50 : limit + 1; while (connectionCount < testTo) { - clients.emplace_back( - std::make_pair(ip::tcp::socket{ios}, boost::beast::multi_buffer{})); + clients.emplace_back(ip::tcp::socket{ios}, boost::beast::multi_buffer{}); async_connect(clients.back().first, it, yield[ec]); BEAST_EXPECT(!ec); auto req = makeHTTPRequest(ip, port, to_string(jr), {}); @@ -1172,5 +1170,4 @@ public: BEAST_DEFINE_TESTSUITE(ServerStatus, server, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/server/Server_test.cpp b/src/test/server/Server_test.cpp index 681115e2f7..462df0d707 100644 --- a/src/test/server/Server_test.cpp +++ b/src/test/server/Server_test.cpp @@ -37,8 +37,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { using socket_type = boost::beast::tcp_stream; using stream_type = boost::beast::ssl_stream; @@ -516,5 +515,4 @@ public: BEAST_DEFINE_TESTSUITE(Server, server, xrpl); -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/shamap/FetchPack_test.cpp b/src/test/shamap/FetchPack_test.cpp index eaa7992679..fd44423ba8 100644 --- a/src/test/shamap/FetchPack_test.cpp +++ b/src/test/shamap/FetchPack_test.cpp @@ -28,8 +28,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { class FetchPack_test : public beast::unit_test::suite { @@ -166,5 +165,4 @@ public: BEAST_DEFINE_TESTSUITE(FetchPack, shamap, xrpl); -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/shamap/SHAMapSync_test.cpp b/src/test/shamap/SHAMapSync_test.cpp index b355905769..a1db1875d3 100644 --- a/src/test/shamap/SHAMapSync_test.cpp +++ b/src/test/shamap/SHAMapSync_test.cpp @@ -24,8 +24,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { class SHAMapSync_test : public beast::unit_test::suite { @@ -175,5 +174,4 @@ public: BEAST_DEFINE_TESTSUITE(SHAMapSync, shamap, xrpl); -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/shamap/SHAMap_test.cpp b/src/test/shamap/SHAMap_test.cpp index cbf67b6ff0..8bbc4ae084 100644 --- a/src/test/shamap/SHAMap_test.cpp +++ b/src/test/shamap/SHAMap_test.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { #ifndef __INTELLISENSE__ static_assert(std::is_nothrow_destructible{}, ""); @@ -425,5 +424,4 @@ class SHAMapPathProof_test : public beast::unit_test::suite BEAST_DEFINE_TESTSUITE(SHAMap, shamap, xrpl); BEAST_DEFINE_TESTSUITE(SHAMapPathProof, shamap, xrpl); -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/shamap/common.h b/src/test/shamap/common.h index 8284051d44..cd942076b8 100644 --- a/src/test/shamap/common.h +++ b/src/test/shamap/common.h @@ -5,8 +5,7 @@ #include #include -namespace xrpl { -namespace tests { +namespace xrpl::tests { class TestNodeFamily : public Family { @@ -103,5 +102,4 @@ public: } }; -} // namespace tests -} // namespace xrpl +} // namespace xrpl::tests diff --git a/src/test/unit_test/FileDirGuard.h b/src/test/unit_test/FileDirGuard.h index 6b39ecd079..9d4b94d8c5 100644 --- a/src/test/unit_test/FileDirGuard.h +++ b/src/test/unit_test/FileDirGuard.h @@ -8,8 +8,7 @@ #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { /** Create a directory and remove it when it's done @@ -161,5 +160,4 @@ public: } }; -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/test/unit_test/SuiteJournal.h b/src/test/unit_test/SuiteJournal.h index 36a580b7ed..c3820b8709 100644 --- a/src/test/unit_test/SuiteJournal.h +++ b/src/test/unit_test/SuiteJournal.h @@ -3,8 +3,7 @@ #include #include -namespace xrpl { -namespace test { +namespace xrpl::test { // A Journal::Sink intended for use with the beast unit test framework. class SuiteJournalSink : public beast::Journal::Sink @@ -127,5 +126,4 @@ public: } }; -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/test/unit_test/multi_runner.cpp b/src/test/unit_test/multi_runner.cpp index a4dc8de553..a09110ca43 100644 --- a/src/test/unit_test/multi_runner.cpp +++ b/src/test/unit_test/multi_runner.cpp @@ -64,6 +64,7 @@ results::add(suite_results const& r) auto const elapsed = clock_type::now() - r.start; if (elapsed >= std::chrono::seconds{1}) { + // NOLINTNEXTLINE(modernize-use-ranges) auto const iter = std::lower_bound( top.begin(), top.end(), @@ -104,13 +105,9 @@ results::merge(results const& r) // combine the two top collections boost::container::static_vector top_result; top_result.resize(top.size() + r.top.size()); - std::merge( - top.begin(), - top.end(), - r.top.begin(), - r.top.end(), - top_result.begin(), - [](run_time const& t1, run_time const& t2) { return t1.second > t2.second; }); + std::ranges::merge(top, r.top, top_result.begin(), [](run_time const& t1, run_time const& t2) { + return t1.second > t2.second; + }); if (top_result.size() > max_top) top_result.resize(max_top); diff --git a/src/test/unit_test/multi_runner.h b/src/test/unit_test/multi_runner.h index 2eda4e66a0..86d4699017 100644 --- a/src/test/unit_test/multi_runner.h +++ b/src/test/unit_test/multi_runner.h @@ -252,7 +252,7 @@ public: operator=(multi_runner_child const&) = delete; multi_runner_child(std::size_t num_jobs, bool quiet, bool print_log); - ~multi_runner_child(); + ~multi_runner_child() override; std::size_t tests() const; @@ -268,25 +268,25 @@ public: run_multi(Pred pred); private: - virtual void + void on_suite_begin(beast::unit_test::suite_info const& info) override; - virtual void + void on_suite_end() override; - virtual void + void on_case_begin(std::string const& name) override; - virtual void + void on_case_end() override; - virtual void + void on_pass() override; - virtual void + void on_fail(std::string const& reason) override; - virtual void + void on_log(std::string const& s) override; }; diff --git a/src/test/unit_test/utils.h b/src/test/unit_test/utils.h index 1f6ee58436..d386818e10 100644 --- a/src/test/unit_test/utils.h +++ b/src/test/unit_test/utils.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace test { +namespace xrpl::test { /// Compare two SecretKey objects for equality. /// SecretKey::operator== is deleted, so a named function is used @@ -15,5 +14,4 @@ equal(SecretKey const& lhs, SecretKey const& rhs) std::memcmp(lhs.data(), rhs.data(), SecretKey::size_) == 0; } -} // namespace test -} // namespace xrpl +} // namespace xrpl::test diff --git a/src/tests/libxrpl/basics/tagged_integer.cpp b/src/tests/libxrpl/basics/tagged_integer.cpp index fbff1aee6c..53e0ddc1d9 100644 --- a/src/tests/libxrpl/basics/tagged_integer.cpp +++ b/src/tests/libxrpl/basics/tagged_integer.cpp @@ -22,85 +22,85 @@ using TagUInt3 = tagged_integer; // Check construction of tagged_integers static_assert( - std::is_constructible::value, + std::is_constructible_v, "TagUInt1 should be constructible using a std::uint32_t"); static_assert( - !std::is_constructible::value, + !std::is_constructible_v, "TagUInt1 should not be constructible using a std::uint64_t"); static_assert( - std::is_constructible::value, + std::is_constructible_v, "TagUInt3 should be constructible using a std::uint32_t"); static_assert( - std::is_constructible::value, + std::is_constructible_v, "TagUInt3 should be constructible using a std::uint64_t"); // Check assignment of tagged_integers static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt1 should not be assignable with a std::uint32_t"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt1 should not be assignable with a std::uint64_t"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt3 should not be assignable with a std::uint32_t"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt3 should not be assignable with a std::uint64_t"); static_assert( - std::is_assignable::value, + std::is_assignable_v, "TagUInt1 should be assignable with a TagUInt1"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt1 should not be assignable with a TagUInt2"); static_assert( - std::is_assignable::value, + std::is_assignable_v, "TagUInt3 should be assignable with a TagUInt1"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt1 should not be assignable with a TagUInt3"); static_assert( - !std::is_assignable::value, + !std::is_assignable_v, "TagUInt3 should not be assignable with a TagUInt1"); // Check convertibility of tagged_integers static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "std::uint32_t should not be convertible to a TagUInt1"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "std::uint32_t should not be convertible to a TagUInt3"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "std::uint64_t should not be convertible to a TagUInt3"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "std::uint64_t should not be convertible to a TagUInt2"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "TagUInt1 should not be convertible to TagUInt2"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "TagUInt1 should not be convertible to TagUInt3"); static_assert( - !std::is_convertible::value, + !std::is_convertible_v, "TagUInt2 should not be convertible to a TagUInt3"); using TagInt = tagged_integer; diff --git a/src/tests/libxrpl/json/Value.cpp b/src/tests/libxrpl/json/Value.cpp index e15fdd5777..a53d81b5e1 100644 --- a/src/tests/libxrpl/json/Value.cpp +++ b/src/tests/libxrpl/json/Value.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -1104,7 +1105,7 @@ TEST(json_value, access_members) EXPECT_FALSE(val.isValidIndex(0)); EXPECT_FALSE(val.isMember("key")); - val = 3.14159; + val = std::numbers::pi; EXPECT_EQ(val.type(), Json::realValue); EXPECT_EQ(val.size(), 0); EXPECT_FALSE(val.isValidIndex(0)); diff --git a/src/xrpld/app/ledger/AcceptedLedger.cpp b/src/xrpld/app/ledger/AcceptedLedger.cpp index 11ef55ad0c..f866a5f3bc 100644 --- a/src/xrpld/app/ledger/AcceptedLedger.cpp +++ b/src/xrpld/app/ledger/AcceptedLedger.cpp @@ -23,7 +23,7 @@ AcceptedLedger::AcceptedLedger(std::shared_ptr const& ledger) : transactions_.reserve(256); insertAll(ledger->txs); - std::sort(transactions_.begin(), transactions_.end(), [](auto const& a, auto const& b) { + std::ranges::sort(transactions_, [](auto const& a, auto const& b) { return a->getTxnSeq() < b->getTxnSeq(); }); } diff --git a/src/xrpld/app/ledger/InboundLedger.h b/src/xrpld/app/ledger/InboundLedger.h index b17b59b27f..4176aa0b09 100644 --- a/src/xrpld/app/ledger/InboundLedger.h +++ b/src/xrpld/app/ledger/InboundLedger.h @@ -36,7 +36,7 @@ public: clock_type&, std::unique_ptr peerSet); - ~InboundLedger(); + ~InboundLedger() override; // Called when another attempt is made to fetch this same ledger void diff --git a/src/xrpld/app/ledger/LedgerCleaner.h b/src/xrpld/app/ledger/LedgerCleaner.h index aa8d042c24..a5ad4f981b 100644 --- a/src/xrpld/app/ledger/LedgerCleaner.h +++ b/src/xrpld/app/ledger/LedgerCleaner.h @@ -17,7 +17,7 @@ protected: } public: - virtual ~LedgerCleaner() = default; + ~LedgerCleaner() override = default; virtual void start() = 0; diff --git a/src/xrpld/app/ledger/LedgerHistory.cpp b/src/xrpld/app/ledger/LedgerHistory.cpp index fcc44ba970..8fd2e075c6 100644 --- a/src/xrpld/app/ledger/LedgerHistory.cpp +++ b/src/xrpld/app/ledger/LedgerHistory.cpp @@ -305,9 +305,8 @@ leaves(SHAMap const& sm) std::vector v; for (auto const& item : sm) v.push_back(&item); - std::sort(v.begin(), v.end(), [](SHAMapItem const* lhs, SHAMapItem const* rhs) { - return lhs->key() < rhs->key(); - }); + std::ranges::sort( + v, [](SHAMapItem const* lhs, SHAMapItem const* rhs) { return lhs->key() < rhs->key(); }); return v; } diff --git a/src/xrpld/app/ledger/LedgerMaster.h b/src/xrpld/app/ledger/LedgerMaster.h index 220c04cc91..1bd4530d6d 100644 --- a/src/xrpld/app/ledger/LedgerMaster.h +++ b/src/xrpld/app/ledger/LedgerMaster.h @@ -38,7 +38,7 @@ public: beast::insight::Collector::ptr const& collector, beast::Journal journal); - virtual ~LedgerMaster() = default; + ~LedgerMaster() override = default; LedgerIndex getCurrentLedgerIndex(); diff --git a/src/xrpld/app/ledger/LedgerReplayTask.h b/src/xrpld/app/ledger/LedgerReplayTask.h index a1fadc95ff..65c43edb2d 100644 --- a/src/xrpld/app/ledger/LedgerReplayTask.h +++ b/src/xrpld/app/ledger/LedgerReplayTask.h @@ -80,7 +80,7 @@ public: std::shared_ptr& skipListAcquirer, TaskParameter const& parameter); - ~LedgerReplayTask(); + ~LedgerReplayTask() override; /** Start the task */ void diff --git a/src/xrpld/app/ledger/detail/InboundLedger.cpp b/src/xrpld/app/ledger/detail/InboundLedger.cpp index f36748be5c..a65fae2ff3 100644 --- a/src/xrpld/app/ledger/detail/InboundLedger.cpp +++ b/src/xrpld/app/ledger/detail/InboundLedger.cpp @@ -96,7 +96,7 @@ InboundLedger::InboundLedger( app, hash, ledgerAcquireTimeout, - {jtLEDGER_DATA, "InboundLedger", 5}, + {.jobType = jtLEDGER_DATA, .jobName = "InboundLedger", .jobLimit = 5}, app.getJournal("InboundLedger")) , m_clock(clock) , mSeq(seq) @@ -554,7 +554,7 @@ InboundLedger::trigger(std::shared_ptr const& peer, TriggerReason reason) auto packet = std::make_shared(tmBH, protocol::mtGET_OBJECTS); auto const& peerIds = mPeerSet->getPeerIds(); - std::for_each(peerIds.begin(), peerIds.end(), [this, &packet](auto id) { + std::ranges::for_each(peerIds, [this, &packet](auto id) { if (auto p = app_.getOverlay().findPeerByShortID(id)) { mByHash = false; @@ -756,14 +756,13 @@ InboundLedger::filterNodes( { // Sort nodes so that the ones we haven't recently // requested come before the ones we have. - auto dup = std::stable_partition(nodes.begin(), nodes.end(), [this](auto const& item) { - return mRecentNodes.count(item.second) == 0; - }); + auto dup = std::ranges::stable_partition( + nodes, [this](auto const& item) { return mRecentNodes.count(item.second) == 0; }); // If everything is a duplicate we don't want to send // any query at all except on a timeout where we need // to query everyone: - if (dup == nodes.begin()) + if (dup.begin() == nodes.begin()) { JLOG(journal_.trace()) << "filterNodes: all duplicates"; @@ -777,7 +776,7 @@ InboundLedger::filterNodes( { JLOG(journal_.trace()) << "filterNodes: pruning duplicates"; - nodes.erase(dup, nodes.end()); + nodes.erase(dup.begin(), dup.end()); } std::size_t const limit = (reason == TriggerReason::reply) ? reqNodesReply : reqNodes; @@ -989,7 +988,7 @@ InboundLedger::getNeededHashes() if (!mHaveHeader) { - ret.push_back(std::make_pair(protocol::TMGetObjectByHash::otLEDGER, hash_)); + ret.emplace_back(protocol::TMGetObjectByHash::otLEDGER, hash_); return ret; } @@ -998,7 +997,7 @@ InboundLedger::getNeededHashes() AccountStateSF filter(mLedger->stateMap().family().db(), app_.getLedgerMaster()); for (auto const& h : neededStateHashes(4, &filter)) { - ret.push_back(std::make_pair(protocol::TMGetObjectByHash::otSTATE_NODE, h)); + ret.emplace_back(protocol::TMGetObjectByHash::otSTATE_NODE, h); } } @@ -1007,7 +1006,7 @@ InboundLedger::getNeededHashes() TransactionStateSF filter(mLedger->txMap().family().db(), app_.getLedgerMaster()); for (auto const& h : neededTxHashes(4, &filter)) { - ret.push_back(std::make_pair(protocol::TMGetObjectByHash::otTRANSACTION_NODE, h)); + ret.emplace_back(protocol::TMGetObjectByHash::otTRANSACTION_NODE, h); } } diff --git a/src/xrpld/app/ledger/detail/InboundLedgers.cpp b/src/xrpld/app/ledger/detail/InboundLedgers.cpp index a9a7386ece..2207308737 100644 --- a/src/xrpld/app/ledger/detail/InboundLedgers.cpp +++ b/src/xrpld/app/ledger/detail/InboundLedgers.cpp @@ -311,7 +311,7 @@ public: for (auto const& it : mLedgers) { XRPL_ASSERT(it.second, "xrpl::InboundLedgersImp::getInfo : non-null ledger"); - acqs.push_back(it); + acqs.emplace_back(it); } for (auto const& it : mRecentFailures) { diff --git a/src/xrpld/app/ledger/detail/InboundTransactions.cpp b/src/xrpld/app/ledger/detail/InboundTransactions.cpp index 92c46e2e79..56c9c633f4 100644 --- a/src/xrpld/app/ledger/detail/InboundTransactions.cpp +++ b/src/xrpld/app/ledger/detail/InboundTransactions.cpp @@ -163,7 +163,7 @@ public: return; } - data.emplace_back(std::make_pair(*id, makeSlice(node.nodedata()))); + data.emplace_back(*id, makeSlice(node.nodedata())); } if (!ta->takeNodes(data, peer).isUseful()) diff --git a/src/xrpld/app/ledger/detail/LedgerDeltaAcquire.cpp b/src/xrpld/app/ledger/detail/LedgerDeltaAcquire.cpp index 865e4f7e81..0ff9a0ed98 100644 --- a/src/xrpld/app/ledger/detail/LedgerDeltaAcquire.cpp +++ b/src/xrpld/app/ledger/detail/LedgerDeltaAcquire.cpp @@ -42,7 +42,9 @@ LedgerDeltaAcquire::LedgerDeltaAcquire( app, ledgerHash, LedgerReplayParameters::SUB_TASK_TIMEOUT, - {jtREPLAY_TASK, "LedReplDelta", LedgerReplayParameters::MAX_QUEUED_TASKS}, + {.jobType = jtREPLAY_TASK, + .jobName = "LedReplDelta", + .jobLimit = LedgerReplayParameters::MAX_QUEUED_TASKS}, app.getJournal("LedgerReplayDelta")) , inboundLedgers_(inboundLedgers) , ledgerSeq_(ledgerSeq) diff --git a/src/xrpld/app/ledger/detail/LedgerMaster.cpp b/src/xrpld/app/ledger/detail/LedgerMaster.cpp index 0ad9b3d6bf..880e8e9e38 100644 --- a/src/xrpld/app/ledger/detail/LedgerMaster.cpp +++ b/src/xrpld/app/ledger/detail/LedgerMaster.cpp @@ -272,7 +272,7 @@ LedgerMaster::setValidLedger(std::shared_ptr const& l) if (!times.empty() && times.size() >= app_.getValidators().quorum()) { // Calculate the sample median - std::sort(times.begin(), times.end()); + std::ranges::sort(times); auto const t0 = times[(times.size() - 1) / 2]; auto const t1 = times[times.size() / 2]; signTime = t0 + (t1 - t0) / 2; @@ -983,12 +983,12 @@ LedgerMaster::checkAccept(std::shared_ptr const& ledger) { auto fees2 = app_.getValidations().fees(ledger->header().parentHash, base); fees.reserve(fees.size() + fees2.size()); - std::copy(fees2.begin(), fees2.end(), std::back_inserter(fees)); + std::ranges::copy(fees2, std::back_inserter(fees)); } std::uint32_t fee = 0; if (!fees.empty()) { - std::sort(fees.begin(), fees.end()); + std::ranges::sort(fees); if (auto stream = m_journal.debug()) { std::stringstream s; diff --git a/src/xrpld/app/ledger/detail/LedgerReplayTask.cpp b/src/xrpld/app/ledger/detail/LedgerReplayTask.cpp index f992b91a16..1afe94bbc8 100644 --- a/src/xrpld/app/ledger/detail/LedgerReplayTask.cpp +++ b/src/xrpld/app/ledger/detail/LedgerReplayTask.cpp @@ -67,7 +67,7 @@ LedgerReplayTask::TaskParameter::canMergeInto(TaskParameter const& existingTask) if (existingTask.full_) { auto const& exList = existingTask.skipList_; - if (auto i = std::find(exList.begin(), exList.end(), finishHash_); i != exList.end()) + if (auto i = std::ranges::find(exList, finishHash_); i != exList.end()) { return existingTask.totalLedgers_ >= totalLedgers_ + (exList.end() - i) - 1; } @@ -87,7 +87,9 @@ LedgerReplayTask::LedgerReplayTask( app, parameter.finishHash_, LedgerReplayParameters::TASK_TIMEOUT, - {jtREPLAY_TASK, "LedReplTask", LedgerReplayParameters::MAX_QUEUED_TASKS}, + {.jobType = jtREPLAY_TASK, + .jobName = "LedReplTask", + .jobLimit = LedgerReplayParameters::MAX_QUEUED_TASKS}, app.getJournal("LedgerReplayTask")) , inboundLedgers_(inboundLedgers) , replayer_(replayer) diff --git a/src/xrpld/app/ledger/detail/LedgerReplayer.cpp b/src/xrpld/app/ledger/detail/LedgerReplayer.cpp index 3d0fc6b5c3..7779132b39 100644 --- a/src/xrpld/app/ledger/detail/LedgerReplayer.cpp +++ b/src/xrpld/app/ledger/detail/LedgerReplayer.cpp @@ -119,8 +119,7 @@ LedgerReplayer::createDeltas(std::shared_ptr task) JLOG(j_.trace()) << "Creating " << parameter.totalLedgers_ - 1 << " deltas"; if (parameter.totalLedgers_ > 1) { - auto skipListItem = - std::find(parameter.skipList_.begin(), parameter.skipList_.end(), parameter.startHash_); + auto skipListItem = std::ranges::find(parameter.skipList_, parameter.startHash_); auto const wasLast = skipListItem == parameter.skipList_.end(); if (not wasLast) ++skipListItem; @@ -219,9 +218,9 @@ LedgerReplayer::sweep() << skipLists_.size() << " skipLists, and " << deltas_.size() << " deltas."; tasks_.erase( - std::remove_if( - tasks_.begin(), - tasks_.end(), + std::ranges::remove_if( + tasks_, + [this](auto const& t) -> bool { if (t->finished()) { @@ -229,7 +228,8 @@ LedgerReplayer::sweep() return true; } return false; - }), + }) + .begin(), tasks_.end()); auto removeCannotLocked = [](auto& subTasks) { @@ -261,7 +261,7 @@ LedgerReplayer::stop() JLOG(j_.info()) << "Stopping..."; { std::lock_guard const lock(mtx_); - std::for_each(tasks_.begin(), tasks_.end(), [](auto& i) { i->cancel(); }); + std::ranges::for_each(tasks_, [](auto& i) { i->cancel(); }); tasks_.clear(); auto lockAndCancel = [](auto& i) { if (auto sptr = i.second.lock(); sptr) @@ -269,9 +269,9 @@ LedgerReplayer::stop() sptr->cancel(); } }; - std::for_each(skipLists_.begin(), skipLists_.end(), lockAndCancel); + std::ranges::for_each(skipLists_, lockAndCancel); skipLists_.clear(); - std::for_each(deltas_.begin(), deltas_.end(), lockAndCancel); + std::ranges::for_each(deltas_, lockAndCancel); deltas_.clear(); } diff --git a/src/xrpld/app/ledger/detail/SkipListAcquire.cpp b/src/xrpld/app/ledger/detail/SkipListAcquire.cpp index 559a075c57..c77c0f1b03 100644 --- a/src/xrpld/app/ledger/detail/SkipListAcquire.cpp +++ b/src/xrpld/app/ledger/detail/SkipListAcquire.cpp @@ -36,7 +36,9 @@ SkipListAcquire::SkipListAcquire( app, ledgerHash, LedgerReplayParameters::SUB_TASK_TIMEOUT, - {jtREPLAY_TASK, "SkipListAcq", LedgerReplayParameters::MAX_QUEUED_TASKS}, + {.jobType = jtREPLAY_TASK, + .jobName = "SkipListAcq", + .jobLimit = LedgerReplayParameters::MAX_QUEUED_TASKS}, app.getJournal("LedgerReplaySkipList")) , inboundLedgers_(inboundLedgers) , peerSet_(std::move(peerSet)) diff --git a/src/xrpld/app/ledger/detail/TransactionAcquire.cpp b/src/xrpld/app/ledger/detail/TransactionAcquire.cpp index 7cdee8aedd..b38c413344 100644 --- a/src/xrpld/app/ledger/detail/TransactionAcquire.cpp +++ b/src/xrpld/app/ledger/detail/TransactionAcquire.cpp @@ -44,7 +44,7 @@ TransactionAcquire::TransactionAcquire( app, hash, TX_ACQUIRE_TIMEOUT, - {jtTXN_DATA, "TxAcq", {}}, + {.jobType = jtTXN_DATA, .jobName = "TxAcq", .jobLimit = {}}, app.getJournal("TransactionAcquire")) , mPeerSet(std::move(peerSet)) { diff --git a/src/xrpld/app/ledger/detail/TransactionAcquire.h b/src/xrpld/app/ledger/detail/TransactionAcquire.h index 1fa6d0ec6f..d0887f8418 100644 --- a/src/xrpld/app/ledger/detail/TransactionAcquire.h +++ b/src/xrpld/app/ledger/detail/TransactionAcquire.h @@ -17,7 +17,7 @@ public: using pointer = std::shared_ptr; TransactionAcquire(Application& app, uint256 const& hash, std::unique_ptr peerSet); - ~TransactionAcquire() = default; + ~TransactionAcquire() override = default; SHAMapAddNode takeNodes( diff --git a/src/xrpld/app/main/Application.cpp b/src/xrpld/app/main/Application.cpp index ada0ec52ff..c83b45f247 100644 --- a/src/xrpld/app/main/Application.cpp +++ b/src/xrpld/app/main/Application.cpp @@ -153,7 +153,7 @@ private: beast::Journal journal, std::chrono::milliseconds interval, boost::asio::io_context& ios) - : m_event(ev), m_journal(journal), m_probe(interval, ios) + : m_event(std::move(ev)), m_journal(journal), m_probe(interval, ios) { } @@ -389,7 +389,9 @@ public: , nodeFamily_(*this, *m_collectorManager) - , m_orderBookDB(make_OrderBookDB(*this, {config_->PATH_SEARCH_MAX, config_->standalone()})) + , m_orderBookDB(make_OrderBookDB( + *this, + {.pathSearchMax = config_->PATH_SEARCH_MAX, .standalone = config_->standalone()})) , m_pathRequestManager( std::make_unique( @@ -608,7 +610,7 @@ public: return *m_networkOPs; } - virtual ServerHandler& + ServerHandler& getServerHandler() override { XRPL_ASSERT( @@ -1132,7 +1134,7 @@ public: return maxDisallowedLedger_; } - virtual std::optional const& + std::optional const& getTrapTxID() const override { return trapTxID_; @@ -1490,16 +1492,16 @@ ApplicationImp::setup(boost::program_options::variables_map const& cmdline) Resource::Charge loadType = Resource::feeReferenceRPC; Resource::Consumer c; RPC::JsonContext context{ - {getJournal("RPCHandler"), - *this, - loadType, - getOPs(), - getLedgerMaster(), - c, - Role::ADMIN, - {}, - {}, - RPC::apiMaximumSupportedVersion}, + {.j = getJournal("RPCHandler"), + .app = *this, + .loadType = loadType, + .netOps = getOPs(), + .ledgerMaster = getLedgerMaster(), + .consumer = c, + .role = Role::ADMIN, + .coro = {}, + .infoSub = {}, + .apiVersion = RPC::apiMaximumSupportedVersion}, jvCommand}; Json::Value jvResult; diff --git a/src/xrpld/app/main/CollectorManager.cpp b/src/xrpld/app/main/CollectorManager.cpp index 0b716558af..a722e1447d 100644 --- a/src/xrpld/app/main/CollectorManager.cpp +++ b/src/xrpld/app/main/CollectorManager.cpp @@ -41,7 +41,7 @@ public: m_groups = beast::insight::make_Groups(m_collector); } - ~CollectorManagerImp() = default; + ~CollectorManagerImp() override = default; beast::insight::Collector::ptr const& collector() override diff --git a/src/xrpld/app/main/GRPCServer.cpp b/src/xrpld/app/main/GRPCServer.cpp index e2592c8216..3c64606516 100644 --- a/src/xrpld/app/main/GRPCServer.cpp +++ b/src/xrpld/app/main/GRPCServer.cpp @@ -465,10 +465,8 @@ GRPCServerImpl::handleRpcs() std::vector> requests = setupListeners(); auto erase = [&requests](Processor* ptr) { - auto it = - std::find_if(requests.begin(), requests.end(), [ptr](std::shared_ptr& sPtr) { - return sPtr.get() == ptr; - }); + auto it = std::ranges::find_if( + requests, [ptr](std::shared_ptr& sPtr) { return sPtr.get() == ptr; }); BOOST_ASSERT(it != requests.end()); it->swap(requests.back()); requests.pop_back(); diff --git a/src/xrpld/app/main/GRPCServer.h b/src/xrpld/app/main/GRPCServer.h index 178062df55..215c1e037d 100644 --- a/src/xrpld/app/main/GRPCServer.h +++ b/src/xrpld/app/main/GRPCServer.h @@ -186,7 +186,7 @@ private: std::vector const& secureGatewayIPs_; public: - virtual ~CallData() = default; + ~CallData() override = default; // Take in the "service" instance (in this case representing an // asynchronous server) and the completion queue "cq" used for @@ -207,10 +207,10 @@ private: CallData& operator=(CallData const&) = delete; - virtual void + void process() override; - virtual bool + bool isFinished() override; std::shared_ptr diff --git a/src/xrpld/app/main/Main.cpp b/src/xrpld/app/main/Main.cpp index ecd0cfc913..076faff845 100644 --- a/src/xrpld/app/main/Main.cpp +++ b/src/xrpld/app/main/Main.cpp @@ -208,7 +208,7 @@ public: std::vector v; boost::split(v, patterns, boost::algorithm::is_any_of(",")); selectors_.reserve(v.size()); - std::for_each(v.begin(), v.end(), [this](std::string s) { + std::ranges::for_each(v, [this](std::string s) { boost::trim(s); if (selectors_.empty() || !s.empty()) selectors_.emplace_back(beast::unit_test::selector::automatch, s); diff --git a/src/xrpld/app/misc/DeliverMax.h b/src/xrpld/app/misc/DeliverMax.h index 7fec517d28..8610a6a529 100644 --- a/src/xrpld/app/misc/DeliverMax.h +++ b/src/xrpld/app/misc/DeliverMax.h @@ -6,9 +6,7 @@ namespace Json { class Value; } // namespace Json -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { /** Copy `Amount` field to `DeliverMax` field in transaction output JSON. @@ -24,5 +22,4 @@ insertDeliverMax(Json::Value& tx_json, TxType txnType, unsigned int apiVersion); /** @} */ -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/app/misc/NetworkOPs.cpp b/src/xrpld/app/misc/NetworkOPs.cpp index 3e2ee22914..cedc888825 100644 --- a/src/xrpld/app/misc/NetworkOPs.cpp +++ b/src/xrpld/app/misc/NetworkOPs.cpp @@ -171,7 +171,7 @@ class NetworkOPsImp final : public NetworkOPs TER result; TransactionStatus(std::shared_ptr t, bool a, bool l, FailHard f) - : transaction(t), admin(a), local(l), failType(f) + : transaction(std::move(t)), admin(a), local(l), failType(f) { XRPL_ASSERT( local || failType == FailHard::no, @@ -258,7 +258,11 @@ class NetworkOPsImp final : public NetworkOPs getCounterData() const { std::lock_guard const lock(mutex_); - return {counters_, mode_, start_, initialSyncUs_}; + return { + .counters = counters_, + .mode = mode_, + .start = start_, + .initialSyncUs = initialSyncUs_}; } }; @@ -1334,7 +1338,7 @@ NetworkOPsImp::doTransactionAsync( if (transaction->getApplying()) return; - mTransactions.push_back(TransactionStatus(transaction, bUnlimited, false, failType)); + mTransactions.emplace_back(transaction, bUnlimited, false, failType); transaction->setApplying(); if (mDispatchState == DispatchState::none) @@ -1356,7 +1360,7 @@ NetworkOPsImp::doTransactionSync( if (!transaction->getApplying()) { - mTransactions.push_back(TransactionStatus(transaction, bUnlimited, true, failType)); + mTransactions.emplace_back(transaction, bUnlimited, true, failType); transaction->setApplying(); } @@ -1453,9 +1457,8 @@ NetworkOPsImp::processTransactionSet(CanonicalTXSet const& set) doTransactionSyncBatch(lock, [&](std::unique_lock const&) { XRPL_ASSERT(lock.owns_lock(), "xrpl::NetworkOPsImp::processTransactionSet has lock"); - return std::any_of(mTransactions.begin(), mTransactions.end(), [](auto const& t) { - return t.transaction->getApplying(); - }); + return std::ranges::any_of( + mTransactions, [](auto const& t) { return t.transaction->getApplying(); }); }); } @@ -2940,7 +2943,7 @@ NetworkOPsImp::getServerInfo(bool human, bool admin, bool counters) // This array must be sorted in increasing order. static constexpr std::array protocols{ "http", "https", "peer", "ws", "ws2", "wss", "wss2"}; - static_assert(std::is_sorted(std::begin(protocols), std::end(protocols))); + static_assert(std::ranges::is_sorted(protocols)); { Json::Value ports{Json::arrayValue}; for (auto const& port : registry_.get().getServerHandler().setup().ports) @@ -2951,6 +2954,7 @@ NetworkOPsImp::getServerInfo(bool human, bool admin, bool counters) port.admin_user.empty() && port.admin_password.empty())) continue; std::vector proto; + // NOLINTNEXTLINE(modernize-use-ranges) std::set_intersection( std::begin(port.protocol), std::end(port.protocol), @@ -3429,7 +3433,7 @@ NetworkOPsImp::pubAccountTransaction( if (auto isSptr = info.sinkWptr_.lock(); isSptr) { accountHistoryNotify.emplace_back( - SubAccountHistoryInfo{isSptr, info.index_}); + SubAccountHistoryInfo{.sink_ = isSptr, .index_ = info.index_}); ++it; } else @@ -3758,7 +3762,11 @@ NetworkOPsImp::addAccountHistoryJob(SubAccountHistoryInfoWeak subInfo) case Sqlite: { auto& db = registry_.get().getRelationalDatabase(); RelationalDatabase::AccountTxPageOptions const options{ - accountId, {minLedger, maxLedger}, marker, 0, true}; + .account = accountId, + .ledgerRange = {.min = minLedger, .max = maxLedger}, + .marker = marker, + .limit = 0, + .bAdmin = true}; return db.newestAccountTxPage(options); } // LCOV_EXCL_START @@ -3982,7 +3990,8 @@ NetworkOPsImp::subAccountHistory(InfoSub::ref isrListener, AccountID const& acco } std::lock_guard const sl(mSubLock); - SubAccountHistoryInfoWeak ahi{isrListener, std::make_shared(accountId)}; + SubAccountHistoryInfoWeak ahi{ + .sinkWptr_ = isrListener, .index_ = std::make_shared(accountId)}; auto simIterator = mSubAccountHistory.find(accountId); if (simIterator == mSubAccountHistory.end()) { diff --git a/src/xrpld/app/misc/TxQ.h b/src/xrpld/app/misc/TxQ.h index 49a29802bb..fa7e573071 100644 --- a/src/xrpld/app/misc/TxQ.h +++ b/src/xrpld/app/misc/TxQ.h @@ -425,7 +425,7 @@ private: Snapshot getSnapshot() const { - return {txnsExpected_, escalationMultiplier_}; + return {.txnsExpected = txnsExpected_, .escalationMultiplier = escalationMultiplier_}; } /** Use the number of transactions in the current open ledger diff --git a/src/xrpld/app/misc/detail/AmendmentTable.cpp b/src/xrpld/app/misc/detail/AmendmentTable.cpp index c629853bd0..0698230eb2 100644 --- a/src/xrpld/app/misc/detail/AmendmentTable.cpp +++ b/src/xrpld/app/misc/detail/AmendmentTable.cpp @@ -75,7 +75,7 @@ parseSection(Section const& section) "Invalid amendment ID '" + match[1] + "' in [" + section.name() + "]"); } - names.push_back(std::make_pair(id, match[2])); + names.emplace_back(id, match[2]); } return names; @@ -221,9 +221,8 @@ public: } // Now remove any expired records from recordedVotes_. - std::for_each( - recordedVotes_.begin(), - recordedVotes_.end(), + std::ranges::for_each( + recordedVotes_, [&closeTime, newTimeout, &j](decltype(recordedVotes_)::value_type& votes) { auto const pkHuman = toBase58(TokenType::NodePublic, votes.first); if (!votes.second.timeout) @@ -784,7 +783,7 @@ AmendmentTableImpl::doValidation(std::set const& enabled) const } if (!amendments.empty()) - std::sort(amendments.begin(), amendments.end()); + std::ranges::sort(amendments); return amendments; } diff --git a/src/xrpld/app/misc/detail/DeliverMax.cpp b/src/xrpld/app/misc/detail/DeliverMax.cpp index d6f1067e80..4e3d6563f9 100644 --- a/src/xrpld/app/misc/detail/DeliverMax.cpp +++ b/src/xrpld/app/misc/detail/DeliverMax.cpp @@ -3,8 +3,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { void insertDeliverMax(Json::Value& tx_json, TxType txnType, unsigned int apiVersion) @@ -20,5 +19,4 @@ insertDeliverMax(Json::Value& tx_json, TxType txnType, unsigned int apiVersion) } } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/app/misc/detail/TxQ.cpp b/src/xrpld/app/misc/detail/TxQ.cpp index ca3f0b5da1..eb3b7a54be 100644 --- a/src/xrpld/app/misc/detail/TxQ.cpp +++ b/src/xrpld/app/misc/detail/TxQ.cpp @@ -113,7 +113,7 @@ TxQ::FeeMetrics::update( std::for_each(txBegin, txEnd, [&](auto const& tx) { feeLevels.push_back(getFeeLevelPaid(view, *tx.first)); }); - std::sort(feeLevels.begin(), feeLevels.end()); + std::ranges::sort(feeLevels); XRPL_ASSERT(size == feeLevels.size(), "xrpl::TxQ::FeeMetrics::update : fee levels size"); JLOG((timeLeap ? j_.warn() : j_.debug())) @@ -139,7 +139,7 @@ TxQ::FeeMetrics::update( { recentTxnCounts_.push_back(mulDiv(size, 100 + setup.normalConsensusIncreasePercent, 100) .value_or(xrpl::muldiv_max)); - auto const iter = std::max_element(recentTxnCounts_.begin(), recentTxnCounts_.end()); + auto const iter = std::ranges::max_element(recentTxnCounts_); BOOST_ASSERT(iter != recentTxnCounts_.end()); auto const next = [&] { // Grow quickly: If the max_element is >= the @@ -1762,10 +1762,10 @@ TxQ::getTxRequiredFeeAndSeq(OpenView const& view, std::shared_ptr co std::uint32_t const accountSeq = sle ? (*sle)[sfSequence] : 0; std::uint32_t const availableSeq = nextQueuableSeqImpl(sle, lock).value(); return { - mulDiv(fee, baseFee, baseLevel) - .value_or(XRPAmount(std::numeric_limits::max())), - accountSeq, - availableSeq}; + .fee = mulDiv(fee, baseFee, baseLevel) + .value_or(XRPAmount(std::numeric_limits::max())), + .accountSeq = accountSeq, + .availableSeq = availableSeq}; } std::vector diff --git a/src/xrpld/app/misc/detail/ValidatorList.cpp b/src/xrpld/app/misc/detail/ValidatorList.cpp index ddadd74da0..c8b249cd74 100644 --- a/src/xrpld/app/misc/detail/ValidatorList.cpp +++ b/src/xrpld/app/misc/detail/ValidatorList.cpp @@ -822,10 +822,14 @@ ValidatorList::buildBlobInfos( { auto const& current = lists.current; auto const& remaining = lists.remaining; - blobInfos[current.sequence] = {current.rawBlob, current.rawSignature, current.rawManifest}; + blobInfos[current.sequence] = { + .blob = current.rawBlob, + .signature = current.rawSignature, + .manifest = current.rawManifest}; for (auto const& [sequence, vl] : remaining) { - blobInfos[sequence] = {vl.rawBlob, vl.rawSignature, vl.rawManifest}; + blobInfos[sequence] = { + .blob = vl.rawBlob, .signature = vl.rawSignature, .manifest = vl.rawManifest}; } } @@ -1235,7 +1239,7 @@ ValidatorList::applyList( } else { - publisherList.push_back(PublicKey(Slice{ret->data(), ret->size()})); + publisherList.emplace_back(Slice{ret->data(), ret->size()}); } if (val.isMember(jss::manifest) && val[jss::manifest].isString()) @@ -1244,7 +1248,7 @@ ValidatorList::applyList( } // Standardize the list order by sorting - std::sort(publisherList.begin(), publisherList.end()); + std::sort(publisherList.begin(), publisherList.end()); // NOLINT(modernize-use-ranges) } // If this publisher has ever sent a more updated version than the one // in this file, keep it. This scenario is unlikely, but legal. @@ -2094,9 +2098,8 @@ ValidatorList::negativeUNLFilter(std::vector>&& va if (!negativeUNL_.empty()) { ret.erase( - std::remove_if( - ret.begin(), - ret.end(), + std::ranges::remove_if( + ret, [&](auto const& v) -> bool { if (auto const masterKey = getTrustedKey(read_lock, v->getSignerPublic()); masterKey) @@ -2105,7 +2108,8 @@ ValidatorList::negativeUNLFilter(std::vector>&& va } return false; - }), + }) + .begin(), ret.end()); } diff --git a/src/xrpld/app/misc/detail/ValidatorSite.cpp b/src/xrpld/app/misc/detail/ValidatorSite.cpp index 5eda2d8eb5..ca96e0fa37 100644 --- a/src/xrpld/app/misc/detail/ValidatorSite.cpp +++ b/src/xrpld/app/misc/detail/ValidatorSite.cpp @@ -222,9 +222,8 @@ ValidatorSite::setTimer( std::lock_guard const& site_lock, std::lock_guard const& state_lock) { - auto next = std::min_element(sites_.begin(), sites_.end(), [](Site const& a, Site const& b) { - return a.nextRefresh < b.nextRefresh; - }); + auto next = std::ranges::min_element( + sites_, [](Site const& a, Site const& b) { return a.nextRefresh < b.nextRefresh; }); if (next != sites_.end()) { @@ -437,7 +436,10 @@ ValidatorSite::parseJsonResponse( app_.getOPs()); sites_[siteIdx].lastRefreshStatus.emplace( - Site::Status{clock_type::now(), applyResult.bestDisposition(), ""}); + Site::Status{ + .refreshed = clock_type::now(), + .disposition = applyResult.bestDisposition(), + .message = ""}); for (auto const& [disp, count] : applyResult.dispositions) { @@ -549,7 +551,10 @@ ValidatorSite::onSiteFetch( << endpoint; auto onError = [&](std::string const& errMsg, bool retry) { sites_[siteIdx].lastRefreshStatus.emplace( - Site::Status{clock_type::now(), ListDisposition::invalid, errMsg}); + Site::Status{ + .refreshed = clock_type::now(), + .disposition = ListDisposition::invalid, + .message = errMsg}); if (retry) sites_[siteIdx].nextRefresh = clock_type::now() + error_retry_interval; @@ -642,7 +647,10 @@ ValidatorSite::onTextFetch( { JLOG(j_.error()) << "Exception in " << __func__ << ": " << ex.what(); sites_[siteIdx].lastRefreshStatus.emplace( - Site::Status{clock_type::now(), ListDisposition::invalid, ex.what()}); + Site::Status{ + .refreshed = clock_type::now(), + .disposition = ListDisposition::invalid, + .message = ex.what()}); } sites_[siteIdx].activeResource.reset(); } diff --git a/src/xrpld/app/misc/detail/Work.h b/src/xrpld/app/misc/detail/Work.h index 5261cf3bd7..27f4e7f6eb 100644 --- a/src/xrpld/app/misc/detail/Work.h +++ b/src/xrpld/app/misc/detail/Work.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { - -namespace detail { +namespace xrpl::detail { using response_type = boost::beast::http::response; @@ -21,6 +19,4 @@ public: cancel() = 0; }; -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/misc/detail/WorkBase.h b/src/xrpld/app/misc/detail/WorkBase.h index 20a4987bc4..56b227613f 100644 --- a/src/xrpld/app/misc/detail/WorkBase.h +++ b/src/xrpld/app/misc/detail/WorkBase.h @@ -12,9 +12,9 @@ #include #include -namespace xrpl { +#include -namespace detail { +namespace xrpl::detail { template class WorkBase : public Work @@ -49,16 +49,16 @@ protected: private: WorkBase( - std::string const& host, - std::string const& path, - std::string const& port, + std::string host, + std::string path, + std::string port, boost::asio::io_context& ios, - endpoint_type const& lastEndpoint, + endpoint_type lastEndpoint, bool lastStatus, callback_type cb); public: - ~WorkBase(); + ~WorkBase() override; Impl& impl() @@ -101,22 +101,22 @@ private: template WorkBase::WorkBase( - std::string const& host, - std::string const& path, - std::string const& port, + std::string host, + std::string path, + std::string port, boost::asio::io_context& ios, - endpoint_type const& lastEndpoint, + endpoint_type lastEndpoint, bool lastStatus, callback_type cb) - : host_(host) - , path_(path) - , port_(port) + : host_(std::move(host)) + , path_(std::move(path)) + , port_(std::move(port)) , cb_(std::move(cb)) , ios_(ios) , strand_(boost::asio::make_strand(ios)) , resolver_(ios) , socket_(ios) - , lastEndpoint_{lastEndpoint} + , lastEndpoint_{std::move(lastEndpoint)} , lastStatus_(lastStatus) { } @@ -274,6 +274,4 @@ WorkBase::close() } } -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/misc/detail/WorkFile.h b/src/xrpld/app/misc/detail/WorkFile.h index 06cca0f835..067dc4c38b 100644 --- a/src/xrpld/app/misc/detail/WorkFile.h +++ b/src/xrpld/app/misc/detail/WorkFile.h @@ -10,9 +10,9 @@ #include #include -namespace xrpl { +#include -namespace detail { +namespace xrpl::detail { // Work with files class WorkFile : public Work, public std::enable_shared_from_this @@ -26,8 +26,8 @@ public: using callback_type = std::function; public: - WorkFile(std::string const& path, boost::asio::io_context& ios, callback_type cb); - ~WorkFile(); + WorkFile(std::string path, boost::asio::io_context& ios, callback_type cb); + ~WorkFile() override; void run() override; @@ -44,8 +44,8 @@ private: //------------------------------------------------------------------------------ -inline WorkFile::WorkFile(std::string const& path, boost::asio::io_context& ios, callback_type cb) - : path_(path), cb_(std::move(cb)), ios_(ios), strand_(boost::asio::make_strand(ios)) +inline WorkFile::WorkFile(std::string path, boost::asio::io_context& ios, callback_type cb) + : path_(std::move(path)), cb_(std::move(cb)), ios_(ios), strand_(boost::asio::make_strand(ios)) { } @@ -80,6 +80,4 @@ WorkFile::cancel() // Nothing to do. Either it finished in run, or it didn't start. } -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/misc/detail/WorkPlain.h b/src/xrpld/app/misc/detail/WorkPlain.h index fbbc323193..d3c0309e77 100644 --- a/src/xrpld/app/misc/detail/WorkPlain.h +++ b/src/xrpld/app/misc/detail/WorkPlain.h @@ -2,9 +2,7 @@ #include -namespace xrpl { - -namespace detail { +namespace xrpl::detail { // Work over TCP/IP class WorkPlain : public WorkBase, public std::enable_shared_from_this @@ -20,7 +18,7 @@ public: endpoint_type const& lastEndpoint, bool lastStatus, callback_type cb); - ~WorkPlain() = default; + ~WorkPlain() override = default; private: void @@ -59,6 +57,4 @@ WorkPlain::onConnect(error_code const& ec) onStart(); } -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/misc/detail/WorkSSL.cpp b/src/xrpld/app/misc/detail/WorkSSL.cpp index f5138eac8c..0a8d53b1a2 100644 --- a/src/xrpld/app/misc/detail/WorkSSL.cpp +++ b/src/xrpld/app/misc/detail/WorkSSL.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { WorkSSL::WorkSSL( std::string const& host, @@ -71,6 +70,4 @@ WorkSSL::onHandshake(error_code const& ec) onStart(); } -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/misc/detail/WorkSSL.h b/src/xrpld/app/misc/detail/WorkSSL.h index b12c774f6e..74676bb7c1 100644 --- a/src/xrpld/app/misc/detail/WorkSSL.h +++ b/src/xrpld/app/misc/detail/WorkSSL.h @@ -11,9 +11,7 @@ #include -namespace xrpl { - -namespace detail { +namespace xrpl::detail { // Work over SSL class WorkSSL : public WorkBase, public std::enable_shared_from_this @@ -37,7 +35,7 @@ public: endpoint_type const& lastEndpoint, bool lastStatus, callback_type cb); - ~WorkSSL() = default; + ~WorkSSL() override = default; private: stream_type& @@ -53,6 +51,4 @@ private: onHandshake(error_code const& ec); }; -} // namespace detail - -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/rdb/backend/detail/Node.cpp b/src/xrpld/app/rdb/backend/detail/Node.cpp index 99a812497d..f1b5f4edc3 100644 --- a/src/xrpld/app/rdb/backend/detail/Node.cpp +++ b/src/xrpld/app/rdb/backend/detail/Node.cpp @@ -65,8 +65,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { /** * @brief to_string Returns the name of a table according to its TableType. @@ -138,15 +137,16 @@ makeLedgerDBs( { if (pk == 1) { - return {std::move(lgr), std::move(tx), false}; + return { + .ledgerDb = std::move(lgr), .transactionDb = std::move(tx), .valid = false}; } } } - return {std::move(lgr), std::move(tx), true}; + return {.ledgerDb = std::move(lgr), .transactionDb = std::move(tx), .valid = true}; } - return {std::move(lgr), {}, true}; + return {.ledgerDb = std::move(lgr), .transactionDb = {}, .valid = true}; } std::optional @@ -1139,7 +1139,8 @@ accountTxPage( else if (numberOfResults == 0) { newmarker = { - rangeCheckedCast(ledgerSeq.value_or(0)), txnSeq.value_or(0)}; + .ledgerSeq = rangeCheckedCast(ledgerSeq.value_or(0)), + .txnSeq = txnSeq.value_or(0)}; break; } @@ -1346,5 +1347,4 @@ dbHasSpace(soci::session& session, Config const& config, beast::Journal j) return true; } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/rdb/backend/detail/Node.h b/src/xrpld/app/rdb/backend/detail/Node.h index 5fbabeca47..7ea2992447 100644 --- a/src/xrpld/app/rdb/backend/detail/Node.h +++ b/src/xrpld/app/rdb/backend/detail/Node.h @@ -5,8 +5,7 @@ #include #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { /* Need to change TableTypeCount if TableType is modified. */ enum class TableType { Ledgers, Transactions, AccountTransactions }; @@ -402,5 +401,4 @@ getTransaction( bool dbHasSpace(soci::session& session, Config const& config, beast::Journal j); -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail diff --git a/src/xrpld/app/rdb/backend/detail/SQLiteDatabase.cpp b/src/xrpld/app/rdb/backend/detail/SQLiteDatabase.cpp index 0ae39f41c1..59f77142f8 100644 --- a/src/xrpld/app/rdb/backend/detail/SQLiteDatabase.cpp +++ b/src/xrpld/app/rdb/backend/detail/SQLiteDatabase.cpp @@ -194,7 +194,7 @@ SQLiteDatabase::getLedgerCountMinMax() return detail::getRowsMinMax(*db, detail::TableType::Ledgers); } - return {0, 0, 0}; + return {.numberOfRows = 0, .minLedgerSequence = 0, .maxLedgerSequence = 0}; } bool @@ -636,7 +636,10 @@ SQLiteDatabase::SQLiteDatabase(ServiceRegistry& registry, Config const& config, , j_(registry.getJournal("SQLiteDatabase")) { DatabaseCon::Setup const setup = setup_DatabaseCon(config, j_); - if (!makeLedgerDBs(config, setup, DatabaseCon::CheckpointerSetup{&jobQueue, registry_})) + if (!makeLedgerDBs( + config, + setup, + DatabaseCon::CheckpointerSetup{.jobQueue = &jobQueue, .registry = registry_})) { std::string_view constexpr error = "Failed to create ledger databases"; diff --git a/src/xrpld/consensus/ConsensusParms.h b/src/xrpld/consensus/ConsensusParms.h index 97fbb2c4a0..c8b79c4de9 100644 --- a/src/xrpld/consensus/ConsensusParms.h +++ b/src/xrpld/consensus/ConsensusParms.h @@ -121,14 +121,14 @@ struct ConsensusParms std::map const avalancheCutoffs{ // {state, {time, percent, nextState}}, // Initial state: 50% of nodes must vote yes - {init, {0, 50, mid}}, + {init, {.consensusTime = 0, .consensusPct = 50, .next = mid}}, // mid-consensus starts after 50% of the previous round time, and // requires 65% yes - {mid, {50, 65, late}}, + {mid, {.consensusTime = 50, .consensusPct = 65, .next = late}}, // late consensus starts after 85% time, and requires 70% yes - {late, {85, 70, stuck}}, + {late, {.consensusTime = 85, .consensusPct = 70, .next = stuck}}, // we're stuck after 2x time, requires 95% yes votes - {stuck, {200, 95, stuck}}, + {stuck, {.consensusTime = 200, .consensusPct = 95, .next = stuck}}, }; //! Percentage of nodes required to reach agreement on ledger close time diff --git a/src/xrpld/consensus/DisputedTx.h b/src/xrpld/consensus/DisputedTx.h index 2cfbedf7f1..2172fd5d47 100644 --- a/src/xrpld/consensus/DisputedTx.h +++ b/src/xrpld/consensus/DisputedTx.h @@ -8,6 +8,8 @@ #include +#include + namespace xrpl { /** A transaction discovered to be in dispute during consensus. @@ -38,8 +40,8 @@ public: @param numPeers Anticipated number of peer votes @param j Journal for debugging */ - DisputedTx(Tx_t const& tx, bool ourVote, std::size_t numPeers, beast::Journal j) - : ourVote_(ourVote), tx_(tx), j_(j) + DisputedTx(Tx_t tx, bool ourVote, std::size_t numPeers, beast::Journal j) + : ourVote_(ourVote), tx_(std::move(tx)), j_(j) { votes_.reserve(numPeers); } diff --git a/src/xrpld/consensus/LedgerTrie.h b/src/xrpld/consensus/LedgerTrie.h index f042853712..38ad0afbf9 100644 --- a/src/xrpld/consensus/LedgerTrie.h +++ b/src/xrpld/consensus/LedgerTrie.h @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace xrpl { @@ -133,7 +134,7 @@ public: } private: - Span(Seq start, Seq end, Ledger const& l) : start_{start}, end_{end}, ledger_{l} + Span(Seq start, Seq end, Ledger l) : start_{start}, end_{end}, ledger_{std::move(l)} { // Spans cannot be empty XRPL_ASSERT(start < end, "xrpl::Span::Span : non-empty span input"); diff --git a/src/xrpld/core/TimeKeeper.h b/src/xrpld/core/TimeKeeper.h index 83c0d81d60..8f2bbbcd53 100644 --- a/src/xrpld/core/TimeKeeper.h +++ b/src/xrpld/core/TimeKeeper.h @@ -22,7 +22,7 @@ private: } public: - virtual ~TimeKeeper() = default; + ~TimeKeeper() override = default; /** Returns the current time, using the server's clock. diff --git a/src/xrpld/core/detail/Config.cpp b/src/xrpld/core/detail/Config.cpp index 23a0e8bee7..b7063287bb 100644 --- a/src/xrpld/core/detail/Config.cpp +++ b/src/xrpld/core/detail/Config.cpp @@ -54,8 +54,7 @@ #if BOOST_OS_WINDOWS #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { [[nodiscard]] std::uint64_t getMemorySize() @@ -66,15 +65,14 @@ getMemorySize() return 0; } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail + #endif #if BOOST_OS_LINUX #include // IWYU pragma: keep -namespace xrpl { -namespace detail { +namespace xrpl::detail { [[nodiscard]] std::uint64_t getMemorySize() @@ -85,16 +83,14 @@ getMemorySize() return 0; } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail #endif #if BOOST_OS_MACOS #include -namespace xrpl { -namespace detail { +namespace xrpl::detail { [[nodiscard]] std::uint64_t getMemorySize() @@ -109,8 +105,8 @@ getMemorySize() return 0; } -} // namespace detail -} // namespace xrpl +} // namespace xrpl::detail + #endif namespace xrpl { @@ -289,10 +285,9 @@ Config::setupControl(bool bQuiet, bool bSilent, bool bStandalone) // First, check against 'minimum' RAM requirements per node size: auto const& threshold = sizedItems[std::underlying_type_t(SizedItem::ramSizeGB)]; - auto ns = std::find_if( - threshold.second.begin(), threshold.second.end(), [this](std::size_t limit) { - return (limit == 0) || (ramSize_ < limit); - }); + auto ns = std::ranges::find_if(threshold.second, [this](std::size_t limit) { + return (limit == 0) || (ramSize_ < limit); + }); XRPL_ASSERT(ns != threshold.second.end(), "xrpl::Config::setupControl : valid node size"); diff --git a/src/xrpld/overlay/ClusterNode.h b/src/xrpld/overlay/ClusterNode.h index 8a8a8bf052..3e319ef8be 100644 --- a/src/xrpld/overlay/ClusterNode.h +++ b/src/xrpld/overlay/ClusterNode.h @@ -5,6 +5,7 @@ #include #include +#include namespace xrpl { @@ -15,10 +16,10 @@ public: ClusterNode( PublicKey const& identity, - std::string const& name, + std::string name, std::uint32_t fee = 0, NetClock::time_point rtime = NetClock::time_point{}) - : identity_(identity), name_(name), mLoadFee(fee), mReportTime(rtime) + : identity_(identity), name_(std::move(name)), mLoadFee(fee), mReportTime(rtime) { } diff --git a/src/xrpld/overlay/Compression.h b/src/xrpld/overlay/Compression.h index 9c4e84f317..cb60b4bb48 100644 --- a/src/xrpld/overlay/Compression.h +++ b/src/xrpld/overlay/Compression.h @@ -3,9 +3,7 @@ #include #include -namespace xrpl { - -namespace compression { +namespace xrpl::compression { std::size_t constexpr headerBytes = 6; std::size_t constexpr headerBytesCompressed = 10; @@ -93,6 +91,4 @@ compress( } return 0; } -} // namespace compression - -} // namespace xrpl +} // namespace xrpl::compression diff --git a/src/xrpld/overlay/Overlay.h b/src/xrpld/overlay/Overlay.h index 7d2508a584..2c2371a1d1 100644 --- a/src/xrpld/overlay/Overlay.h +++ b/src/xrpld/overlay/Overlay.h @@ -14,13 +14,9 @@ #include #include -namespace boost { -namespace asio { -namespace ssl { +namespace boost::asio::ssl { class context; -} // namespace ssl -} // namespace asio -} // namespace boost +} // namespace boost::asio::ssl namespace xrpl { @@ -55,7 +51,7 @@ public: using PeerSequence = std::vector>; - virtual ~Overlay() = default; + ~Overlay() override = default; virtual void start() diff --git a/src/xrpld/overlay/ReduceRelayCommon.h b/src/xrpld/overlay/ReduceRelayCommon.h index 9ddde335e6..84e9cf9994 100644 --- a/src/xrpld/overlay/ReduceRelayCommon.h +++ b/src/xrpld/overlay/ReduceRelayCommon.h @@ -2,13 +2,11 @@ #include -namespace xrpl { - // Blog post explaining the rationale behind reduction of flooding gossip // protocol: // https://xrpl.org/blog/2021/message-routing-optimizations-pt-1-proposal-validation-relaying.html -namespace reduce_relay { +namespace xrpl::reduce_relay { // Peer's squelch is limited in time to // rand{MIN_UNSQUELCH_EXPIRE, max_squelch}, @@ -38,6 +36,4 @@ static constexpr auto WAIT_ON_BOOTUP = std::chrono::minutes{10}; // size limit of 64MB. static constexpr std::size_t MAX_TX_QUEUE_SIZE = 10000; -} // namespace reduce_relay - -} // namespace xrpl +} // namespace xrpl::reduce_relay diff --git a/src/xrpld/overlay/Slot.h b/src/xrpld/overlay/Slot.h index f287ea46fc..d7f3e9b4d3 100644 --- a/src/xrpld/overlay/Slot.h +++ b/src/xrpld/overlay/Slot.h @@ -19,9 +19,7 @@ #include #include -namespace xrpl { - -namespace reduce_relay { +namespace xrpl::reduce_relay { template class Slots; @@ -52,9 +50,7 @@ epoch(TP const& t) class SquelchHandler { public: - virtual ~SquelchHandler() - { - } + virtual ~SquelchHandler() = default; /** Squelch handler * @param validator Public key of the source validator * @param id Peer's id to squelch @@ -798,6 +794,4 @@ Slots::deleteIdlePeers() } } -} // namespace reduce_relay - -} // namespace xrpl +} // namespace xrpl::reduce_relay diff --git a/src/xrpld/overlay/Squelch.h b/src/xrpld/overlay/Squelch.h index 93f878a634..3f1d1b3192 100644 --- a/src/xrpld/overlay/Squelch.h +++ b/src/xrpld/overlay/Squelch.h @@ -8,9 +8,7 @@ #include -namespace xrpl { - -namespace reduce_relay { +namespace xrpl::reduce_relay { /** Maintains squelching of relaying messages from validators */ template @@ -97,6 +95,4 @@ Squelch::expireSquelch(PublicKey const& validator) return true; } -} // namespace reduce_relay - -} // namespace xrpl +} // namespace xrpl::reduce_relay diff --git a/src/xrpld/overlay/detail/ConnectAttempt.cpp b/src/xrpld/overlay/detail/ConnectAttempt.cpp index d93a4ebe0f..a90400dd2d 100644 --- a/src/xrpld/overlay/detail/ConnectAttempt.cpp +++ b/src/xrpld/overlay/detail/ConnectAttempt.cpp @@ -49,7 +49,7 @@ namespace xrpl { ConnectAttempt::ConnectAttempt( Application& app, boost::asio::io_context& io_context, - endpoint_type const& remote_endpoint, + endpoint_type remote_endpoint, Resource::Consumer usage, shared_context const& context, std::uint32_t id, @@ -61,7 +61,7 @@ ConnectAttempt::ConnectAttempt( , id_(id) , sink_(journal, OverlayImpl::makePrefix(id)) , journal_(sink_) - , remote_endpoint_(remote_endpoint) + , remote_endpoint_(std::move(remote_endpoint)) , usage_(usage) , strand_(boost::asio::make_strand(io_context)) , timer_(io_context) diff --git a/src/xrpld/overlay/detail/ConnectAttempt.h b/src/xrpld/overlay/detail/ConnectAttempt.h index 520ebe277e..0626efd9c7 100644 --- a/src/xrpld/overlay/detail/ConnectAttempt.h +++ b/src/xrpld/overlay/detail/ConnectAttempt.h @@ -137,7 +137,7 @@ public: ConnectAttempt( Application& app, boost::asio::io_context& io_context, - endpoint_type const& remote_endpoint, + endpoint_type remote_endpoint, Resource::Consumer usage, shared_context const& context, Peer::id_t id, @@ -145,7 +145,7 @@ public: beast::Journal journal, OverlayImpl& overlay); - virtual ~ConnectAttempt(); + ~ConnectAttempt() override; /** * @brief Stop the connection attempt diff --git a/src/xrpld/overlay/detail/OverlayImpl.cpp b/src/xrpld/overlay/detail/OverlayImpl.cpp index 5ff54b673b..30fa2587e7 100644 --- a/src/xrpld/overlay/detail/OverlayImpl.cpp +++ b/src/xrpld/overlay/detail/OverlayImpl.cpp @@ -165,7 +165,7 @@ OverlayImpl::Timer::on_timer(error_code ec) OverlayImpl::OverlayImpl( Application& app, - Setup const& setup, + Setup setup, ServerHandler& serverHandler, Resource::Manager& resourceManager, Resolver& resolver, @@ -176,7 +176,7 @@ OverlayImpl::OverlayImpl( , io_context_(io_context) , work_(std::in_place, boost::asio::make_work_guard(io_context_)) , strand_(boost::asio::make_strand(io_context_)) - , setup_(setup) + , setup_(std::move(setup)) , journal_(app_.getJournal("Overlay")) , serverHandler_(serverHandler) , m_resourceManager(resourceManager) @@ -255,7 +255,7 @@ OverlayImpl::onHandoff( { auto const types = beast::rfc2616::split_commas(request["Connect-As"]); - if (std::find_if(types.begin(), types.end(), [](std::string const& s) { + if (std::ranges::find_if(types, [](std::string const& s) { return boost::iequals(s, "peer"); }) == types.end()) { @@ -524,16 +524,16 @@ OverlayImpl::start() if (bootstrapIps.empty()) { // Pool of servers operated by Ripple Labs Inc. - https://ripple.com - bootstrapIps.push_back("r.ripple.com 51235"); + bootstrapIps.emplace_back("r.ripple.com 51235"); // Pool of servers operated by ISRDC - https://isrdc.in - bootstrapIps.push_back("sahyadri.isrdc.in 51235"); + bootstrapIps.emplace_back("sahyadri.isrdc.in 51235"); // Pool of servers operated by @Xrpkuwait - https://xrpkuwait.com - bootstrapIps.push_back("hubs.xrpkuwait.com 51235"); + bootstrapIps.emplace_back("hubs.xrpkuwait.com 51235"); // Pool of servers operated by XRPL Commons - https://xrpl-commons.org - bootstrapIps.push_back("hub.xrpl-commons.org 51235"); + bootstrapIps.emplace_back("hub.xrpl-commons.org 51235"); } m_resolver.resolve( diff --git a/src/xrpld/overlay/detail/OverlayImpl.h b/src/xrpld/overlay/detail/OverlayImpl.h index 167d574188..0c4990a6f4 100644 --- a/src/xrpld/overlay/detail/OverlayImpl.h +++ b/src/xrpld/overlay/detail/OverlayImpl.h @@ -119,7 +119,7 @@ private: public: OverlayImpl( Application& app, - Setup const& setup, + Setup setup, ServerHandler& serverHandler, Resource::Manager& resourceManager, Resolver& resolver, diff --git a/src/xrpld/overlay/detail/PeerImp.cpp b/src/xrpld/overlay/detail/PeerImp.cpp index 0f87ba5a39..c0f21e3a5d 100644 --- a/src/xrpld/overlay/detail/PeerImp.cpp +++ b/src/xrpld/overlay/detail/PeerImp.cpp @@ -145,7 +145,7 @@ PeerImp::PeerImp( , remote_address_(slot->remote_endpoint()) , overlay_(overlay) , inbound_(true) - , protocol_(protocol) + , protocol_(std::move(protocol)) , tracking_(Tracking::unknown) , trackingTime_(clock_type::now()) , publicKey_(publicKey) @@ -153,7 +153,7 @@ PeerImp::PeerImp( , creationTime_(clock_type::now()) , squelch_(app_.getJournal("Squelch")) , usage_(consumer) - , fee_{Resource::feeTrivialPeer, ""} + , fee_{.fee = Resource::feeTrivialPeer, .context = ""} , slot_(slot) , request_(std::move(request)) , headers_(request_) @@ -365,9 +365,8 @@ PeerImp::sendTxQueue() if (!txQueue_.empty()) { protocol::TMHaveTransactions ht; - std::for_each(txQueue_.begin(), txQueue_.end(), [&](auto const& hash) { - ht.add_hashes(hash.data(), hash.size()); - }); + std::ranges::for_each( + txQueue_, [&](auto const& hash) { ht.add_hashes(hash.data(), hash.size()); }); JLOG(p_journal_.trace()) << "sendTxQueue " << txQueue_.size(); txQueue_.clear(); send(std::make_shared(ht, protocol::mtHAVE_TRANSACTIONS)); @@ -582,7 +581,7 @@ PeerImp::hasLedger(uint256 const& hash, std::uint32_t seq) const if ((seq != 0) && (seq >= minLedger_) && (seq <= maxLedger_) && (tracking_.load() == Tracking::converged)) return true; - if (std::find(recentLedgers_.begin(), recentLedgers_.end(), hash) != recentLedgers_.end()) + if (std::ranges::find(recentLedgers_, hash) != recentLedgers_.end()) return true; } return false; @@ -601,7 +600,7 @@ bool PeerImp::hasTxSet(uint256 const& hash) const { std::lock_guard const sl(recentLock_); - return std::find(recentTxSets_.begin(), recentTxSets_.end(), hash) != recentTxSets_.end(); + return std::ranges::find(recentTxSets_, hash) != recentTxSets_.end(); } void @@ -1187,7 +1186,7 @@ PeerImp::onMessageBegin( { auto const name = protocolMessageName(type); load_event_ = app_.getJobQueue().makeLoadEvent(jtPEER, name); - fee_ = {Resource::feeTrivialPeer, name}; + fee_ = {.fee = Resource::feeTrivialPeer, .context = name}; auto const category = TrafficCount::categorize(*m, static_cast(type), true); @@ -2184,7 +2183,7 @@ PeerImp::onMessage(std::shared_ptr const& m) { std::lock_guard const sl(recentLock_); - if (std::find(recentTxSets_.begin(), recentTxSets_.end(), hash) != recentTxSets_.end()) + if (std::ranges::find(recentTxSets_, hash) != recentTxSets_.end()) { fee_.update(Resource::feeUselessData, "duplicate (tsHAVE)"); return; @@ -2849,7 +2848,7 @@ PeerImp::addLedger(uint256 const& hash, std::lock_guard const& locke // locked by the caller. (void)lockedRecentLock; - if (std::find(recentLedgers_.begin(), recentLedgers_.end(), hash) != recentLedgers_.end()) + if (std::ranges::find(recentLedgers_, hash) != recentLedgers_.end()) return; recentLedgers_.push_back(hash); diff --git a/src/xrpld/overlay/detail/PeerImp.h b/src/xrpld/overlay/detail/PeerImp.h index 325dca6430..f2cca1407a 100644 --- a/src/xrpld/overlay/detail/PeerImp.h +++ b/src/xrpld/overlay/detail/PeerImp.h @@ -23,6 +23,7 @@ #include #include #include +#include namespace xrpl { @@ -313,7 +314,7 @@ public: id_t id, OverlayImpl& overlay); - virtual ~PeerImp(); + ~PeerImp() override; beast::Journal const& pJournal() const @@ -361,9 +362,8 @@ public: /** Send a set of PeerFinder endpoints as a protocol message. */ template < class FwdIt, - class = typename std::enable_if_t::value_type, - PeerFinder::Endpoint>::value>> + class = typename std::enable_if_t< + std::is_same_v::value_type, PeerFinder::Endpoint>>> void sendEndpoints(FwdIt first, FwdIt last); @@ -826,7 +826,7 @@ PeerImp::PeerImp( , remote_address_(slot->remote_endpoint()) , overlay_(overlay) , inbound_(false) - , protocol_(protocol) + , protocol_(std::move(protocol)) , tracking_(Tracking::unknown) , trackingTime_(clock_type::now()) , publicKey_(publicKey) @@ -834,7 +834,7 @@ PeerImp::PeerImp( , creationTime_(clock_type::now()) , squelch_(app_.getJournal("Squelch")) , usage_(usage) - , fee_{Resource::feeTrivialPeer} + , fee_{.fee = Resource::feeTrivialPeer} , slot_(std::move(slot)) , response_(std::move(response)) , headers_(response_) diff --git a/src/xrpld/overlay/detail/PeerReservationTable.cpp b/src/xrpld/overlay/detail/PeerReservationTable.cpp index c61ac5cb87..f0e5f55a00 100644 --- a/src/xrpld/overlay/detail/PeerReservationTable.cpp +++ b/src/xrpld/overlay/detail/PeerReservationTable.cpp @@ -34,9 +34,9 @@ PeerReservationTable::list() const -> std::vector { std::lock_guard const lock(mutex_); list.reserve(table_.size()); - std::copy(table_.begin(), table_.end(), std::back_inserter(list)); + std::ranges::copy(table_, std::back_inserter(list)); } - std::sort(list.begin(), list.end()); + std::sort(list.begin(), list.end()); // NOLINT(modernize-use-ranges) return list; } diff --git a/src/xrpld/overlay/detail/PeerSet.cpp b/src/xrpld/overlay/detail/PeerSet.cpp index b5895162aa..8d3d79d358 100644 --- a/src/xrpld/overlay/detail/PeerSet.cpp +++ b/src/xrpld/overlay/detail/PeerSet.cpp @@ -75,9 +75,8 @@ PeerSetImpl::addPeers( pairs.emplace_back(score, std::move(peer)); }); - std::sort(pairs.begin(), pairs.end(), [](ScoredPeer const& lhs, ScoredPeer const& rhs) { - return lhs.first > rhs.first; - }); + std::ranges::sort( + pairs, [](ScoredPeer const& lhs, ScoredPeer const& rhs) { return lhs.first > rhs.first; }); std::size_t accepted = 0; for (auto const& pair : pairs) @@ -124,7 +123,7 @@ public: { } - virtual std::unique_ptr + std::unique_ptr build() override { return std::make_unique(app_); diff --git a/src/xrpld/overlay/detail/ProtocolMessage.h b/src/xrpld/overlay/detail/ProtocolMessage.h index 87098fb331..6b5b746ffd 100644 --- a/src/xrpld/overlay/detail/ProtocolMessage.h +++ b/src/xrpld/overlay/detail/ProtocolMessage.h @@ -233,7 +233,7 @@ parseMessageHeader(boost::system::error_code& ec, BufferSequence const& bufs, st template < class T, class Buffers, - class = std::enable_if_t::value>> + class = std::enable_if_t>> std::shared_ptr parseMessageContent(MessageHeader const& header, Buffers const& buffers) { @@ -269,7 +269,7 @@ template < class T, class Buffers, class Handler, - class = std::enable_if_t::value>> + class = std::enable_if_t>> bool invoke(MessageHeader const& header, Buffers const& buffers, Handler& handler) { diff --git a/src/xrpld/overlay/detail/ProtocolVersion.cpp b/src/xrpld/overlay/detail/ProtocolVersion.cpp index c8bf9edfbd..c7416973ba 100644 --- a/src/xrpld/overlay/detail/ProtocolVersion.cpp +++ b/src/xrpld/overlay/detail/ProtocolVersion.cpp @@ -104,8 +104,9 @@ parseProtocolVersions(boost::beast::string_view const& value) } // We guarantee that the returned list is sorted and contains no duplicates: - std::sort(result.begin(), result.end()); - result.erase(std::unique(result.begin(), result.end()), result.end()); + std::ranges::sort(result); + auto const uniq = std::ranges::unique(result); + result.erase(uniq.begin(), uniq.end()); return result; } @@ -123,12 +124,8 @@ negotiateProtocolVersion(std::vector const& versions) std::function const pickVersion = [&result](ProtocolVersion const& v) { result = v; }; - std::set_intersection( - std::begin(versions), - std::end(versions), - std::begin(supportedProtocolList), - std::end(supportedProtocolList), - boost::make_function_output_iterator(pickVersion)); + std::ranges::set_intersection( + versions, supportedProtocolList, boost::make_function_output_iterator(pickVersion)); return result; } @@ -162,8 +159,7 @@ supportedProtocolVersions() bool isProtocolSupported(ProtocolVersion const& v) { - return std::end(supportedProtocolList) != - std::find(std::begin(supportedProtocolList), std::end(supportedProtocolList), v); + return std::end(supportedProtocolList) != std::ranges::find(supportedProtocolList, v); } } // namespace xrpl diff --git a/src/xrpld/overlay/detail/Tuning.h b/src/xrpld/overlay/detail/Tuning.h index bd62cd2a03..0471587fec 100644 --- a/src/xrpld/overlay/detail/Tuning.h +++ b/src/xrpld/overlay/detail/Tuning.h @@ -2,9 +2,7 @@ #include -namespace xrpl { - -namespace Tuning { +namespace xrpl::Tuning { enum { /** How many ledgers off a server can be and we will @@ -44,6 +42,4 @@ enum { /** Size of buffer used to read from the socket. */ std::size_t constexpr readBufferBytes = 16384; -} // namespace Tuning - -} // namespace xrpl +} // namespace xrpl::Tuning diff --git a/src/xrpld/overlay/detail/TxMetrics.cpp b/src/xrpld/overlay/detail/TxMetrics.cpp index c01136613d..0a44c719f4 100644 --- a/src/xrpld/overlay/detail/TxMetrics.cpp +++ b/src/xrpld/overlay/detail/TxMetrics.cpp @@ -11,9 +11,7 @@ #include #include -namespace xrpl { - -namespace metrics { +namespace xrpl::metrics { void TxMetrics::addMetrics(protocol::MessageType type, std::uint32_t val) @@ -131,6 +129,4 @@ TxMetrics::json() const return ret; } -} // namespace metrics - -} // namespace xrpl +} // namespace xrpl::metrics diff --git a/src/xrpld/overlay/detail/TxMetrics.h b/src/xrpld/overlay/detail/TxMetrics.h index 37194c34e3..a5aea854cc 100644 --- a/src/xrpld/overlay/detail/TxMetrics.h +++ b/src/xrpld/overlay/detail/TxMetrics.h @@ -8,9 +8,7 @@ #include #include -namespace xrpl { - -namespace metrics { +namespace xrpl::metrics { /** Run single metrics rolling average. Can be either average of a value per second or average of a value's sample per second. For instance, @@ -111,6 +109,4 @@ struct TxMetrics json() const; }; -} // namespace metrics - -} // namespace xrpl +} // namespace xrpl::metrics diff --git a/src/xrpld/overlay/detail/ZeroCopyStream.h b/src/xrpld/overlay/detail/ZeroCopyStream.h index 6ce81edc54..034f69a8da 100644 --- a/src/xrpld/overlay/detail/ZeroCopyStream.h +++ b/src/xrpld/overlay/detail/ZeroCopyStream.h @@ -124,7 +124,7 @@ private: public: explicit ZeroCopyOutputStream(Streambuf& streambuf, std::size_t blockSize); - ~ZeroCopyOutputStream(); + ~ZeroCopyOutputStream() override; bool Next(void** data, int* size) override; diff --git a/src/xrpld/peerfinder/PeerfinderManager.h b/src/xrpld/peerfinder/PeerfinderManager.h index 2d22676e1b..1ceaebe04d 100644 --- a/src/xrpld/peerfinder/PeerfinderManager.h +++ b/src/xrpld/peerfinder/PeerfinderManager.h @@ -11,8 +11,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { using clock_type = beast::abstract_clock; @@ -102,7 +101,7 @@ struct Endpoint { Endpoint() = default; - Endpoint(beast::IP::Endpoint const& ep, std::uint32_t hops_); + Endpoint(beast::IP::Endpoint ep, std::uint32_t hops_); std::uint32_t hops = 0; beast::IP::Endpoint address; @@ -168,7 +167,7 @@ public: There may be some listener calls made before the destructor returns. */ - virtual ~Manager() = default; + ~Manager() override = default; /** Set the configuration for the manager. The new settings will be applied asynchronously. @@ -285,5 +284,4 @@ public: once_per_second() = 0; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/Slot.h b/src/xrpld/peerfinder/Slot.h index d0fce0626d..81249f54df 100644 --- a/src/xrpld/peerfinder/Slot.h +++ b/src/xrpld/peerfinder/Slot.h @@ -5,8 +5,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Properties and state associated with a peer to peer overlay connection. */ class Slot @@ -58,5 +57,4 @@ public: public_key() const = 0; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Bootcache.cpp b/src/xrpld/peerfinder/detail/Bootcache.cpp index f9a34e2b1e..7b26bc8d9a 100644 --- a/src/xrpld/peerfinder/detail/Bootcache.cpp +++ b/src/xrpld/peerfinder/detail/Bootcache.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { Bootcache::Bootcache(Store& store, clock_type& clock, beast::Journal journal) : m_store(store), m_clock(clock), m_journal(journal), m_whenUpdate(m_clock.now()) @@ -262,5 +261,4 @@ Bootcache::flagForUpdate() checkUpdate(); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Bootcache.h b/src/xrpld/peerfinder/detail/Bootcache.h index a552c2f040..5405dd3432 100644 --- a/src/xrpld/peerfinder/detail/Bootcache.h +++ b/src/xrpld/peerfinder/detail/Bootcache.h @@ -12,8 +12,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Stores IP addresses useful for gaining initial connections. @@ -169,5 +168,4 @@ private: flagForUpdate(); }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Checker.h b/src/xrpld/peerfinder/detail/Checker.h index 21cc0f160e..3bd23f85db 100644 --- a/src/xrpld/peerfinder/detail/Checker.h +++ b/src/xrpld/peerfinder/detail/Checker.h @@ -10,8 +10,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Tests remote listening sockets to make sure they are connectable. */ template @@ -44,7 +43,10 @@ private: async_op(Checker& owner, boost::asio::io_context& io_context, Handler&& handler); - virtual ~async_op(); + ~async_op() override + { + checker_.remove(*this); + } void stop() override; @@ -113,13 +115,6 @@ Checker::async_op::async_op( { } -template -template -Checker::async_op::~async_op() -{ - checker_.remove(*this); -} - template template void @@ -198,5 +193,4 @@ Checker::remove(basic_async_op& op) cond_.notify_all(); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Counts.h b/src/xrpld/peerfinder/detail/Counts.h index 4b52453708..e3d120b414 100644 --- a/src/xrpld/peerfinder/detail/Counts.h +++ b/src/xrpld/peerfinder/detail/Counts.h @@ -6,8 +6,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Manages the count of available connections for the various slots. */ class Counts @@ -299,5 +298,4 @@ private: int m_closingCount{0}; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Endpoint.cpp b/src/xrpld/peerfinder/detail/Endpoint.cpp index 6c277c1b66..5d58e6c9bb 100644 --- a/src/xrpld/peerfinder/detail/Endpoint.cpp +++ b/src/xrpld/peerfinder/detail/Endpoint.cpp @@ -5,14 +5,13 @@ #include #include +#include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { -Endpoint::Endpoint(beast::IP::Endpoint const& ep, std::uint32_t hops_) - : hops(std::min(hops_, Tuning::maxHops + 1)), address(ep) +Endpoint::Endpoint(beast::IP::Endpoint ep, std::uint32_t hops_) + : hops(std::min(hops_, Tuning::maxHops + 1)), address(std::move(ep)) { } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Fixed.h b/src/xrpld/peerfinder/detail/Fixed.h index 8b67347e6a..b898c6ce3f 100644 --- a/src/xrpld/peerfinder/detail/Fixed.h +++ b/src/xrpld/peerfinder/detail/Fixed.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Metadata for a Fixed slot. */ class Fixed @@ -43,5 +42,4 @@ private: std::size_t m_failures{0}; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Handouts.h b/src/xrpld/peerfinder/detail/Handouts.h index 77e2e31ed9..0d5eae7ef7 100644 --- a/src/xrpld/peerfinder/detail/Handouts.h +++ b/src/xrpld/peerfinder/detail/Handouts.h @@ -6,8 +6,9 @@ #include #include -namespace xrpl { -namespace PeerFinder { +#include + +namespace xrpl::PeerFinder { namespace detail { @@ -78,7 +79,7 @@ class RedirectHandouts { public: template - explicit RedirectHandouts(SlotImp::ptr const& slot); + explicit RedirectHandouts(SlotImp::ptr slot); template bool @@ -114,7 +115,7 @@ private: }; template -RedirectHandouts::RedirectHandouts(SlotImp::ptr const& slot) : slot_(slot) +RedirectHandouts::RedirectHandouts(SlotImp::ptr slot) : slot_(std::move(slot)) { list_.reserve(Tuning::redirectEndpointCount); } @@ -162,7 +163,7 @@ class SlotHandouts { public: template - explicit SlotHandouts(SlotImp::ptr const& slot); + explicit SlotHandouts(SlotImp::ptr slot); template bool @@ -198,7 +199,7 @@ private: }; template -SlotHandouts::SlotHandouts(SlotImp::ptr const& slot) : slot_(slot) +SlotHandouts::SlotHandouts(SlotImp::ptr slot) : slot_(std::move(slot)) { list_.reserve(Tuning::numberOfEndpoints); } @@ -329,5 +330,4 @@ ConnectHandouts::try_insert(beast::IP::Endpoint const& endpoint) return true; } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Livecache.h b/src/xrpld/peerfinder/detail/Livecache.h index a9a641027f..5c5ed577af 100644 --- a/src/xrpld/peerfinder/detail/Livecache.h +++ b/src/xrpld/peerfinder/detail/Livecache.h @@ -13,9 +13,9 @@ #include #include +#include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { template class Livecache; @@ -30,7 +30,7 @@ public: protected: struct Element : boost::intrusive::list_base_hook<> { - Element(Endpoint const& endpoint_) : endpoint(endpoint_) + Element(Endpoint endpoint_) : endpoint(std::move(endpoint_)) { } @@ -465,7 +465,7 @@ Livecache::hops_t::shuffle() { std::vector> v; v.reserve(list.size()); - std::copy(list.begin(), list.end(), std::back_inserter(v)); + std::ranges::copy(list, std::back_inserter(v)); std::shuffle(v.begin(), v.end(), default_prng()); list.clear(); for (auto& e : v) @@ -490,7 +490,7 @@ Livecache::hops_t::histogram() const template Livecache::hops_t::hops_t(Allocator const& alloc) { - std::fill(m_hist.begin(), m_hist.end(), 0); + std::ranges::fill(m_hist, 0); } template @@ -532,5 +532,4 @@ Livecache::hops_t::remove(Element& e) list.erase(list.iterator_to(e)); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Logic.h b/src/xrpld/peerfinder/detail/Logic.h index 8d60b49273..9e2cbedc64 100644 --- a/src/xrpld/peerfinder/detail/Logic.h +++ b/src/xrpld/peerfinder/detail/Logic.h @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** The Logic for maintaining the list of Slot addresses. We keep this in a separate class so it can be instantiated @@ -629,7 +628,7 @@ public: beast::Journal const journal{sink}; JLOG(journal.trace()) << "Logic sending " << list.size() << ((list.size() == 1) ? " endpoint" : " endpoints"); - result.push_back(std::make_pair(slot, list)); + result.emplace_back(slot, list); } m_whenBroadcast = now + Tuning::secondsPerMessage; @@ -1213,5 +1212,4 @@ Logic::onRedirects( } } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/PeerfinderConfig.cpp b/src/xrpld/peerfinder/detail/PeerfinderConfig.cpp index c43e214826..1c57f5187e 100644 --- a/src/xrpld/peerfinder/detail/PeerfinderConfig.cpp +++ b/src/xrpld/peerfinder/detail/PeerfinderConfig.cpp @@ -8,8 +8,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { Config::Config() : outPeers(calcOutPeers()) @@ -128,5 +127,4 @@ Config::makeConfig( return config; } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/PeerfinderManager.cpp b/src/xrpld/peerfinder/detail/PeerfinderManager.cpp index 375592222f..2858586120 100644 --- a/src/xrpld/peerfinder/detail/PeerfinderManager.cpp +++ b/src/xrpld/peerfinder/detail/PeerfinderManager.cpp @@ -28,8 +28,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { class ManagerImp : public Manager { @@ -267,5 +266,4 @@ make_Manager( return std::make_unique(io_context, clock, journal, config, collector); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/SlotImp.cpp b/src/xrpld/peerfinder/detail/SlotImp.cpp index ac65b29e95..f763a154aa 100644 --- a/src/xrpld/peerfinder/detail/SlotImp.cpp +++ b/src/xrpld/peerfinder/detail/SlotImp.cpp @@ -9,13 +9,13 @@ #include #include +#include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { SlotImp::SlotImp( beast::IP::Endpoint const& local_endpoint, - beast::IP::Endpoint const& remote_endpoint, + beast::IP::Endpoint remote_endpoint, bool fixed, clock_type& clock) : recent(clock) @@ -23,7 +23,7 @@ SlotImp::SlotImp( , m_fixed(fixed) , m_reserved(false) , m_state(accept) - , m_remote_endpoint(remote_endpoint) + , m_remote_endpoint(std::move(remote_endpoint)) , m_local_endpoint(local_endpoint) , m_listening_port(unknownPort) , checked(false) @@ -32,13 +32,13 @@ SlotImp::SlotImp( { } -SlotImp::SlotImp(beast::IP::Endpoint const& remote_endpoint, bool fixed, clock_type& clock) +SlotImp::SlotImp(beast::IP::Endpoint remote_endpoint, bool fixed, clock_type& clock) : recent(clock) , m_inbound(false) , m_fixed(fixed) , m_reserved(false) , m_state(connect) - , m_remote_endpoint(remote_endpoint) + , m_remote_endpoint(std::move(remote_endpoint)) , m_listening_port(unknownPort) , checked(true) , canAccept(true) @@ -133,5 +133,4 @@ SlotImp::recent_t::expire() beast::expire(cache, Tuning::liveCacheSecondsToLive); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/SlotImp.h b/src/xrpld/peerfinder/detail/SlotImp.h index f18410d214..a94473be87 100644 --- a/src/xrpld/peerfinder/detail/SlotImp.h +++ b/src/xrpld/peerfinder/detail/SlotImp.h @@ -8,8 +8,7 @@ #include #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { class SlotImp : public Slot { @@ -19,12 +18,12 @@ public: // inbound SlotImp( beast::IP::Endpoint const& local_endpoint, - beast::IP::Endpoint const& remote_endpoint, + beast::IP::Endpoint remote_endpoint, bool fixed, clock_type& clock); // outbound - SlotImp(beast::IP::Endpoint const& remote_endpoint, bool fixed, clock_type& clock); + SlotImp(beast::IP::Endpoint remote_endpoint, bool fixed, clock_type& clock); bool inbound() const override @@ -190,5 +189,4 @@ public: clock_type::time_point whenAcceptEndpoints; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Source.h b/src/xrpld/peerfinder/detail/Source.h index 8fc97b639f..c86176911e 100644 --- a/src/xrpld/peerfinder/detail/Source.h +++ b/src/xrpld/peerfinder/detail/Source.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** A static or dynamic source of peer addresses. These are used as fallbacks when we are bootstrapping and don't have @@ -30,9 +29,7 @@ public: IPAddresses addresses; }; - virtual ~Source() - { - } + virtual ~Source() = default; virtual std::string const& name() = 0; virtual void @@ -43,5 +40,4 @@ public: fetch(Results& results, beast::Journal journal) = 0; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/SourceStrings.cpp b/src/xrpld/peerfinder/detail/SourceStrings.cpp index 3f142bfdf4..4f6d58450c 100644 --- a/src/xrpld/peerfinder/detail/SourceStrings.cpp +++ b/src/xrpld/peerfinder/detail/SourceStrings.cpp @@ -7,19 +7,19 @@ #include #include +#include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { class SourceStringsImp : public SourceStrings { public: - SourceStringsImp(std::string const& name, Strings const& strings) - : m_name(name), m_strings(strings) + SourceStringsImp(std::string name, Strings strings) + : m_name(std::move(name)), m_strings(std::move(strings)) { } - ~SourceStringsImp() = default; + ~SourceStringsImp() override = default; std::string const& name() override @@ -55,5 +55,4 @@ SourceStrings::New(std::string const& name, Strings const& strings) return std::make_shared(name, strings); } -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/SourceStrings.h b/src/xrpld/peerfinder/detail/SourceStrings.h index 1cf6d81040..11b2b927ee 100644 --- a/src/xrpld/peerfinder/detail/SourceStrings.h +++ b/src/xrpld/peerfinder/detail/SourceStrings.h @@ -4,8 +4,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Provides addresses from a static set of strings. */ class SourceStrings : public Source @@ -19,5 +18,4 @@ public: New(std::string const& name, Strings const& strings); }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Store.h b/src/xrpld/peerfinder/detail/Store.h index 390f80800a..347fc09b15 100644 --- a/src/xrpld/peerfinder/detail/Store.h +++ b/src/xrpld/peerfinder/detail/Store.h @@ -1,15 +1,12 @@ #pragma once -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Abstract persistence for PeerFinder data. */ class Store { public: - virtual ~Store() - { - } + virtual ~Store() = default; // load the bootstrap cache using load_callback = std::function; @@ -28,5 +25,4 @@ public: save(std::vector const& v) = 0; }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/StoreSqdb.h b/src/xrpld/peerfinder/detail/StoreSqdb.h index 47b8a6825c..626a82c932 100644 --- a/src/xrpld/peerfinder/detail/StoreSqdb.h +++ b/src/xrpld/peerfinder/detail/StoreSqdb.h @@ -5,8 +5,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Database persistence for PeerFinder using SQLite */ class StoreSqdb : public Store @@ -26,9 +25,7 @@ public: { } - ~StoreSqdb() - { - } + ~StoreSqdb() override = default; void open(BasicConfig const& config) @@ -85,5 +82,4 @@ private: } }; -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/peerfinder/detail/Tuning.h b/src/xrpld/peerfinder/detail/Tuning.h index d572c7b5e3..23a96a7374 100644 --- a/src/xrpld/peerfinder/detail/Tuning.h +++ b/src/xrpld/peerfinder/detail/Tuning.h @@ -2,12 +2,9 @@ #include -namespace xrpl { -namespace PeerFinder { - /** Heuristically tuned constants. */ /** @{ */ -namespace Tuning { +namespace xrpl::PeerFinder::Tuning { enum { //--------------------------------------------------------- @@ -110,8 +107,5 @@ std::chrono::seconds constexpr liveCacheSecondsToLive(30); // Note that we ignore the port for purposes of comparison. std::chrono::seconds constexpr recentAttemptDuration(60); -} // namespace Tuning +} // namespace xrpl::PeerFinder::Tuning /** @} */ - -} // namespace PeerFinder -} // namespace xrpl diff --git a/src/xrpld/peerfinder/make_Manager.h b/src/xrpld/peerfinder/make_Manager.h index 846907e08c..8350255ae2 100644 --- a/src/xrpld/peerfinder/make_Manager.h +++ b/src/xrpld/peerfinder/make_Manager.h @@ -6,8 +6,7 @@ #include -namespace xrpl { -namespace PeerFinder { +namespace xrpl::PeerFinder { /** Create a new Manager. */ std::unique_ptr @@ -18,5 +17,4 @@ make_Manager( BasicConfig const& config, beast::insight::Collector::ptr const& collector); -} // namespace PeerFinder -} // namespace xrpl +} // namespace xrpl::PeerFinder diff --git a/src/xrpld/perflog/detail/PerfLogImp.cpp b/src/xrpld/perflog/detail/PerfLogImp.cpp index b47c5020d7..57e7be5156 100644 --- a/src/xrpld/perflog/detail/PerfLogImp.cpp +++ b/src/xrpld/perflog/detail/PerfLogImp.cpp @@ -30,8 +30,7 @@ #include #include -namespace xrpl { -namespace perf { +namespace xrpl::perf { PerfLogImp::Counters::Counters(std::set const& labels, JobTypes const& jobTypes) { @@ -296,11 +295,11 @@ PerfLogImp::report() } PerfLogImp::PerfLogImp( - Setup const& setup, + Setup setup, Application& app, beast::Journal journal, std::function&& signalStop) - : setup_(setup), app_(app), j_(journal), signalStop_(std::move(signalStop)) + : setup_(std::move(setup)), app_(app), j_(journal), signalStop_(std::move(signalStop)) { openLog(); } @@ -506,5 +505,4 @@ make_PerfLog( return std::make_unique(setup, app, journal, std::move(signalStop)); } -} // namespace perf -} // namespace xrpl +} // namespace xrpl::perf diff --git a/src/xrpld/perflog/detail/PerfLogImp.h b/src/xrpld/perflog/detail/PerfLogImp.h index 61329fb198..2898158ea5 100644 --- a/src/xrpld/perflog/detail/PerfLogImp.h +++ b/src/xrpld/perflog/detail/PerfLogImp.h @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace perf { +namespace xrpl::perf { /** A box coupling data with a mutex for locking access to it. */ template @@ -123,7 +122,7 @@ class PerfLogImp : public PerfLog public: PerfLogImp( - Setup const& setup, + Setup setup, Application& app, beast::Journal journal, std::function&& signalStop); @@ -177,5 +176,4 @@ public: stop() override; }; -} // namespace perf -} // namespace xrpl +} // namespace xrpl::perf diff --git a/src/xrpld/rpc/CTID.h b/src/xrpld/rpc/CTID.h index 42efb4c157..9b36cf167d 100644 --- a/src/xrpld/rpc/CTID.h +++ b/src/xrpld/rpc/CTID.h @@ -6,9 +6,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { // CTID stands for Concise Transaction ID. // @@ -108,5 +106,4 @@ decodeCTID(T const ctid) noexcept return std::make_tuple(ledgerSeq, txnIndex, networkID); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/MPTokenIssuanceID.h b/src/xrpld/rpc/MPTokenIssuanceID.h index 9e60c44ee0..b48f785f87 100644 --- a/src/xrpld/rpc/MPTokenIssuanceID.h +++ b/src/xrpld/rpc/MPTokenIssuanceID.h @@ -8,9 +8,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { /** Add a `mpt_issuance_id` field to the `meta` input/output parameter. @@ -35,5 +33,4 @@ insertMPTokenIssuanceID( TxMeta const& transactionMeta); /** @} */ -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/RPCHandler.h b/src/xrpld/rpc/RPCHandler.h index 519740b75d..c8133f3fe6 100644 --- a/src/xrpld/rpc/RPCHandler.h +++ b/src/xrpld/rpc/RPCHandler.h @@ -3,8 +3,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { struct JsonContext; @@ -15,5 +14,4 @@ doCommand(RPC::JsonContext&, Json::Value&); Role roleRequired(unsigned int version, bool betaEnabled, std::string const& method); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/Status.h b/src/xrpld/rpc/Status.h index c7c9eed63e..f0c6d932e7 100644 --- a/src/xrpld/rpc/Status.h +++ b/src/xrpld/rpc/Status.h @@ -4,8 +4,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { /** Status represents the results of an operation that might fail. @@ -28,7 +27,7 @@ public: Status() = default; // The enable_if allows only integers (not enums). Prevents enum narrowing. - template ::value>> + template >> Status(T code, Strings d = {}) : code_(code), messages_(std::move(d)) { } @@ -134,5 +133,4 @@ private: Strings messages_; }; -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/DeliveredAmount.cpp b/src/xrpld/rpc/detail/DeliveredAmount.cpp index c6a6354a31..6b9ef15db5 100644 --- a/src/xrpld/rpc/detail/DeliveredAmount.cpp +++ b/src/xrpld/rpc/detail/DeliveredAmount.cpp @@ -16,8 +16,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { /* GetLedgerIndex and GetCloseTime are lambdas that allow the close time and @@ -179,5 +178,4 @@ insertDeliveredAmount( } } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/Handler.cpp b/src/xrpld/rpc/detail/Handler.cpp index c218d0052a..b8489e0b34 100644 --- a/src/xrpld/rpc/detail/Handler.cpp +++ b/src/xrpld/rpc/detail/Handler.cpp @@ -18,8 +18,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { namespace { /** Adjust an old-style handler to be call-by-reference. */ @@ -79,79 +78,293 @@ handlerFrom() Handler const handlerArray[]{ // Some handlers not specified here are added to the table via addHandler() // Request-response methods - {"account_info", byRef(&doAccountInfo), Role::USER, NO_CONDITION}, - {"account_currencies", byRef(&doAccountCurrencies), Role::USER, NO_CONDITION}, - {"account_lines", byRef(&doAccountLines), Role::USER, NO_CONDITION}, - {"account_channels", byRef(&doAccountChannels), Role::USER, NO_CONDITION}, - {"account_nfts", byRef(&doAccountNFTs), Role::USER, NO_CONDITION}, - {"account_objects", byRef(&doAccountObjects), Role::USER, NO_CONDITION}, - {"account_offers", byRef(&doAccountOffers), Role::USER, NO_CONDITION}, - {"account_tx", byRef(&doAccountTx), Role::USER, NO_CONDITION}, - {"amm_info", byRef(&doAMMInfo), Role::USER, NO_CONDITION}, - {"blacklist", byRef(&doBlackList), Role::ADMIN, NO_CONDITION}, - {"book_changes", byRef(&doBookChanges), Role::USER, NO_CONDITION}, - {"book_offers", byRef(&doBookOffers), Role::USER, NO_CONDITION}, - {"can_delete", byRef(&doCanDelete), Role::ADMIN, NO_CONDITION}, - {"channel_authorize", byRef(&doChannelAuthorize), Role::USER, NO_CONDITION}, - {"channel_verify", byRef(&doChannelVerify), Role::USER, NO_CONDITION}, - {"connect", byRef(&doConnect), Role::ADMIN, NO_CONDITION}, - {"consensus_info", byRef(&doConsensusInfo), Role::ADMIN, NO_CONDITION}, - {"deposit_authorized", byRef(&doDepositAuthorized), Role::USER, NO_CONDITION}, - {"feature", byRef(&doFeature), Role::USER, NO_CONDITION}, - {"fee", byRef(&doFee), Role::USER, NEEDS_CURRENT_LEDGER}, - {"fetch_info", byRef(&doFetchInfo), Role::ADMIN, NO_CONDITION}, - {"gateway_balances", byRef(&doGatewayBalances), Role::USER, NO_CONDITION}, - {"get_counts", byRef(&doGetCounts), Role::ADMIN, NO_CONDITION}, - {"get_aggregate_price", byRef(&doGetAggregatePrice), Role::USER, NO_CONDITION}, - {"ledger_accept", byRef(&doLedgerAccept), Role::ADMIN, NEEDS_CURRENT_LEDGER}, - {"ledger_cleaner", byRef(&doLedgerCleaner), Role::ADMIN, NEEDS_NETWORK_CONNECTION}, - {"ledger_closed", byRef(&doLedgerClosed), Role::USER, NEEDS_CLOSED_LEDGER}, - {"ledger_current", byRef(&doLedgerCurrent), Role::USER, NEEDS_CURRENT_LEDGER}, - {"ledger_data", byRef(&doLedgerData), Role::USER, NO_CONDITION}, - {"ledger_entry", byRef(&doLedgerEntry), Role::USER, NO_CONDITION}, - {"ledger_header", byRef(&doLedgerHeader), Role::USER, NO_CONDITION, 1, 1}, - {"ledger_request", byRef(&doLedgerRequest), Role::ADMIN, NO_CONDITION}, - {"log_level", byRef(&doLogLevel), Role::ADMIN, NO_CONDITION}, - {"logrotate", byRef(&doLogRotate), Role::ADMIN, NO_CONDITION}, - {"manifest", byRef(&doManifest), Role::USER, NO_CONDITION}, - {"nft_buy_offers", byRef(&doNFTBuyOffers), Role::USER, NO_CONDITION}, - {"nft_sell_offers", byRef(&doNFTSellOffers), Role::USER, NO_CONDITION}, - {"noripple_check", byRef(&doNoRippleCheck), Role::USER, NO_CONDITION}, - {"owner_info", byRef(&doOwnerInfo), Role::USER, NEEDS_CURRENT_LEDGER}, - {"peers", byRef(&doPeers), Role::ADMIN, NO_CONDITION}, - {"path_find", byRef(&doPathFind), Role::USER, NEEDS_CURRENT_LEDGER}, - {"ping", byRef(&doPing), Role::USER, NO_CONDITION}, - {"print", byRef(&doPrint), Role::ADMIN, NO_CONDITION}, + {.name_ = "account_info", + .valueMethod_ = byRef(&doAccountInfo), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_currencies", + .valueMethod_ = byRef(&doAccountCurrencies), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_lines", + .valueMethod_ = byRef(&doAccountLines), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_channels", + .valueMethod_ = byRef(&doAccountChannels), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_nfts", + .valueMethod_ = byRef(&doAccountNFTs), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_objects", + .valueMethod_ = byRef(&doAccountObjects), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_offers", + .valueMethod_ = byRef(&doAccountOffers), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "account_tx", + .valueMethod_ = byRef(&doAccountTx), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "amm_info", + .valueMethod_ = byRef(&doAMMInfo), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "blacklist", + .valueMethod_ = byRef(&doBlackList), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "book_changes", + .valueMethod_ = byRef(&doBookChanges), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "book_offers", + .valueMethod_ = byRef(&doBookOffers), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "can_delete", + .valueMethod_ = byRef(&doCanDelete), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "channel_authorize", + .valueMethod_ = byRef(&doChannelAuthorize), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "channel_verify", + .valueMethod_ = byRef(&doChannelVerify), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "connect", + .valueMethod_ = byRef(&doConnect), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "consensus_info", + .valueMethod_ = byRef(&doConsensusInfo), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "deposit_authorized", + .valueMethod_ = byRef(&doDepositAuthorized), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "feature", + .valueMethod_ = byRef(&doFeature), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "fee", + .valueMethod_ = byRef(&doFee), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "fetch_info", + .valueMethod_ = byRef(&doFetchInfo), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "gateway_balances", + .valueMethod_ = byRef(&doGatewayBalances), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "get_counts", + .valueMethod_ = byRef(&doGetCounts), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "get_aggregate_price", + .valueMethod_ = byRef(&doGetAggregatePrice), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "ledger_accept", + .valueMethod_ = byRef(&doLedgerAccept), + .role_ = Role::ADMIN, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "ledger_cleaner", + .valueMethod_ = byRef(&doLedgerCleaner), + .role_ = Role::ADMIN, + .condition_ = NEEDS_NETWORK_CONNECTION}, + {.name_ = "ledger_closed", + .valueMethod_ = byRef(&doLedgerClosed), + .role_ = Role::USER, + .condition_ = NEEDS_CLOSED_LEDGER}, + {.name_ = "ledger_current", + .valueMethod_ = byRef(&doLedgerCurrent), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "ledger_data", + .valueMethod_ = byRef(&doLedgerData), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "ledger_entry", + .valueMethod_ = byRef(&doLedgerEntry), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "ledger_header", + .valueMethod_ = byRef(&doLedgerHeader), + .role_ = Role::USER, + .condition_ = NO_CONDITION, + .minApiVer_ = 1, + .maxApiVer_ = 1}, + {.name_ = "ledger_request", + .valueMethod_ = byRef(&doLedgerRequest), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "log_level", + .valueMethod_ = byRef(&doLogLevel), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "logrotate", + .valueMethod_ = byRef(&doLogRotate), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "manifest", + .valueMethod_ = byRef(&doManifest), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "nft_buy_offers", + .valueMethod_ = byRef(&doNFTBuyOffers), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "nft_sell_offers", + .valueMethod_ = byRef(&doNFTSellOffers), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "noripple_check", + .valueMethod_ = byRef(&doNoRippleCheck), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "owner_info", + .valueMethod_ = byRef(&doOwnerInfo), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "peers", + .valueMethod_ = byRef(&doPeers), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "path_find", + .valueMethod_ = byRef(&doPathFind), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "ping", + .valueMethod_ = byRef(&doPing), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "print", + .valueMethod_ = byRef(&doPrint), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, // { "profile", byRef (&doProfile), Role::USER, // NEEDS_CURRENT_LEDGER }, - {"random", byRef(&doRandom), Role::USER, NO_CONDITION}, - {"peer_reservations_add", byRef(&doPeerReservationsAdd), Role::ADMIN, NO_CONDITION}, - {"peer_reservations_del", byRef(&doPeerReservationsDel), Role::ADMIN, NO_CONDITION}, - {"peer_reservations_list", byRef(&doPeerReservationsList), Role::ADMIN, NO_CONDITION}, - {"ripple_path_find", byRef(&doRipplePathFind), Role::USER, NO_CONDITION}, - {"server_definitions", byRef(&doServerDefinitions), Role::USER, NO_CONDITION}, - {"server_info", byRef(&doServerInfo), Role::USER, NO_CONDITION}, - {"server_state", byRef(&doServerState), Role::USER, NO_CONDITION}, - {"sign", byRef(&doSign), Role::USER, NO_CONDITION}, - {"sign_for", byRef(&doSignFor), Role::USER, NO_CONDITION}, - {"simulate", byRef(&doSimulate), Role::USER, NEEDS_CURRENT_LEDGER}, - {"stop", byRef(&doStop), Role::ADMIN, NO_CONDITION}, - {"submit", byRef(&doSubmit), Role::USER, NEEDS_CURRENT_LEDGER}, - {"submit_multisigned", byRef(&doSubmitMultiSigned), Role::USER, NEEDS_CURRENT_LEDGER}, - {"transaction_entry", byRef(&doTransactionEntry), Role::USER, NO_CONDITION}, - {"tx", byRef(&doTxJson), Role::USER, NEEDS_NETWORK_CONNECTION}, - {"tx_history", byRef(&doTxHistory), Role::USER, NO_CONDITION, 1, 1}, - {"tx_reduce_relay", byRef(&doTxReduceRelay), Role::USER, NO_CONDITION}, - {"unl_list", byRef(&doUnlList), Role::ADMIN, NO_CONDITION}, - {"validation_create", byRef(&doValidationCreate), Role::ADMIN, NO_CONDITION}, - {"validators", byRef(&doValidators), Role::ADMIN, NO_CONDITION}, - {"validator_list_sites", byRef(&doValidatorListSites), Role::ADMIN, NO_CONDITION}, - {"validator_info", byRef(&doValidatorInfo), Role::ADMIN, NO_CONDITION}, - {"vault_info", byRef(&doVaultInfo), Role::USER, NO_CONDITION}, - {"wallet_propose", byRef(&doWalletPropose), Role::ADMIN, NO_CONDITION}, + {.name_ = "random", + .valueMethod_ = byRef(&doRandom), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "peer_reservations_add", + .valueMethod_ = byRef(&doPeerReservationsAdd), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "peer_reservations_del", + .valueMethod_ = byRef(&doPeerReservationsDel), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "peer_reservations_list", + .valueMethod_ = byRef(&doPeerReservationsList), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "ripple_path_find", + .valueMethod_ = byRef(&doRipplePathFind), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "server_definitions", + .valueMethod_ = byRef(&doServerDefinitions), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "server_info", + .valueMethod_ = byRef(&doServerInfo), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "server_state", + .valueMethod_ = byRef(&doServerState), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "sign", + .valueMethod_ = byRef(&doSign), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "sign_for", + .valueMethod_ = byRef(&doSignFor), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "simulate", + .valueMethod_ = byRef(&doSimulate), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "stop", + .valueMethod_ = byRef(&doStop), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "submit", + .valueMethod_ = byRef(&doSubmit), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "submit_multisigned", + .valueMethod_ = byRef(&doSubmitMultiSigned), + .role_ = Role::USER, + .condition_ = NEEDS_CURRENT_LEDGER}, + {.name_ = "transaction_entry", + .valueMethod_ = byRef(&doTransactionEntry), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "tx", + .valueMethod_ = byRef(&doTxJson), + .role_ = Role::USER, + .condition_ = NEEDS_NETWORK_CONNECTION}, + {.name_ = "tx_history", + .valueMethod_ = byRef(&doTxHistory), + .role_ = Role::USER, + .condition_ = NO_CONDITION, + .minApiVer_ = 1, + .maxApiVer_ = 1}, + {.name_ = "tx_reduce_relay", + .valueMethod_ = byRef(&doTxReduceRelay), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "unl_list", + .valueMethod_ = byRef(&doUnlList), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "validation_create", + .valueMethod_ = byRef(&doValidationCreate), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "validators", + .valueMethod_ = byRef(&doValidators), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "validator_list_sites", + .valueMethod_ = byRef(&doValidatorListSites), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "validator_info", + .valueMethod_ = byRef(&doValidatorInfo), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, + {.name_ = "vault_info", + .valueMethod_ = byRef(&doVaultInfo), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "wallet_propose", + .valueMethod_ = byRef(&doWalletPropose), + .role_ = Role::ADMIN, + .condition_ = NO_CONDITION}, // Event methods - {"subscribe", byRef(&doSubscribe), Role::USER, NO_CONDITION}, - {"unsubscribe", byRef(&doUnsubscribe), Role::USER, NO_CONDITION}, + {.name_ = "subscribe", + .valueMethod_ = byRef(&doSubscribe), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, + {.name_ = "unsubscribe", + .valueMethod_ = byRef(&doUnsubscribe), + .role_ = Role::USER, + .condition_ = NO_CONDITION}, }; class HandlerTable @@ -273,5 +486,4 @@ getHandlerNames() return HandlerTable::instance().getHandlerNames(); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/Handler.h b/src/xrpld/rpc/detail/Handler.h index 3628962a69..d249409ffe 100644 --- a/src/xrpld/rpc/detail/Handler.h +++ b/src/xrpld/rpc/detail/Handler.h @@ -12,8 +12,7 @@ namespace Json { class Object; } // namespace Json -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { // Under what condition can we call this RPC? enum Condition { @@ -111,5 +110,4 @@ conditionMet(Condition condition_required, T& context) return rpcSUCCESS; } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/LegacyPathFind.cpp b/src/xrpld/rpc/detail/LegacyPathFind.cpp index 396b9a8112..11debe00c1 100644 --- a/src/xrpld/rpc/detail/LegacyPathFind.cpp +++ b/src/xrpld/rpc/detail/LegacyPathFind.cpp @@ -9,8 +9,7 @@ #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { LegacyPathFind::LegacyPathFind(bool isAdmin, Application& app) { @@ -48,5 +47,4 @@ LegacyPathFind::~LegacyPathFind() std::atomic LegacyPathFind::inProgress(0); -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/MPTokenIssuanceID.cpp b/src/xrpld/rpc/detail/MPTokenIssuanceID.cpp index 7ce08d11ea..8af745122a 100644 --- a/src/xrpld/rpc/detail/MPTokenIssuanceID.cpp +++ b/src/xrpld/rpc/detail/MPTokenIssuanceID.cpp @@ -16,9 +16,7 @@ #include #include -namespace xrpl { - -namespace RPC { +namespace xrpl::RPC { bool canHaveMPTokenIssuanceID( @@ -69,5 +67,4 @@ insertMPTokenIssuanceID( response[jss::mpt_issuance_id] = to_string(result.value()); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/PathRequest.h b/src/xrpld/rpc/detail/PathRequest.h index 3c8f89f5fe..046c643a84 100644 --- a/src/xrpld/rpc/detail/PathRequest.h +++ b/src/xrpld/rpc/detail/PathRequest.h @@ -57,7 +57,7 @@ public: PathRequestManager&, beast::Journal journal); - ~PathRequest(); + ~PathRequest() override; bool isNew(); diff --git a/src/xrpld/rpc/detail/PathRequestManager.cpp b/src/xrpld/rpc/detail/PathRequestManager.cpp index b5707b22de..7508884be1 100644 --- a/src/xrpld/rpc/detail/PathRequestManager.cpp +++ b/src/xrpld/rpc/detail/PathRequestManager.cpp @@ -149,17 +149,16 @@ PathRequestManager::updateAll(std::shared_ptr const& inLedger) // Remove any dangling weak pointers or weak // pointers that refer to this path request. - auto ret = std::remove_if( - requests_.begin(), requests_.end(), [&removed, &request](auto const& wl) { - auto r = wl.lock(); + auto ret = std::ranges::remove_if(requests_, [&removed, &request](auto const& wl) { + auto r = wl.lock(); - if (r && r != request) - return false; - ++removed; - return true; - }); + if (r && r != request) + return false; + ++removed; + return true; + }); - requests_.erase(ret, requests_.end()); + requests_.erase(ret.begin(), ret.end()); } mustBreak = !newRequests && app_.getLedgerMaster().isNewPathRequest(); @@ -218,7 +217,7 @@ PathRequestManager::insertPathRequest(PathRequest::pointer const& req) // Insert after any older unserviced requests but before // any serviced requests - auto ret = std::find_if(requests_.begin(), requests_.end(), [](auto const& wl) { + auto ret = std::ranges::find_if(requests_, [](auto const& wl) { auto r = wl.lock(); // We come before handled requests diff --git a/src/xrpld/rpc/detail/Pathfinder.cpp b/src/xrpld/rpc/detail/Pathfinder.cpp index 18847433d5..a31d4522a7 100644 --- a/src/xrpld/rpc/detail/Pathfinder.cpp +++ b/src/xrpld/rpc/detail/Pathfinder.cpp @@ -564,10 +564,8 @@ Pathfinder::rankPaths( // width of path // length of path // A better PathRank is lower, best are sorted to the beginning. - std::sort( - rankedPaths.begin(), - rankedPaths.end(), - [&](Pathfinder::PathRank const& a, Pathfinder::PathRank const& b) { + std::ranges::sort( + rankedPaths, [&](Pathfinder::PathRank const& a, Pathfinder::PathRank const& b) { // 1) Higher quality (lower cost) is better if (!convert_all_ && a.quality != b.quality) return a.quality < b.quality; @@ -1160,9 +1158,9 @@ Pathfinder::addLink( if (!candidates.empty()) { - std::sort( - candidates.begin(), - candidates.end(), + std::ranges::sort( + candidates, + std::bind( compareAccountCandidate, mLedger->seq(), diff --git a/src/xrpld/rpc/detail/RPCCall.cpp b/src/xrpld/rpc/detail/RPCCall.cpp index 818e62e168..749b66791e 100644 --- a/src/xrpld/rpc/detail/RPCCall.cpp +++ b/src/xrpld/rpc/detail/RPCCall.cpp @@ -1273,74 +1273,212 @@ public: // Request-response methods // - Returns an error, or the request. // - To modify the method, provide a new method in the request. - {"account_currencies", &RPCParser::parseAccountCurrencies, 1, 3}, - {"account_info", &RPCParser::parseAccountItems, 1, 3}, - {"account_lines", &RPCParser::parseAccountLines, 1, 5}, - {"account_channels", &RPCParser::parseAccountChannels, 1, 3}, - {"account_nfts", &RPCParser::parseAccountItems, 1, 5}, - {"account_objects", &RPCParser::parseAccountItems, 1, 5}, - {"account_offers", &RPCParser::parseAccountItems, 1, 4}, - {"account_tx", &RPCParser::parseAccountTransactions, 1, 8}, - {"amm_info", &RPCParser::parseAsIs, 1, 2}, - {"vault_info", &RPCParser::parseVault, 1, 2}, - {"book_changes", &RPCParser::parseLedgerId, 1, 1}, - {"book_offers", &RPCParser::parseBookOffers, 2, 7}, - {"can_delete", &RPCParser::parseCanDelete, 0, 1}, - {"channel_authorize", &RPCParser::parseChannelAuthorize, 3, 4}, - {"channel_verify", &RPCParser::parseChannelVerify, 4, 4}, - {"connect", &RPCParser::parseConnect, 1, 2}, - {"consensus_info", &RPCParser::parseAsIs, 0, 0}, - {"deposit_authorized", &RPCParser::parseDepositAuthorized, 2, 11}, - {"feature", &RPCParser::parseFeature, 0, 2}, - {"fetch_info", &RPCParser::parseFetchInfo, 0, 1}, - {"gateway_balances", &RPCParser::parseGatewayBalances, 1, -1}, - {"get_counts", &RPCParser::parseGetCounts, 0, 1}, - {"json", &RPCParser::parseJson, 2, 2}, - {"json2", &RPCParser::parseJson2, 1, 1}, - {"ledger", &RPCParser::parseLedger, 0, 2}, - {"ledger_accept", &RPCParser::parseAsIs, 0, 0}, - {"ledger_closed", &RPCParser::parseAsIs, 0, 0}, - {"ledger_current", &RPCParser::parseAsIs, 0, 0}, - {"ledger_entry", &RPCParser::parseLedgerEntry, 1, 2}, - {"ledger_header", &RPCParser::parseLedgerId, 1, 1}, - {"ledger_request", &RPCParser::parseLedgerId, 1, 1}, - {"log_level", &RPCParser::parseLogLevel, 0, 2}, - {"logrotate", &RPCParser::parseAsIs, 0, 0}, - {"manifest", &RPCParser::parseManifest, 1, 1}, - {"owner_info", &RPCParser::parseAccountItems, 1, 3}, - {"peers", &RPCParser::parseAsIs, 0, 0}, - {"ping", &RPCParser::parseAsIs, 0, 0}, - {"print", &RPCParser::parseAsIs, 0, 1}, + {.name = "account_currencies", + .parse = &RPCParser::parseAccountCurrencies, + .minParams = 1, + .maxParams = 3}, + {.name = "account_info", + .parse = &RPCParser::parseAccountItems, + .minParams = 1, + .maxParams = 3}, + {.name = "account_lines", + .parse = &RPCParser::parseAccountLines, + .minParams = 1, + .maxParams = 5}, + {.name = "account_channels", + .parse = &RPCParser::parseAccountChannels, + .minParams = 1, + .maxParams = 3}, + {.name = "account_nfts", + .parse = &RPCParser::parseAccountItems, + .minParams = 1, + .maxParams = 5}, + {.name = "account_objects", + .parse = &RPCParser::parseAccountItems, + .minParams = 1, + .maxParams = 5}, + {.name = "account_offers", + .parse = &RPCParser::parseAccountItems, + .minParams = 1, + .maxParams = 4}, + {.name = "account_tx", + .parse = &RPCParser::parseAccountTransactions, + .minParams = 1, + .maxParams = 8}, + {.name = "amm_info", .parse = &RPCParser::parseAsIs, .minParams = 1, .maxParams = 2}, + {.name = "vault_info", .parse = &RPCParser::parseVault, .minParams = 1, .maxParams = 2}, + {.name = "book_changes", + .parse = &RPCParser::parseLedgerId, + .minParams = 1, + .maxParams = 1}, + {.name = "book_offers", + .parse = &RPCParser::parseBookOffers, + .minParams = 2, + .maxParams = 7}, + {.name = "can_delete", + .parse = &RPCParser::parseCanDelete, + .minParams = 0, + .maxParams = 1}, + {.name = "channel_authorize", + .parse = &RPCParser::parseChannelAuthorize, + .minParams = 3, + .maxParams = 4}, + {.name = "channel_verify", + .parse = &RPCParser::parseChannelVerify, + .minParams = 4, + .maxParams = 4}, + {.name = "connect", .parse = &RPCParser::parseConnect, .minParams = 1, .maxParams = 2}, + {.name = "consensus_info", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "deposit_authorized", + .parse = &RPCParser::parseDepositAuthorized, + .minParams = 2, + .maxParams = 11}, + {.name = "feature", .parse = &RPCParser::parseFeature, .minParams = 0, .maxParams = 2}, + {.name = "fetch_info", + .parse = &RPCParser::parseFetchInfo, + .minParams = 0, + .maxParams = 1}, + {.name = "gateway_balances", + .parse = &RPCParser::parseGatewayBalances, + .minParams = 1, + .maxParams = -1}, + {.name = "get_counts", + .parse = &RPCParser::parseGetCounts, + .minParams = 0, + .maxParams = 1}, + {.name = "json", .parse = &RPCParser::parseJson, .minParams = 2, .maxParams = 2}, + {.name = "json2", .parse = &RPCParser::parseJson2, .minParams = 1, .maxParams = 1}, + {.name = "ledger", .parse = &RPCParser::parseLedger, .minParams = 0, .maxParams = 2}, + {.name = "ledger_accept", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "ledger_closed", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "ledger_current", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "ledger_entry", + .parse = &RPCParser::parseLedgerEntry, + .minParams = 1, + .maxParams = 2}, + {.name = "ledger_header", + .parse = &RPCParser::parseLedgerId, + .minParams = 1, + .maxParams = 1}, + {.name = "ledger_request", + .parse = &RPCParser::parseLedgerId, + .minParams = 1, + .maxParams = 1}, + {.name = "log_level", + .parse = &RPCParser::parseLogLevel, + .minParams = 0, + .maxParams = 2}, + {.name = "logrotate", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "manifest", + .parse = &RPCParser::parseManifest, + .minParams = 1, + .maxParams = 1}, + {.name = "owner_info", + .parse = &RPCParser::parseAccountItems, + .minParams = 1, + .maxParams = 3}, + {.name = "peers", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "ping", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "print", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 1}, // { "profile", &RPCParser::parseProfile, 1, 9 // }, - {"random", &RPCParser::parseAsIs, 0, 0}, - {"peer_reservations_add", &RPCParser::parsePeerReservationsAdd, 1, 2}, - {"peer_reservations_del", &RPCParser::parsePeerReservationsDel, 1, 1}, - {"peer_reservations_list", &RPCParser::parseAsIs, 0, 0}, - {"ripple_path_find", &RPCParser::parseRipplePathFind, 1, 2}, - {"server_definitions", &RPCParser::parseServerDefinitions, 0, 1}, - {"server_info", &RPCParser::parseServerInfo, 0, 1}, - {"server_state", &RPCParser::parseServerInfo, 0, 1}, - {"sign", &RPCParser::parseSignSubmit, 2, 4}, - {"sign_for", &RPCParser::parseSignFor, 3, 4}, - {"stop", &RPCParser::parseAsIs, 0, 0}, - {"simulate", &RPCParser::parseSimulate, 1, 2}, - {"submit", &RPCParser::parseSignSubmit, 1, 4}, - {"submit_multisigned", &RPCParser::parseSubmitMultiSigned, 1, 1}, - {"transaction_entry", &RPCParser::parseTransactionEntry, 2, 2}, - {"tx", &RPCParser::parseTx, 1, 4}, - {"tx_history", &RPCParser::parseTxHistory, 1, 1}, - {"unl_list", &RPCParser::parseAsIs, 0, 0}, - {"validation_create", &RPCParser::parseValidationCreate, 0, 1}, - {"validator_info", &RPCParser::parseAsIs, 0, 0}, - {"version", &RPCParser::parseAsIs, 0, 0}, - {"wallet_propose", &RPCParser::parseWalletPropose, 0, 1}, - {"internal", &RPCParser::parseInternal, 1, -1}, + {.name = "random", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "peer_reservations_add", + .parse = &RPCParser::parsePeerReservationsAdd, + .minParams = 1, + .maxParams = 2}, + {.name = "peer_reservations_del", + .parse = &RPCParser::parsePeerReservationsDel, + .minParams = 1, + .maxParams = 1}, + {.name = "peer_reservations_list", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "ripple_path_find", + .parse = &RPCParser::parseRipplePathFind, + .minParams = 1, + .maxParams = 2}, + {.name = "server_definitions", + .parse = &RPCParser::parseServerDefinitions, + .minParams = 0, + .maxParams = 1}, + {.name = "server_info", + .parse = &RPCParser::parseServerInfo, + .minParams = 0, + .maxParams = 1}, + {.name = "server_state", + .parse = &RPCParser::parseServerInfo, + .minParams = 0, + .maxParams = 1}, + {.name = "sign", .parse = &RPCParser::parseSignSubmit, .minParams = 2, .maxParams = 4}, + {.name = "sign_for", .parse = &RPCParser::parseSignFor, .minParams = 3, .maxParams = 4}, + {.name = "stop", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "simulate", + .parse = &RPCParser::parseSimulate, + .minParams = 1, + .maxParams = 2}, + {.name = "submit", + .parse = &RPCParser::parseSignSubmit, + .minParams = 1, + .maxParams = 4}, + {.name = "submit_multisigned", + .parse = &RPCParser::parseSubmitMultiSigned, + .minParams = 1, + .maxParams = 1}, + {.name = "transaction_entry", + .parse = &RPCParser::parseTransactionEntry, + .minParams = 2, + .maxParams = 2}, + {.name = "tx", .parse = &RPCParser::parseTx, .minParams = 1, .maxParams = 4}, + {.name = "tx_history", + .parse = &RPCParser::parseTxHistory, + .minParams = 1, + .maxParams = 1}, + {.name = "unl_list", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "validation_create", + .parse = &RPCParser::parseValidationCreate, + .minParams = 0, + .maxParams = 1}, + {.name = "validator_info", + .parse = &RPCParser::parseAsIs, + .minParams = 0, + .maxParams = 0}, + {.name = "version", .parse = &RPCParser::parseAsIs, .minParams = 0, .maxParams = 0}, + {.name = "wallet_propose", + .parse = &RPCParser::parseWalletPropose, + .minParams = 0, + .maxParams = 1}, + {.name = "internal", + .parse = &RPCParser::parseInternal, + .minParams = 1, + .maxParams = -1}, // Event methods - {"path_find", &RPCParser::parseEvented, -1, -1}, - {"subscribe", &RPCParser::parseEvented, -1, -1}, - {"unsubscribe", &RPCParser::parseEvented, -1, -1}, + {.name = "path_find", + .parse = &RPCParser::parseEvented, + .minParams = -1, + .maxParams = -1}, + {.name = "subscribe", + .parse = &RPCParser::parseEvented, + .minParams = -1, + .maxParams = -1}, + {.name = "unsubscribe", + .parse = &RPCParser::parseEvented, + .minParams = -1, + .maxParams = -1}, }; auto const count = jvParams.size(); @@ -1436,8 +1574,8 @@ struct RPCCallImp // Parse reply JLOG(j.debug()) << "RPC reply: " << strData << std::endl; - if (strData.find("Unable to parse request") == 0 || - strData.find(jss::invalid_API_version.c_str()) == 0) + if (strData.starts_with("Unable to parse request") || + strData.starts_with(jss::invalid_API_version.c_str())) Throw(strData); Json::Reader reader; Json::Value jvReply; @@ -1514,6 +1652,7 @@ rpcCmdToJson( } else if (jvRequest.isArray()) { + // NOLINTNEXTLINE(modernize-use-ranges) std::for_each(jvRequest.begin(), jvRequest.end(), insert_api_version); } diff --git a/src/xrpld/rpc/detail/RPCHandler.cpp b/src/xrpld/rpc/detail/RPCHandler.cpp index 718758fc04..cbd08a2677 100644 --- a/src/xrpld/rpc/detail/RPCHandler.cpp +++ b/src/xrpld/rpc/detail/RPCHandler.cpp @@ -23,8 +23,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { namespace { @@ -235,5 +234,4 @@ roleRequired(unsigned int version, bool betaEnabled, std::string const& method) return handler->role_; } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/RPCHelpers.cpp b/src/xrpld/rpc/detail/RPCHelpers.cpp index 782d8c986e..1bf6d32bf9 100644 --- a/src/xrpld/rpc/detail/RPCHelpers.cpp +++ b/src/xrpld/rpc/detail/RPCHelpers.cpp @@ -43,8 +43,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { std::uint64_t getStartHint(std::shared_ptr const& sle, AccountID const& accountID) @@ -471,5 +470,4 @@ parseSubUnsubJson( return rpcSUCCESS; } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/RPCLedgerHelpers.cpp b/src/xrpld/rpc/detail/RPCLedgerHelpers.cpp index ecc42be3e1..0934289226 100644 --- a/src/xrpld/rpc/detail/RPCLedgerHelpers.cpp +++ b/src/xrpld/rpc/detail/RPCLedgerHelpers.cpp @@ -26,8 +26,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { namespace { @@ -493,5 +492,4 @@ getOrAcquireLedger(RPC::JsonContext const& context) RPC::make_error(rpcNOT_READY, "findCreate failed to return an inbound ledger")); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/RPCSub.cpp b/src/xrpld/rpc/detail/RPCSub.cpp index ad336c1837..f9cd860908 100644 --- a/src/xrpld/rpc/detail/RPCSub.cpp +++ b/src/xrpld/rpc/detail/RPCSub.cpp @@ -35,15 +35,15 @@ public: boost::asio::io_context& io_context, JobQueue& jobQueue, std::string const& strUrl, - std::string const& strUsername, - std::string const& strPassword, + std::string strUsername, + std::string strPassword, ServiceRegistry& registry) : RPCSub(source) , m_io_context(io_context) , m_jobQueue(jobQueue) , mUrl(strUrl) - , mUsername(strUsername) - , mPassword(strPassword) + , mUsername(std::move(strUsername)) + , mPassword(std::move(strPassword)) , j_(registry.getJournal("RPCSub")) , logs_(registry.getLogs()) { @@ -79,7 +79,7 @@ public: << " ssl= " << (mSSL ? "yes" : "no") << " path='" << mPath << "'"; } - ~RPCSubImp() = default; + ~RPCSubImp() override = default; void send(Json::Value const& jvObj, bool broadcast) override @@ -89,7 +89,7 @@ public: auto jm = broadcast ? j_.debug() : j_.info(); JLOG(jm) << "RPCCall::fromNetwork push: " << jvObj; - mDeque.push_back(std::make_pair(mSeq++, jvObj)); + mDeque.emplace_back(mSeq++, jvObj); if (!mSending) { diff --git a/src/xrpld/rpc/detail/Role.cpp b/src/xrpld/rpc/detail/Role.cpp index 8878434827..325b7eb3c6 100644 --- a/src/xrpld/rpc/detail/Role.cpp +++ b/src/xrpld/rpc/detail/Role.cpp @@ -209,7 +209,7 @@ extractIpAddrFromField(std::string_view field) // We may have an IPv6 address in square brackets. Scan up to the // closing square bracket. - auto const closeBracket = std::find_if_not(ret.begin(), ret.end(), [](unsigned char c) { + auto const closeBracket = std::ranges::find_if_not(ret, [](unsigned char c) { return std::isxdigit(c) || c == ':' || c == '.' || c == ' '; }); @@ -229,8 +229,8 @@ extractIpAddrFromField(std::string_view field) // then there cannot be an appended port. In that case we're done. { // Skip any leading hex digits. - auto const colon = std::find_if_not( - ret.begin(), ret.end(), [](unsigned char c) { return std::isxdigit(c) || c == ' '; }); + auto const colon = std::ranges::find_if_not( + ret, [](unsigned char c) { return std::isxdigit(c) || c == ' '; }); // If the string starts with optional hex digits followed by a colon // it's an IVv6 address. We're done. diff --git a/src/xrpld/rpc/detail/ServerHandler.cpp b/src/xrpld/rpc/detail/ServerHandler.cpp index 2006af7932..db6dad2f1c 100644 --- a/src/xrpld/rpc/detail/ServerHandler.cpp +++ b/src/xrpld/rpc/detail/ServerHandler.cpp @@ -110,7 +110,7 @@ authorized(Port const& port, std::map const& h) return true; auto const it = h.find("authorization"); - if ((it == h.end()) || (it->second.substr(0, 6) != "Basic ")) + if ((it == h.end()) || (!it->second.starts_with("Basic "))) return false; std::string strUserPass64 = it->second.substr(6); boost::trim(strUserPass64); @@ -277,9 +277,8 @@ build_map(boost::beast::http::fields const& h) // key cannot be a std::string_view because it needs to be used in // map and along with iterators std::string key(e.name_string()); - std::transform(key.begin(), key.end(), key.begin(), [](auto kc) { - return std::tolower(static_cast(kc)); - }); + std::ranges::transform( + key, key.begin(), [](auto kc) { return std::tolower(static_cast(kc)); }); c[key] = e.value(); } return c; @@ -475,18 +474,18 @@ ServerHandler::processSession( else { RPC::JsonContext context{ - {app_.getJournal("RPCHandler"), - app_, - loadType, - app_.getOPs(), - app_.getLedgerMaster(), - is->getConsumer(), - role, - coro, - is, - apiVersion}, + {.j = app_.getJournal("RPCHandler"), + .app = app_, + .loadType = loadType, + .netOps = app_.getOPs(), + .ledgerMaster = app_.getLedgerMaster(), + .consumer = is->getConsumer(), + .role = role, + .coro = coro, + .infoSub = is, + .apiVersion = apiVersion}, jv, - {is->user(), is->forwarded_for()}}; + {.user = is->user(), .forwardedFor = is->forwarded_for()}}; auto start = std::chrono::system_clock::now(); RPC::doCommand(context, jr[jss::result]); @@ -858,18 +857,18 @@ ServerHandler::processRequest( Resource::Charge loadType = Resource::feeReferenceRPC; RPC::JsonContext context{ - {m_journal, - app_, - loadType, - m_networkOPs, - app_.getLedgerMaster(), - usage, - role, - coro, - InfoSub::pointer(), - apiVersion}, + {.j = m_journal, + .app = app_, + .loadType = loadType, + .netOps = m_networkOPs, + .ledgerMaster = app_.getLedgerMaster(), + .consumer = usage, + .role = role, + .coro = coro, + .infoSub = InfoSub::pointer(), + .apiVersion = apiVersion}, params, - {user, forwardedFor}}; + {.user = user, .forwardedFor = forwardedFor}}; Json::Value result; auto start = std::chrono::system_clock::now(); @@ -1232,9 +1231,8 @@ setup_Client(ServerHandler::Setup& setup) static void setup_Overlay(ServerHandler::Setup& setup) { - auto const iter = std::find_if(setup.ports.cbegin(), setup.ports.cend(), [](Port const& port) { - return port.protocol.count("peer") != 0; - }); + auto const iter = std::ranges::find_if( + setup.ports, [](Port const& port) { return port.protocol.count("peer") != 0; }); if (iter == setup.ports.cend()) { setup.overlay = {}; diff --git a/src/xrpld/rpc/detail/Status.cpp b/src/xrpld/rpc/detail/Status.cpp index d03046f04b..c622b9a7e2 100644 --- a/src/xrpld/rpc/detail/Status.cpp +++ b/src/xrpld/rpc/detail/Status.cpp @@ -9,8 +9,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { std::string Status::codeString() const @@ -86,5 +85,4 @@ Status::toString() const return ""; } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/TransactionSign.cpp b/src/xrpld/rpc/detail/TransactionSign.cpp index d8d965c9f0..92b6d73050 100644 --- a/src/xrpld/rpc/detail/TransactionSign.cpp +++ b/src/xrpld/rpc/detail/TransactionSign.cpp @@ -62,8 +62,7 @@ #include #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { namespace detail { // Used to pass extra parameters used when returning a @@ -1106,15 +1105,14 @@ sortAndValidateSigners(STArray& signers, AccountID const& signingForID) return RPC::make_param_error("Signers array may not be empty."); // Signers must be sorted by Account. - std::sort(signers.begin(), signers.end(), [](STObject const& a, STObject const& b) { + std::ranges::sort(signers, [](STObject const& a, STObject const& b) { return (a[sfAccount] < b[sfAccount]); }); // Signers may not contain any duplicates. - auto const dupIter = std::adjacent_find( - signers.begin(), signers.end(), [](STObject const& a, STObject const& b) { - return (a[sfAccount] == b[sfAccount]); - }); + auto const dupIter = std::ranges::adjacent_find( + signers, + [](STObject const& a, STObject const& b) { return (a[sfAccount] == b[sfAccount]); }); if (dupIter != signers.end()) { @@ -1125,8 +1123,7 @@ sortAndValidateSigners(STArray& signers, AccountID const& signingForID) } // An account may not sign for itself. - if (signers.end() != - std::find_if(signers.begin(), signers.end(), [&signingForID](STObject const& elem) { + if (signers.end() != std::ranges::find_if(signers, [&signingForID](STObject const& elem) { return elem[sfAccount] == signingForID; })) { @@ -1391,7 +1388,7 @@ transactionSubmitMultiSigned( return RPC::make_param_error("tx_json.Signers array may not be empty."); // The Signers array may only contain Signer objects. - if (std::find_if_not(signers.begin(), signers.end(), [](STObject const& obj) { + if (std::ranges::find_if_not(signers, [](STObject const& obj) { return ( // A Signer object always contains these fields and no // others. @@ -1428,5 +1425,4 @@ transactionSubmitMultiSigned( return transactionFormatResultImpl(txn.second, apiVersion); } -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/detail/TrustLine.h b/src/xrpld/rpc/detail/TrustLine.h index f3bf397400..59fa2e73f3 100644 --- a/src/xrpld/rpc/detail/TrustLine.h +++ b/src/xrpld/rpc/detail/TrustLine.h @@ -32,6 +32,10 @@ enum class LineDirection : bool { incoming = false, outgoing = true }; */ class TrustLineBase { +public: + TrustLineBase& + operator=(TrustLineBase const&) = delete; + protected: // This class should not be instantiated directly. Use one of the derived // classes. @@ -39,8 +43,6 @@ protected: ~TrustLineBase() = default; TrustLineBase(TrustLineBase const&) = default; - TrustLineBase& - operator=(TrustLineBase const&) = delete; TrustLineBase(TrustLineBase&&) = default; public: diff --git a/src/xrpld/rpc/detail/Tuning.h b/src/xrpld/rpc/detail/Tuning.h index 59994b1660..eb3cfa0ebf 100644 --- a/src/xrpld/rpc/detail/Tuning.h +++ b/src/xrpld/rpc/detail/Tuning.h @@ -1,11 +1,8 @@ #pragma once -namespace xrpl { -namespace RPC { - /** Tuned constants. */ /** @{ */ -namespace Tuning { +namespace xrpl::RPC::Tuning { /** Represents RPC limit parameter values that have a min, default and max. */ struct LimitRange @@ -14,31 +11,31 @@ struct LimitRange }; /** Limits for the account_lines command. */ -static LimitRange constexpr accountLines = {10, 200, 400}; +static LimitRange constexpr accountLines = {.rmin = 10, .rDefault = 200, .rmax = 400}; /** Limits for the account_channels command. */ -static LimitRange constexpr accountChannels = {10, 200, 400}; +static LimitRange constexpr accountChannels = {.rmin = 10, .rDefault = 200, .rmax = 400}; /** Limits for the account_objects command. */ -static LimitRange constexpr accountObjects = {10, 200, 400}; +static LimitRange constexpr accountObjects = {.rmin = 10, .rDefault = 200, .rmax = 400}; /** Limits for the account_offers command. */ -static LimitRange constexpr accountOffers = {10, 200, 400}; +static LimitRange constexpr accountOffers = {.rmin = 10, .rDefault = 200, .rmax = 400}; /** Limits for the account_tx command. */ -static LimitRange constexpr accountTx = {10, 200, 400}; +static LimitRange constexpr accountTx = {.rmin = 10, .rDefault = 200, .rmax = 400}; /** Limits for the book_offers command. */ -static LimitRange constexpr bookOffers = {1, 60, 100}; +static LimitRange constexpr bookOffers = {.rmin = 1, .rDefault = 60, .rmax = 100}; /** Limits for the no_ripple_check command. */ -static LimitRange constexpr noRippleCheck = {10, 300, 400}; +static LimitRange constexpr noRippleCheck = {.rmin = 10, .rDefault = 300, .rmax = 400}; /** Limits for the account_nftokens command, in pages. */ -static LimitRange constexpr accountNFTokens = {20, 100, 400}; +static LimitRange constexpr accountNFTokens = {.rmin = 20, .rDefault = 100, .rmax = 400}; /** Limits for the nft_buy_offers & nft_sell_offers commands. */ -static LimitRange constexpr nftOffers = {50, 250, 500}; +static LimitRange constexpr nftOffers = {.rmin = 50, .rDefault = 250, .rmax = 500}; static int constexpr defaultAutoFillFeeMultiplier = 10; static int constexpr defaultAutoFillFeeDivisor = 1; @@ -66,8 +63,5 @@ static int constexpr max_src_cur = 18; /** Maximum number of auto source currencies in a path find request. */ static int constexpr max_auto_src_cur = 88; -} // namespace Tuning +} // namespace xrpl::RPC::Tuning /** @} */ - -} // namespace RPC -} // namespace xrpl diff --git a/src/xrpld/rpc/handlers/account/AccountChannels.cpp b/src/xrpld/rpc/handlers/account/AccountChannels.cpp index 03a383452b..1fa492a3c0 100644 --- a/src/xrpld/rpc/handlers/account/AccountChannels.cpp +++ b/src/xrpld/rpc/handlers/account/AccountChannels.cpp @@ -114,7 +114,7 @@ doAccountChannels(RPC::JsonContext& context) AccountID const& accountID; std::optional const& raDstAccount; }; - VisitData visitData = {{}, accountID, raDstAccount}; + VisitData visitData = {.items = {}, .accountID = accountID, .raDstAccount = raDstAccount}; visitData.items.reserve(limit); uint256 startAfter = beast::zero; std::uint64_t startHint = 0; diff --git a/src/xrpld/rpc/handlers/account/AccountLines.cpp b/src/xrpld/rpc/handlers/account/AccountLines.cpp index 3b5329f83c..5a879f0cbe 100644 --- a/src/xrpld/rpc/handlers/account/AccountLines.cpp +++ b/src/xrpld/rpc/handlers/account/AccountLines.cpp @@ -138,7 +138,12 @@ doAccountLines(RPC::JsonContext& context) bool ignoreDefault; uint32_t foundCount; }; - VisitData visitData = {{}, accountID, raPeerAccount, ignoreDefault, 0}; + VisitData visitData = { + .items = {}, + .accountID = accountID, + .raPeerAccount = raPeerAccount, + .ignoreDefault = ignoreDefault, + .foundCount = 0}; uint256 startAfter = beast::zero; std::uint64_t startHint = 0; diff --git a/src/xrpld/rpc/handlers/account/AccountObjects.cpp b/src/xrpld/rpc/handlers/account/AccountObjects.cpp index 7a567be758..5b172cd4c3 100644 --- a/src/xrpld/rpc/handlers/account/AccountObjects.cpp +++ b/src/xrpld/rpc/handlers/account/AccountObjects.cpp @@ -51,7 +51,7 @@ getAccountObjects( auto typeMatchesFilter = [](std::vector const& typeFilter, LedgerEntryType ledgerType) { - auto it = std::find(typeFilter.begin(), typeFilter.end(), ledgerType); + auto it = std::ranges::find(typeFilter, ledgerType); return it != typeFilter.end(); }; @@ -262,18 +262,19 @@ doAccountObjects(RPC::JsonContext& context) Json::StaticString name; LedgerEntryType type; } static constexpr deletionBlockers[] = { - {jss::check, ltCHECK}, - {jss::escrow, ltESCROW}, - {jss::nft_page, ltNFTOKEN_PAGE}, - {jss::payment_channel, ltPAYCHAN}, - {jss::state, ltRIPPLE_STATE}, - {jss::xchain_owned_claim_id, ltXCHAIN_OWNED_CLAIM_ID}, - {jss::xchain_owned_create_account_claim_id, ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID}, - {jss::bridge, ltBRIDGE}, - {jss::mpt_issuance, ltMPTOKEN_ISSUANCE}, - {jss::mptoken, ltMPTOKEN}, - {jss::permissioned_domain, ltPERMISSIONED_DOMAIN}, - {jss::vault, ltVAULT}, + {.name = jss::check, .type = ltCHECK}, + {.name = jss::escrow, .type = ltESCROW}, + {.name = jss::nft_page, .type = ltNFTOKEN_PAGE}, + {.name = jss::payment_channel, .type = ltPAYCHAN}, + {.name = jss::state, .type = ltRIPPLE_STATE}, + {.name = jss::xchain_owned_claim_id, .type = ltXCHAIN_OWNED_CLAIM_ID}, + {.name = jss::xchain_owned_create_account_claim_id, + .type = ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID}, + {.name = jss::bridge, .type = ltBRIDGE}, + {.name = jss::mpt_issuance, .type = ltMPTOKEN_ISSUANCE}, + {.name = jss::mptoken, .type = ltMPTOKEN}, + {.name = jss::permissioned_domain, .type = ltPERMISSIONED_DOMAIN}, + {.name = jss::vault, .type = ltVAULT}, }; typeFilter.emplace(); diff --git a/src/xrpld/rpc/handlers/account/AccountTx.cpp b/src/xrpld/rpc/handlers/account/AccountTx.cpp index 61839524dc..c01fc044e7 100644 --- a/src/xrpld/rpc/handlers/account/AccountTx.cpp +++ b/src/xrpld/rpc/handlers/account/AccountTx.cpp @@ -73,7 +73,7 @@ parseLedgerArgs(RPC::Context& context, Json::Value const& params) ? params[jss::ledger_index_max].asUInt() : UINT32_MAX; - return LedgerRange{min, max}; + return LedgerRange{.min = min, .max = max}; } if (params.isMember(jss::ledger_hash)) { @@ -205,7 +205,7 @@ getLedgerRange(RPC::Context& context, std::optional const& ledg if (status) return status; } - return LedgerRange{uLedgerMin, uLedgerMax}; + return LedgerRange{.min = uLedgerMin, .max = uLedgerMax}; } std::pair @@ -227,7 +227,11 @@ doAccountTxHelp(RPC::Context& context, AccountTxArgs const& args) result.marker = args.marker; RelationalDatabase::AccountTxPageOptions const options = { - args.account, result.ledgerRange, result.marker, args.limit, isUnlimited(context.role)}; + .account = args.account, + .ledgerRange = result.ledgerRange, + .marker = result.marker, + .limit = args.limit, + .bAdmin = isUnlimited(context.role)}; auto& db = context.app.getRelationalDatabase(); @@ -442,7 +446,8 @@ doAccountTx(RPC::JsonContext& context) status.inject(response); return response; } - args.marker = {token[jss::ledger].asUInt(), token[jss::seq].asUInt()}; + args.marker = { + .ledgerSeq = token[jss::ledger].asUInt(), .txnSeq = token[jss::seq].asUInt()}; } auto res = doAccountTxHelp(context, args); diff --git a/src/xrpld/rpc/handlers/admin/peer/PeerReservationsAdd.cpp b/src/xrpld/rpc/handlers/admin/peer/PeerReservationsAdd.cpp index f70b8214df..6aaa5cc78a 100644 --- a/src/xrpld/rpc/handlers/admin/peer/PeerReservationsAdd.cpp +++ b/src/xrpld/rpc/handlers/admin/peer/PeerReservationsAdd.cpp @@ -56,8 +56,8 @@ doPeerReservationsAdd(RPC::JsonContext& context) return rpcError(rpcPUBLIC_MALFORMED); PublicKey const& nodeId = *optPk; - auto const previous = - context.app.getPeerReservations().insert_or_assign(PeerReservation{nodeId, desc}); + auto const previous = context.app.getPeerReservations().insert_or_assign( + PeerReservation{.nodeId = nodeId, .description = desc}); Json::Value result{Json::objectValue}; if (previous) diff --git a/src/xrpld/rpc/handlers/ledger/Ledger.h b/src/xrpld/rpc/handlers/ledger/Ledger.h index f024241546..db70f35904 100644 --- a/src/xrpld/rpc/handlers/ledger/Ledger.h +++ b/src/xrpld/rpc/handlers/ledger/Ledger.h @@ -16,8 +16,7 @@ namespace Json { class Object; } // namespace Json -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { struct JsonContext; @@ -56,5 +55,4 @@ private: int options_ = 0; }; -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC diff --git a/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp b/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp index d686c9c8c0..4de75da1b0 100644 --- a/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp +++ b/src/xrpld/rpc/handlers/ledger/LedgerEntry.cpp @@ -843,10 +843,14 @@ doLedgerEntry(RPC::JsonContext& context) #undef LEDGER_ENTRY #pragma pop_macro("LEDGER_ENTRY") - {jss::index, parseIndex, ltANY}, + {.fieldName = jss::index, .parseFunction = parseIndex, .expectedType = ltANY}, // aliases - {jss::account_root, parseAccountRoot, ltACCOUNT_ROOT}, - {jss::ripple_state, parseRippleState, ltRIPPLE_STATE}, + {.fieldName = jss::account_root, + .parseFunction = parseAccountRoot, + .expectedType = ltACCOUNT_ROOT}, + {.fieldName = jss::ripple_state, + .parseFunction = parseRippleState, + .expectedType = ltRIPPLE_STATE}, }); auto const hasMoreThanOneMember = [&]() { diff --git a/src/xrpld/rpc/handlers/ledger/LedgerEntryHelpers.h b/src/xrpld/rpc/handlers/ledger/LedgerEntryHelpers.h index 4a4366556d..d0d643661d 100644 --- a/src/xrpld/rpc/handlers/ledger/LedgerEntryHelpers.h +++ b/src/xrpld/rpc/handlers/ledger/LedgerEntryHelpers.h @@ -12,9 +12,7 @@ #include -namespace xrpl { - -namespace LedgerEntryHelpers { +namespace xrpl::LedgerEntryHelpers { inline Unexpected missingFieldError(Json::StaticString const field, std::optional err = std::nullopt) @@ -283,6 +281,4 @@ parseBridgeFields(Json::Value const& params) *lockingChainDoor, lockingChainIssue, *issuingChainDoor, issuingChainIssue); } -} // namespace LedgerEntryHelpers - -} // namespace xrpl +} // namespace xrpl::LedgerEntryHelpers diff --git a/src/xrpld/rpc/handlers/orderbook/AMMInfo.cpp b/src/xrpld/rpc/handlers/orderbook/AMMInfo.cpp index 2a93f1122a..c093c5fcf5 100644 --- a/src/xrpld/rpc/handlers/orderbook/AMMInfo.cpp +++ b/src/xrpld/rpc/handlers/orderbook/AMMInfo.cpp @@ -160,7 +160,8 @@ doAMMInfo(RPC::JsonContext& context) asset2 = (*amm)[sfAsset2]; } - return ValuesFromContextParams{accountID, *asset1, *asset2, amm}; + return ValuesFromContextParams{ + .accountID = accountID, .asset1 = *asset1, .asset2 = *asset2, .amm = amm}; }; auto const r = getValuesFromContextParams(); diff --git a/src/xrpld/rpc/handlers/orderbook/GetAggregatePrice.cpp b/src/xrpld/rpc/handlers/orderbook/GetAggregatePrice.cpp index 4b1af3a644..10359c810e 100644 --- a/src/xrpld/rpc/handlers/orderbook/GetAggregatePrice.cpp +++ b/src/xrpld/rpc/handlers/orderbook/GetAggregatePrice.cpp @@ -271,9 +271,8 @@ doGetAggregatePrice(RPC::JsonContext& context) iteratePriceData(context, sle, [&](STObject const& node) { auto const& series = node.getFieldArray(sfPriceDataSeries); // find the token pair entry with the price - if (auto iter = std::find_if( - series.begin(), - series.end(), + if (auto iter = std::ranges::find_if( + series, [&](STObject const& o) -> bool { return o.getFieldCurrency(sfBaseAsset).getText() == std::get(baseAsset) && diff --git a/src/xrpld/rpc/handlers/server_info/Version.h b/src/xrpld/rpc/handlers/server_info/Version.h index cda47792e8..233ae3e4d8 100644 --- a/src/xrpld/rpc/handlers/server_info/Version.h +++ b/src/xrpld/rpc/handlers/server_info/Version.h @@ -2,8 +2,7 @@ #include -namespace xrpl { -namespace RPC { +namespace xrpl::RPC { class VersionHandler { @@ -40,5 +39,4 @@ private: bool betaEnabled_; }; -} // namespace RPC -} // namespace xrpl +} // namespace xrpl::RPC From 45d4aacb53682afbf617f90bd9691b5eb136a2ef Mon Sep 17 00:00:00 2001 From: Jingchen Date: Tue, 21 Apr 2026 19:15:58 +0100 Subject: [PATCH 4/4] chore: Remove empty Taker.h (#6984) --- src/xrpld/app/tx/detail/Taker.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/xrpld/app/tx/detail/Taker.h diff --git a/src/xrpld/app/tx/detail/Taker.h b/src/xrpld/app/tx/detail/Taker.h deleted file mode 100644 index e69de29bb2..0000000000