From 6555001cd9f7c8e542f48cdc415b64406382f445 Mon Sep 17 00:00:00 2001 From: tequ Date: Thu, 19 Mar 2026 11:50:55 +0900 Subject: [PATCH] make sponsor helpers inline --- include/xrpl/ledger/SponsorHelpers.h | 61 ++++++++++++++++++++----- src/libxrpl/ledger/SponsorHelpers.cpp | 65 --------------------------- 2 files changed, 49 insertions(+), 77 deletions(-) delete mode 100644 src/libxrpl/ledger/SponsorHelpers.cpp diff --git a/include/xrpl/ledger/SponsorHelpers.h b/include/xrpl/ledger/SponsorHelpers.h index 500f25c654..3b9ae39a57 100644 --- a/include/xrpl/ledger/SponsorHelpers.h +++ b/include/xrpl/ledger/SponsorHelpers.h @@ -6,17 +6,33 @@ #include #include #include +#include namespace xrpl { -bool -isReserveSponsored(STTx const& tx); +inline bool +isReserveSponsored(STTx const& tx) +{ + return tx.getFieldU32(sfSponsorFlags) & spfSponsorReserve; +} -bool -isSponsorReserveCoSigning(STTx const& tx); +inline bool +isSponsorReserveCoSigning(STTx const& tx) +{ + if (!tx.isFieldPresent(sfSponsorSignature)) + return false; + return isReserveSponsored(tx); +} -std::optional -getTxReserveSponsorAccountID(STTx const& tx); +inline std::optional +getTxReserveSponsorAccountID(STTx const& tx) +{ + if (tx.isFieldPresent(sfSponsor) && isReserveSponsored(tx)) + { + return tx.getAccountID(sfSponsor); + } + return {}; +} inline std::shared_ptr getTxReserveSponsor(ApplyView& view, STTx const& tx) @@ -36,10 +52,15 @@ getTxReserveSponsor(ReadView const& view, STTx const& tx) return {}; } -std::optional +inline std::optional getLedgerEntryReserveSponsorAccountID( std::shared_ptr const& sle, - SF_ACCOUNT const& field = sfSponsor); + SF_ACCOUNT const& field = sfSponsor) +{ + if (sle->isFieldPresent(field)) + return sle->getAccountID(field); + return {}; +} inline std::shared_ptr getLedgerEntryReserveSponsor( @@ -65,13 +86,29 @@ getLedgerEntryReserveSponsor( return {}; } -void +inline void addSponsorToLedgerEntry( std::shared_ptr const& sle, std::shared_ptr const& sponsorSle, - SF_ACCOUNT const& field = sfSponsor); + SF_ACCOUNT const& field = sfSponsor) +{ + XRPL_ASSERT( + (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || + (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), + "addSponsorToLedgerEntry : Invalid field to the LedgerEntry"); + if (sponsorSle) + sle->setAccountID(field, sponsorSle->getAccountID(sfAccount)); +} -void -removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor); +inline void +removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field = sfSponsor) +{ + XRPL_ASSERT( + (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || + (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), + "removeSponsorFromLedgerEntry : Invalid field to the LedgerEntry"); + if (sle->isFieldPresent(field)) + sle->makeFieldAbsent(field); +} } // namespace xrpl diff --git a/src/libxrpl/ledger/SponsorHelpers.cpp b/src/libxrpl/ledger/SponsorHelpers.cpp deleted file mode 100644 index d86b7bfe3c..0000000000 --- a/src/libxrpl/ledger/SponsorHelpers.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include - -namespace xrpl { - -bool -isReserveSponsored(STTx const& tx) -{ - return tx.getFieldU32(sfSponsorFlags) & spfSponsorReserve; -} - -bool -isSponsorReserveCoSigning(STTx const& tx) -{ - if (!tx.isFieldPresent(sfSponsorSignature)) - return false; - return isReserveSponsored(tx); -} - -std::optional -getTxReserveSponsorAccountID(STTx const& tx) -{ - if (tx.isFieldPresent(sfSponsor) && isReserveSponsored(tx)) - { - return tx.getAccountID(sfSponsor); - } - return {}; -} - -std::optional -getLedgerEntryReserveSponsorAccountID( - std::shared_ptr const& sle, - SF_ACCOUNT const& field) -{ - if (sle->isFieldPresent(field)) - return sle->getAccountID(field); - return {}; -} - -void -addSponsorToLedgerEntry( - std::shared_ptr const& sle, - std::shared_ptr const& sponsorSle, - SF_ACCOUNT const& field) -{ - XRPL_ASSERT( - (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || - (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), - "addSponsorToLedgerEntry : Invalid field to the LedgerEntry"); - if (sponsorSle) - sle->setAccountID(field, sponsorSle->getAccountID(sfAccount)); -} - -void -removeSponsorFromLedgerEntry(std::shared_ptr const& sle, SF_ACCOUNT const& field) -{ - XRPL_ASSERT( - (sle->getType() == ltRIPPLE_STATE && (field == sfHighSponsor || field == sfLowSponsor)) || - (sle->getType() != ltRIPPLE_STATE && field == sfSponsor), - "removeSponsorFromLedgerEntry : Invalid field to the LedgerEntry"); - if (sle->isFieldPresent(field)) - sle->makeFieldAbsent(field); -} - -} // namespace xrpl