From e92c5c45324e0a81dcb767f49922b6eb699eb2a6 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Mon, 18 May 2026 17:48:08 -0400 Subject: [PATCH] clean up structs --- include/xrpl/protocol/Indexes.h | 48 +++++++------------ .../xrpl/protocol/detail/ledger_entries.macro | 2 +- src/libxrpl/protocol/Indexes.cpp | 10 ++-- src/libxrpl/tx/Transactor.cpp | 4 +- src/libxrpl/tx/transactors/dex/AMMCreate.cpp | 2 +- .../tx/transactors/dex/OfferCreate.cpp | 4 +- .../tx/transactors/system/TicketCreate.cpp | 2 +- src/test/app/AccountDelete_test.cpp | 4 +- src/test/app/PermissionedDEX_test.cpp | 2 +- src/tests/libxrpl/tx/AccountSet.cpp | 6 +-- src/xrpld/app/ledger/detail/LocalTxs.cpp | 2 +- src/xrpld/app/misc/detail/TxQ.cpp | 2 +- 12 files changed, 36 insertions(+), 52 deletions(-) diff --git a/include/xrpl/protocol/Indexes.h b/include/xrpl/protocol/Indexes.h index 763658d906..175b5c7298 100644 --- a/include/xrpl/protocol/Indexes.h +++ b/include/xrpl/protocol/Indexes.h @@ -75,14 +75,8 @@ Keylet const& negativeUNL() noexcept; /** The beginning of an order book */ -struct BookT -{ - explicit BookT() = default; - - Keylet - operator()(Book const& b) const; -}; -static BookT const kBook{}; +Keylet +book(Book const& b); /** The index of a trust line for a given currency @@ -119,33 +113,23 @@ Keylet quality(Keylet const& k, std::uint64_t q) noexcept; /** The directory for the next lower quality */ -struct NextT -{ - explicit NextT() = default; - - Keylet - operator()(Keylet const& k) const; -}; -static NextT const kNext{}; +Keylet +next(Keylet const& k); /** A ticket belonging to an account */ -struct TicketT +/** @{ */ +Keylet +ticket(AccountID const& id, std::uint32_t ticketSeq); + +Keylet +ticket(AccountID const& id, SeqProxy ticketSeq); + +inline Keylet +ticket(uint256 const& key) { - explicit TicketT() = default; - - Keylet - operator()(AccountID const& id, std::uint32_t ticketSeq) const; - - Keylet - operator()(AccountID const& id, SeqProxy ticketSeq) const; - - Keylet - operator()(uint256 const& key) const - { - return {ltTICKET, key}; - } -}; -static TicketT const kTicket{}; + return {ltTICKET, key}; +} +/** @} */ /** A SignerList */ Keylet diff --git a/include/xrpl/protocol/detail/ledger_entries.macro b/include/xrpl/protocol/detail/ledger_entries.macro index 0b2b0a7bb6..0602caac8b 100644 --- a/include/xrpl/protocol/detail/ledger_entries.macro +++ b/include/xrpl/protocol/detail/ledger_entries.macro @@ -112,7 +112,7 @@ LEDGER_ENTRY(ltSIGNER_LIST, 0x0053, SignerList, signer_list, ({ /** A ledger object which describes a ticket. - \sa keylet::kTicket + \sa keylet::ticket */ LEDGER_ENTRY(ltTICKET, 0x0054, Ticket, ticket, ({ {sfAccount, SoeRequired}, diff --git a/src/libxrpl/protocol/Indexes.cpp b/src/libxrpl/protocol/Indexes.cpp index 021d20306d..e1a428a875 100644 --- a/src/libxrpl/protocol/Indexes.cpp +++ b/src/libxrpl/protocol/Indexes.cpp @@ -232,7 +232,7 @@ negativeUNL() noexcept } Keylet -BookT::operator()(Book const& b) const +book(Book const& b) { return {ltDIR_NODE, getBookBase(b)}; } @@ -285,20 +285,20 @@ quality(Keylet const& k, std::uint64_t q) noexcept } Keylet -NextT::operator()(Keylet const& k) const +next(Keylet const& k) { - XRPL_ASSERT(k.type == ltDIR_NODE, "xrpl::keylet::NextT::operator() : valid input type"); + XRPL_ASSERT(k.type == ltDIR_NODE, "xrpl::keylet::next : valid input type"); return {ltDIR_NODE, getQualityNext(k.key)}; } Keylet -TicketT::operator()(AccountID const& id, std::uint32_t ticketSeq) const +ticket(AccountID const& id, std::uint32_t ticketSeq) { return {ltTICKET, getTicketIndex(id, ticketSeq)}; } Keylet -TicketT::operator()(AccountID const& id, SeqProxy ticketSeq) const +ticket(AccountID const& id, SeqProxy ticketSeq) { return {ltTICKET, getTicketIndex(id, ticketSeq)}; } diff --git a/src/libxrpl/tx/Transactor.cpp b/src/libxrpl/tx/Transactor.cpp index 94db64a217..4d54bd3b73 100644 --- a/src/libxrpl/tx/Transactor.cpp +++ b/src/libxrpl/tx/Transactor.cpp @@ -492,7 +492,7 @@ Transactor::checkSeqProxy(ReadView const& view, STTx const& tx, beast::Journal j } // Transaction can never succeed if the Ticket is not in the ledger. - if (!view.exists(keylet::kTicket(id, tSeqProx))) + if (!view.exists(keylet::ticket(id, tSeqProx))) { JLOG(j.trace()) << "applyTransaction: ticket already used or never created " << "a_seq=" << aSeq << " t_seq=" << tSeqProx; @@ -557,7 +557,7 @@ Transactor::ticketDelete( { // Delete the Ticket, adjust the account root ticket count, and // reduce the owner count. - SLE::pointer const sleTicket = view.peek(keylet::kTicket(ticketIndex)); + SLE::pointer const sleTicket = view.peek(keylet::ticket(ticketIndex)); if (!sleTicket) { // LCOV_EXCL_START diff --git a/src/libxrpl/tx/transactors/dex/AMMCreate.cpp b/src/libxrpl/tx/transactors/dex/AMMCreate.cpp index 2b2ce5a798..fc69c55dd3 100644 --- a/src/libxrpl/tx/transactors/dex/AMMCreate.cpp +++ b/src/libxrpl/tx/transactors/dex/AMMCreate.cpp @@ -369,7 +369,7 @@ applyCreate(ApplyContext& ctx, Sandbox& sb, AccountID const& account, beast::Jou << lpTokens << " " << amount << " " << amount2; auto addOrderBook = [&](Asset const& assetIn, Asset const& assetOut, std::uint64_t uRate) { Book const book{assetIn, assetOut, std::nullopt}; - auto const dir = keylet::quality(keylet::kBook(book), uRate); + auto const dir = keylet::quality(keylet::book(book), uRate); if (auto const bookExisted = static_cast(sb.read(dir)); !bookExisted) ctx.registry.get().getOrderBookDB().addOrderBook(book); }; diff --git a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp index ae03a45ca7..02174d4759 100644 --- a/src/libxrpl/tx/transactors/dex/OfferCreate.cpp +++ b/src/libxrpl/tx/transactors/dex/OfferCreate.cpp @@ -559,7 +559,7 @@ OfferCreate::applyHybrid( // if offer is hybrid, need to also place into open offer dir Book const book{saTakerPays.asset(), saTakerGets.asset(), std::nullopt}; - auto dir = keylet::quality(keylet::kBook(book), getRate(saTakerGets, saTakerPays)); + auto dir = keylet::quality(keylet::book(book), getRate(saTakerGets, saTakerPays)); bool const bookExists = sb.exists(dir); auto const bookNode = sb.dirAppend(dir, offerKey, [&](SLE::ref sle) { @@ -871,7 +871,7 @@ OfferCreate::applyGuts(Sandbox& sb, Sandbox& sbCancel) // Hybrid domain offer - BookDirectory points to domain directory, // and AdditionalBooks field stores one entry that points to the open // directory - auto dir = keylet::quality(keylet::kBook(book), uRate); + auto dir = keylet::quality(keylet::book(book), uRate); bool const bookExisted = static_cast(sb.peek(dir)); auto setBookDir = [&](SLE::ref sle, std::optional const& maybeDomain) { diff --git a/src/libxrpl/tx/transactors/system/TicketCreate.cpp b/src/libxrpl/tx/transactors/system/TicketCreate.cpp index f442ac223b..067e5628fd 100644 --- a/src/libxrpl/tx/transactors/system/TicketCreate.cpp +++ b/src/libxrpl/tx/transactors/system/TicketCreate.cpp @@ -100,7 +100,7 @@ TicketCreate::doApply() for (std::uint32_t i = 0; i < ticketCount; ++i) { std::uint32_t const curTicketSeq = firstTicketSeq + i; - Keylet const ticketKeylet = keylet::kTicket(accountID_, curTicketSeq); + Keylet const ticketKeylet = keylet::ticket(accountID_, curTicketSeq); SLE::pointer const sleTicket = std::make_shared(ticketKeylet); sleTicket->setAccountID(sfAccount, accountID_); diff --git a/src/test/app/AccountDelete_test.cpp b/src/test/app/AccountDelete_test.cpp index 437cc65bf2..e1c14223b7 100644 --- a/src/test/app/AccountDelete_test.cpp +++ b/src/test/app/AccountDelete_test.cpp @@ -662,7 +662,7 @@ public: BEAST_EXPECT(closed->exists(keylet::account(bob.id()))); for (std::uint32_t i = 0; i < 250; ++i) { - BEAST_EXPECT(closed->exists(keylet::kTicket(bob.id(), ticketSeq + i))); + BEAST_EXPECT(closed->exists(keylet::ticket(bob.id(), ticketSeq + i))); } } @@ -681,7 +681,7 @@ public: BEAST_EXPECT(!closed->exists(keylet::account(bob.id()))); for (std::uint32_t i = 0; i < 250; ++i) { - BEAST_EXPECT(!closed->exists(keylet::kTicket(bob.id(), ticketSeq + i))); + BEAST_EXPECT(!closed->exists(keylet::ticket(bob.id(), ticketSeq + i))); } } } diff --git a/src/test/app/PermissionedDEX_test.cpp b/src/test/app/PermissionedDEX_test.cpp index be377c0c1d..a0f1f88163 100644 --- a/src/test/app/PermissionedDEX_test.cpp +++ b/src/test/app/PermissionedDEX_test.cpp @@ -140,7 +140,7 @@ class PermissionedDEX_test : public beast::unit_test::Suite static uint256 getBookDirKey(Book const& book, STAmount const& takerPays, STAmount const& takerGets) { - return keylet::quality(keylet::kBook(book), getRate(takerGets, takerPays)).key; + return keylet::quality(keylet::book(book), getRate(takerGets, takerPays)).key; } static std::optional diff --git a/src/tests/libxrpl/tx/AccountSet.cpp b/src/tests/libxrpl/tx/AccountSet.cpp index d00df152ae..20185e11a8 100644 --- a/src/tests/libxrpl/tx/AccountSet.cpp +++ b/src/tests/libxrpl/tx/AccountSet.cpp @@ -619,7 +619,7 @@ TEST(AccountSet, Ticket) // Verify alice has 1 owner object (the ticket) EXPECT_EQ(env.getAccountRoot(alice.id()).getOwnerCount(), 1u); // Verify ticket exists - EXPECT_TRUE(env.getClosedLedger().exists(keylet::kTicket(alice.id(), ticketSeq))); + EXPECT_TRUE(env.getClosedLedger().exists(keylet::ticket(alice.id(), ticketSeq))); // Try using a ticket that alice doesn't have EXPECT_EQ( @@ -629,7 +629,7 @@ TEST(AccountSet, Ticket) env.close(); // Verify ticket still exists - EXPECT_TRUE(env.getClosedLedger().exists(keylet::kTicket(alice.id(), ticketSeq))); + EXPECT_TRUE(env.getClosedLedger().exists(keylet::ticket(alice.id(), ticketSeq))); // Get alice's sequence before using the ticket std::uint32_t const aliceSeq = env.getAccountRoot(alice.id()).getSequence(); @@ -642,7 +642,7 @@ TEST(AccountSet, Ticket) // Verify ticket is consumed (no owner objects) EXPECT_EQ(env.getAccountRoot(alice.id()).getOwnerCount(), 0u); - EXPECT_FALSE(env.getClosedLedger().exists(keylet::kTicket(alice.id(), ticketSeq))); + EXPECT_FALSE(env.getClosedLedger().exists(keylet::ticket(alice.id(), ticketSeq))); // Verify alice's sequence did NOT advance (ticket use doesn't increment seq) EXPECT_EQ(env.getAccountRoot(alice.id()).getSequence(), aliceSeq); diff --git a/src/xrpld/app/ledger/detail/LocalTxs.cpp b/src/xrpld/app/ledger/detail/LocalTxs.cpp index d843acfe44..5bfe8684f0 100644 --- a/src/xrpld/app/ledger/detail/LocalTxs.cpp +++ b/src/xrpld/app/ledger/detail/LocalTxs.cpp @@ -163,7 +163,7 @@ public: // Ticket should have been created by now. Remove if ticket // does not exist. - return !view.exists(keylet::kTicket(acctID, seqProx)); + return !view.exists(keylet::ticket(acctID, seqProx)); }); } diff --git a/src/xrpld/app/misc/detail/TxQ.cpp b/src/xrpld/app/misc/detail/TxQ.cpp index 0f70f17046..2db847f24d 100644 --- a/src/xrpld/app/misc/detail/TxQ.cpp +++ b/src/xrpld/app/misc/detail/TxQ.cpp @@ -764,7 +764,7 @@ TxQ::apply( // If the transaction needs a Ticket is that Ticket in the ledger? SeqProxy const acctSeqProx = SeqProxy::sequence((*sleAccount)[sfSequence]); SeqProxy const txSeqProx = tx->getSeqProxy(); - if (txSeqProx.isTicket() && !view.exists(keylet::kTicket(account, txSeqProx))) + if (txSeqProx.isTicket() && !view.exists(keylet::ticket(account, txSeqProx))) { if (txSeqProx.value() < acctSeqProx.value()) {