refactor: add rpcName to LEDGER_ENTRY macro (#5202)

The LEDGER_ENTRY macro now takes an additional parameter, which makes it easier to avoid missing including the new field in jss.h and to the list of account_objects/ledger_data filters.
This commit is contained in:
Mayukha Vadari
2025-01-02 11:54:36 -05:00
committed by tequ
parent 37614773bb
commit ac532d9d16
5 changed files with 78 additions and 131 deletions

View File

@@ -56,7 +56,7 @@ enum LedgerEntryType : std::uint16_t
#pragma push_macro("LEDGER_ENTRY") #pragma push_macro("LEDGER_ENTRY")
#undef LEDGER_ENTRY #undef LEDGER_ENTRY
#define LEDGER_ENTRY(tag, value, name, fields) tag = value, #define LEDGER_ENTRY(tag, value, name, rpcName, fields) tag = value,
#include <xrpl/protocol/detail/ledger_entries.macro> #include <xrpl/protocol/detail/ledger_entries.macro>

View File

@@ -21,6 +21,17 @@
#error "undefined macro: LEDGER_ENTRY" #error "undefined macro: LEDGER_ENTRY"
#endif #endif
#ifndef LEDGER_ENTRY_DUPLICATE
// The EXPAND macro is needed for Windows
// https://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly
#define EXPAND(x) x
// The `LEDGER_ENTRY_DUPLICATE macro is needed to avoid JSS conflicts
// Since some transactions and ledger entries have the same name (like `DepositPreauth`)
// The compiler won't accept two instances of `JSS(DepositPreauth)`
#define LEDGER_ENTRY_DUPLICATE(...) EXPAND(LEDGER_ENTRY(__VA_ARGS__))
#endif
/** /**
* These objects are listed in order of increasing ledger type ID. * These objects are listed in order of increasing ledger type ID.
* There are many gaps between these IDs. * There are many gaps between these IDs.
@@ -31,7 +42,7 @@
\sa keylet::nftoffer \sa keylet::nftoffer
*/ */
LEDGER_ENTRY(ltNFTOKEN_OFFER, 0x0037, NFTokenOffer, ({ LEDGER_ENTRY(ltNFTOKEN_OFFER, 0x0037, NFTokenOffer, nft_offer, ({
{sfOwner, soeREQUIRED}, {sfOwner, soeREQUIRED},
{sfNFTokenID, soeREQUIRED}, {sfNFTokenID, soeREQUIRED},
{sfAmount, soeREQUIRED}, {sfAmount, soeREQUIRED},
@@ -47,7 +58,7 @@ LEDGER_ENTRY(ltNFTOKEN_OFFER, 0x0037, NFTokenOffer, ({
\sa keylet::check \sa keylet::check
*/ */
LEDGER_ENTRY(ltCHECK, 0x0043, Check, ({ LEDGER_ENTRY(ltCHECK, 0x0043, Check, check, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfDestination, soeREQUIRED}, {sfDestination, soeREQUIRED},
{sfSendMax, soeREQUIRED}, {sfSendMax, soeREQUIRED},
@@ -66,7 +77,7 @@ LEDGER_ENTRY(ltCHECK, 0x0043, Check, ({
\sa keylet::hookDefinition \sa keylet::hookDefinition
*/ */
LEDGER_ENTRY(ltHOOK_DEFINITION, 'D', HookDefinition, ({ LEDGER_ENTRY(ltHOOK_DEFINITION, 'D', HookDefinition, hook_definition, ({
{sfHookHash, soeREQUIRED}, {sfHookHash, soeREQUIRED},
{sfHookOn, soeREQUIRED}, {sfHookOn, soeREQUIRED},
{sfHookCanEmit, soeOPTIONAL}, {sfHookCanEmit, soeOPTIONAL},
@@ -84,7 +95,7 @@ LEDGER_ENTRY(ltHOOK_DEFINITION, 'D', HookDefinition, ({
\sa keylet::emitted \sa keylet::emitted
*/ */
LEDGER_ENTRY(ltEMITTED_TXN, 'E', EmittedTxn, ({ LEDGER_ENTRY(ltEMITTED_TXN, 'E', EmittedTxn, emitted_txn, ({
{sfEmittedTxn, soeOPTIONAL}, {sfEmittedTxn, soeOPTIONAL},
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
})) }))
@@ -93,7 +104,7 @@ LEDGER_ENTRY(ltEMITTED_TXN, 'E', EmittedTxn, ({
\sa keylet::hook \sa keylet::hook
*/ */
LEDGER_ENTRY(ltHOOK, 'H', Hook, ({ LEDGER_ENTRY(ltHOOK, 'H', Hook, hook, ({
{sfAccount, soeOPTIONAL}, {sfAccount, soeOPTIONAL},
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
{sfPreviousTxnID, soeREQUIRED}, {sfPreviousTxnID, soeREQUIRED},
@@ -104,7 +115,7 @@ LEDGER_ENTRY(ltHOOK, 'H', Hook, ({
/** The ledger object which records the last (and largest) sequence for a validator list key /** The ledger object which records the last (and largest) sequence for a validator list key
* as used in the Import amendment * as used in the Import amendment
*/ */
LEDGER_ENTRY(ltIMPORT_VLSEQ, 0x0049, ImportVLSequence, ({ LEDGER_ENTRY(ltIMPORT_VLSEQ, 0x0049, ImportVLSequence, import_vlseq, ({
{sfPublicKey, soeREQUIRED}, {sfPublicKey, soeREQUIRED},
{sfImportSequence, soeREQUIRED}, {sfImportSequence, soeREQUIRED},
})) }))
@@ -115,7 +126,7 @@ LEDGER_ENTRY(ltIMPORT_VLSEQ, 0x0049, ImportVLSequence, ({
\sa keylet::negativeUNL \sa keylet::negativeUNL
*/ */
LEDGER_ENTRY(ltNEGATIVE_UNL, 0x004e, NegativeUNL, ({ LEDGER_ENTRY(ltNEGATIVE_UNL, 0x004e, NegativeUNL, nunl, ({
{sfDisabledValidators, soeOPTIONAL}, {sfDisabledValidators, soeOPTIONAL},
{sfValidatorToDisable, soeOPTIONAL}, {sfValidatorToDisable, soeOPTIONAL},
{sfValidatorToReEnable, soeOPTIONAL}, {sfValidatorToReEnable, soeOPTIONAL},
@@ -127,7 +138,7 @@ LEDGER_ENTRY(ltNEGATIVE_UNL, 0x004e, NegativeUNL, ({
\sa keylet::nftpage_min, keylet::nftpage_max, keylet::nftpage \sa keylet::nftpage_min, keylet::nftpage_max, keylet::nftpage
*/ */
LEDGER_ENTRY(ltNFTOKEN_PAGE, 0x0050, NFTokenPage, ({ LEDGER_ENTRY(ltNFTOKEN_PAGE, 0x0050, NFTokenPage, nft_page, ({
{sfPreviousPageMin, soeOPTIONAL}, {sfPreviousPageMin, soeOPTIONAL},
{sfNextPageMin, soeOPTIONAL}, {sfNextPageMin, soeOPTIONAL},
{sfNFTokens, soeREQUIRED}, {sfNFTokens, soeREQUIRED},
@@ -140,7 +151,7 @@ LEDGER_ENTRY(ltNFTOKEN_PAGE, 0x0050, NFTokenPage, ({
* *
* \sa keylet::UNLReport * \sa keylet::UNLReport
*/ */
LEDGER_ENTRY(ltUNL_REPORT, 0x0052, UNLReport, ({ LEDGER_ENTRY_DUPLICATE(ltUNL_REPORT, 0x0052, UNLReport, unl_report, ({
{sfImportVLKeys, soeOPTIONAL}, {sfImportVLKeys, soeOPTIONAL},
{sfActiveValidators, soeOPTIONAL}, {sfActiveValidators, soeOPTIONAL},
{sfPreviousTxnID, soeREQUIRED}, {sfPreviousTxnID, soeREQUIRED},
@@ -153,7 +164,7 @@ LEDGER_ENTRY(ltUNL_REPORT, 0x0052, UNLReport, ({
*/ */
// All fields are soeREQUIRED because there is always a SignerEntries. // All fields are soeREQUIRED because there is always a SignerEntries.
// If there are no SignerEntries the node is deleted. // If there are no SignerEntries the node is deleted.
LEDGER_ENTRY(ltSIGNER_LIST, 0x0053, SignerList, ({ LEDGER_ENTRY(ltSIGNER_LIST, 0x0053, SignerList, signer_list, ({
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
{sfSignerQuorum, soeREQUIRED}, {sfSignerQuorum, soeREQUIRED},
{sfSignerEntries, soeREQUIRED}, {sfSignerEntries, soeREQUIRED},
@@ -166,7 +177,7 @@ LEDGER_ENTRY(ltSIGNER_LIST, 0x0053, SignerList, ({
\sa keylet::ticket \sa keylet::ticket
*/ */
LEDGER_ENTRY(ltTICKET, 0x0054, Ticket, ({ LEDGER_ENTRY(ltTICKET, 0x0054, Ticket, ticket, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
{sfTicketSequence, soeREQUIRED}, {sfTicketSequence, soeREQUIRED},
@@ -178,7 +189,7 @@ LEDGER_ENTRY(ltTICKET, 0x0054, Ticket, ({
\sa keylet::uritoken \sa keylet::uritoken
*/ */
LEDGER_ENTRY(ltURI_TOKEN, 0x0055, URIToken, ({ LEDGER_ENTRY(ltURI_TOKEN, 0x0055, URIToken, uri_token, ({
{sfOwner, soeREQUIRED}, {sfOwner, soeREQUIRED},
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
{sfIssuer, soeREQUIRED}, {sfIssuer, soeREQUIRED},
@@ -194,7 +205,7 @@ LEDGER_ENTRY(ltURI_TOKEN, 0x0055, URIToken, ({
\sa keylet::account \sa keylet::account
*/ */
LEDGER_ENTRY(ltACCOUNT_ROOT, 0x0061, AccountRoot, ({ LEDGER_ENTRY(ltACCOUNT_ROOT, 0x0061, AccountRoot, account, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfSequence, soeREQUIRED}, {sfSequence, soeREQUIRED},
{sfBalance, soeREQUIRED}, {sfBalance, soeREQUIRED},
@@ -234,7 +245,7 @@ LEDGER_ENTRY(ltACCOUNT_ROOT, 0x0061, AccountRoot, ({
\sa keylet::page, keylet::quality, keylet::book, keylet::next and \sa keylet::page, keylet::quality, keylet::book, keylet::next and
keylet::ownerDir keylet::ownerDir
*/ */
LEDGER_ENTRY(ltDIR_NODE, 0x0064, DirectoryNode, ({ LEDGER_ENTRY(ltDIR_NODE, 0x0064, DirectoryNode, directory, ({
{sfOwner, soeOPTIONAL}, // for owner directories {sfOwner, soeOPTIONAL}, // for owner directories
{sfTakerPaysCurrency, soeOPTIONAL}, // order book directories {sfTakerPaysCurrency, soeOPTIONAL}, // order book directories
{sfTakerPaysIssuer, soeOPTIONAL}, // order book directories {sfTakerPaysIssuer, soeOPTIONAL}, // order book directories
@@ -257,7 +268,7 @@ LEDGER_ENTRY(ltDIR_NODE, 0x0064, DirectoryNode, ({
\sa keylet::amendments \sa keylet::amendments
*/ */
LEDGER_ENTRY(ltAMENDMENTS, 0x0066, Amendments, ({ LEDGER_ENTRY(ltAMENDMENTS, 0x0066, Amendments, amendments, ({
{sfAmendments, soeOPTIONAL}, // Enabled {sfAmendments, soeOPTIONAL}, // Enabled
{sfMajorities, soeOPTIONAL}, {sfMajorities, soeOPTIONAL},
{sfPreviousTxnID, soeOPTIONAL}, {sfPreviousTxnID, soeOPTIONAL},
@@ -272,7 +283,7 @@ LEDGER_ENTRY(ltAMENDMENTS, 0x0066, Amendments, ({
\sa keylet::skip \sa keylet::skip
*/ */
LEDGER_ENTRY(ltLEDGER_HASHES, 0x0068, LedgerHashes, ({ LEDGER_ENTRY(ltLEDGER_HASHES, 0x0068, LedgerHashes, hashes, ({
{sfFirstLedgerSequence, soeOPTIONAL}, {sfFirstLedgerSequence, soeOPTIONAL},
{sfLastLedgerSequence, soeOPTIONAL}, {sfLastLedgerSequence, soeOPTIONAL},
{sfHashes, soeREQUIRED}, {sfHashes, soeREQUIRED},
@@ -282,7 +293,7 @@ LEDGER_ENTRY(ltLEDGER_HASHES, 0x0068, LedgerHashes, ({
\sa keylet::bridge \sa keylet::bridge
*/ */
LEDGER_ENTRY(ltBRIDGE, 0x0069, Bridge, ({ LEDGER_ENTRY(ltBRIDGE, 0x0069, Bridge, bridge, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfSignatureReward, soeREQUIRED}, {sfSignatureReward, soeREQUIRED},
{sfMinAccountCreateAmount, soeOPTIONAL}, {sfMinAccountCreateAmount, soeOPTIONAL},
@@ -299,7 +310,7 @@ LEDGER_ENTRY(ltBRIDGE, 0x0069, Bridge, ({
\sa keylet::offer \sa keylet::offer
*/ */
LEDGER_ENTRY(ltOFFER, 0x006f, Offer, ({ LEDGER_ENTRY(ltOFFER, 0x006f, Offer, offer, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfSequence, soeREQUIRED}, {sfSequence, soeREQUIRED},
{sfTakerPays, soeREQUIRED}, {sfTakerPays, soeREQUIRED},
@@ -316,7 +327,7 @@ LEDGER_ENTRY(ltOFFER, 0x006f, Offer, ({
\sa keylet::depositPreauth \sa keylet::depositPreauth
*/ */
LEDGER_ENTRY(ltDEPOSIT_PREAUTH, 0x0070, DepositPreauth, ({ LEDGER_ENTRY_DUPLICATE(ltDEPOSIT_PREAUTH, 0x0070, DepositPreauth, deposit_preauth, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfAuthorize, soeOPTIONAL}, {sfAuthorize, soeOPTIONAL},
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
@@ -329,7 +340,7 @@ LEDGER_ENTRY(ltDEPOSIT_PREAUTH, 0x0070, DepositPreauth, ({
\sa keylet::xChainClaimID \sa keylet::xChainClaimID
*/ */
LEDGER_ENTRY(ltXCHAIN_OWNED_CLAIM_ID, 0x0071, XChainOwnedClaimID, ({ LEDGER_ENTRY(ltXCHAIN_OWNED_CLAIM_ID, 0x0071, XChainOwnedClaimID, xchain_owned_claim_id, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfXChainBridge, soeREQUIRED}, {sfXChainBridge, soeREQUIRED},
{sfXChainClaimID, soeREQUIRED}, {sfXChainClaimID, soeREQUIRED},
@@ -347,7 +358,7 @@ LEDGER_ENTRY(ltXCHAIN_OWNED_CLAIM_ID, 0x0071, XChainOwnedClaimID, ({
\sa keylet::line \sa keylet::line
*/ */
LEDGER_ENTRY(ltRIPPLE_STATE, 0x0072, RippleState, ({ LEDGER_ENTRY(ltRIPPLE_STATE, 0x0072, RippleState, state, ({
{sfBalance, soeREQUIRED}, {sfBalance, soeREQUIRED},
{sfLowLimit, soeREQUIRED}, {sfLowLimit, soeREQUIRED},
{sfHighLimit, soeREQUIRED}, {sfHighLimit, soeREQUIRED},
@@ -369,7 +380,7 @@ LEDGER_ENTRY(ltRIPPLE_STATE, 0x0072, RippleState, ({
\sa keylet::fees \sa keylet::fees
*/ */
LEDGER_ENTRY(ltFEE_SETTINGS, 0x0073, FeeSettings, ({ LEDGER_ENTRY(ltFEE_SETTINGS, 0x0073, FeeSettings, fee, ({
// Old version uses raw numbers // Old version uses raw numbers
{sfBaseFee, soeOPTIONAL}, {sfBaseFee, soeOPTIONAL},
{sfReferenceFeeUnits, soeOPTIONAL}, {sfReferenceFeeUnits, soeOPTIONAL},
@@ -390,7 +401,7 @@ LEDGER_ENTRY(ltFEE_SETTINGS, 0x0073, FeeSettings, ({
\sa keylet::xChainCreateAccountClaimID \sa keylet::xChainCreateAccountClaimID
*/ */
LEDGER_ENTRY(ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID, 0x0074, XChainOwnedCreateAccountClaimID, ({ LEDGER_ENTRY(ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID, 0x0074, XChainOwnedCreateAccountClaimID, xchain_owned_create_account_claim_id, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfXChainBridge, soeREQUIRED}, {sfXChainBridge, soeREQUIRED},
{sfXChainAccountCreateCount, soeREQUIRED}, {sfXChainAccountCreateCount, soeREQUIRED},
@@ -404,7 +415,7 @@ LEDGER_ENTRY(ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID, 0x0074, XChainOwnedCreateAc
\sa keylet::escrow \sa keylet::escrow
*/ */
LEDGER_ENTRY(ltESCROW, 0x0075, Escrow, ({ LEDGER_ENTRY(ltESCROW, 0x0075, Escrow, escrow, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfDestination, soeREQUIRED}, {sfDestination, soeREQUIRED},
{sfAmount, soeREQUIRED}, {sfAmount, soeREQUIRED},
@@ -424,7 +435,7 @@ LEDGER_ENTRY(ltESCROW, 0x0075, Escrow, ({
\sa keylet::hookState \sa keylet::hookState
*/ */
LEDGER_ENTRY(ltHOOK_STATE, 0x0076, HookState, ({ LEDGER_ENTRY(ltHOOK_STATE, 0x0076, HookState, hook_state, ({
{sfOwnerNode, soeREQUIRED}, {sfOwnerNode, soeREQUIRED},
{sfHookStateKey, soeREQUIRED}, {sfHookStateKey, soeREQUIRED},
{sfHookStateData, soeREQUIRED}, {sfHookStateData, soeREQUIRED},
@@ -434,7 +445,7 @@ LEDGER_ENTRY(ltHOOK_STATE, 0x0076, HookState, ({
\sa keylet::payChan \sa keylet::payChan
*/ */
LEDGER_ENTRY(ltPAYCHAN, 0x0078, PayChannel, ({ LEDGER_ENTRY(ltPAYCHAN, 0x0078, PayChannel, payment_channel, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfDestination, soeREQUIRED}, {sfDestination, soeREQUIRED},
{sfAmount, soeREQUIRED}, {sfAmount, soeREQUIRED},
@@ -456,7 +467,7 @@ LEDGER_ENTRY(ltPAYCHAN, 0x0078, PayChannel, ({
\sa keylet::amm \sa keylet::amm
*/ */
LEDGER_ENTRY(ltAMM, 0x0079, AMM, ({ LEDGER_ENTRY(ltAMM, 0x0079, AMM, amm, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfTradingFee, soeDEFAULT}, {sfTradingFee, soeDEFAULT},
{sfVoteSlots, soeOPTIONAL}, {sfVoteSlots, soeOPTIONAL},
@@ -472,7 +483,7 @@ LEDGER_ENTRY(ltAMM, 0x0079, AMM, ({
/** A ledger object which tracks Oracle /** A ledger object which tracks Oracle
\sa keylet::oracle \sa keylet::oracle
*/ */
LEDGER_ENTRY(ltORACLE, 0x0080, Oracle, ({ LEDGER_ENTRY(ltORACLE, 0x0080, Oracle, oracle, ({
{sfOwner, soeREQUIRED}, {sfOwner, soeREQUIRED},
{sfProvider, soeREQUIRED}, {sfProvider, soeREQUIRED},
{sfPriceDataSeries, soeREQUIRED}, {sfPriceDataSeries, soeREQUIRED},
@@ -487,7 +498,7 @@ LEDGER_ENTRY(ltORACLE, 0x0080, Oracle, ({
/** A ledger object which tracks MPTokenIssuance /** A ledger object which tracks MPTokenIssuance
\sa keylet::mptIssuance \sa keylet::mptIssuance
*/ */
LEDGER_ENTRY(ltMPTOKEN_ISSUANCE, 0x007e, MPTokenIssuance, ({ LEDGER_ENTRY(ltMPTOKEN_ISSUANCE, 0x007e, MPTokenIssuance, mpt_issuance, ({
{sfIssuer, soeREQUIRED}, {sfIssuer, soeREQUIRED},
{sfSequence, soeREQUIRED}, {sfSequence, soeREQUIRED},
{sfTransferFee, soeDEFAULT}, {sfTransferFee, soeDEFAULT},
@@ -503,7 +514,7 @@ LEDGER_ENTRY(ltMPTOKEN_ISSUANCE, 0x007e, MPTokenIssuance, ({
/** A ledger object which tracks MPToken /** A ledger object which tracks MPToken
\sa keylet::mptoken \sa keylet::mptoken
*/ */
LEDGER_ENTRY(ltMPTOKEN, 0x007f, MPToken, ({ LEDGER_ENTRY(ltMPTOKEN, 0x007f, MPToken, mptoken, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfMPTokenIssuanceID, soeREQUIRED}, {sfMPTokenIssuanceID, soeREQUIRED},
{sfMPTAmount, soeDEFAULT}, {sfMPTAmount, soeDEFAULT},
@@ -515,7 +526,7 @@ LEDGER_ENTRY(ltMPTOKEN, 0x007f, MPToken, ({
/** A ledger object which tracks Credential /** A ledger object which tracks Credential
\sa keylet::credential \sa keylet::credential
*/ */
LEDGER_ENTRY(ltCREDENTIAL, 0x0081, Credential, ({ LEDGER_ENTRY(ltCREDENTIAL, 0x0081, Credential, credential, ({
{sfSubject, soeREQUIRED}, {sfSubject, soeREQUIRED},
{sfIssuer, soeREQUIRED}, {sfIssuer, soeREQUIRED},
{sfCredentialType, soeREQUIRED}, {sfCredentialType, soeREQUIRED},
@@ -531,7 +542,7 @@ LEDGER_ENTRY(ltCREDENTIAL, 0x0081, Credential, ({
\sa keylet::did \sa keylet::did
*/ */
LEDGER_ENTRY(ltDID, 0x008D, DID, ({ LEDGER_ENTRY(ltDID, 0x008D, DID, did, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfDIDDocument, soeOPTIONAL}, {sfDIDDocument, soeOPTIONAL},
{sfURI, soeOPTIONAL}, {sfURI, soeOPTIONAL},
@@ -540,3 +551,6 @@ LEDGER_ENTRY(ltDID, 0x008D, DID, ({
{sfPreviousTxnID, soeREQUIRED}, {sfPreviousTxnID, soeREQUIRED},
{sfPreviousTxnLgrSeq, soeREQUIRED}, {sfPreviousTxnLgrSeq, soeREQUIRED},
})) }))
#undef EXPAND
#undef LEDGER_ENTRY_DUPLICATE

View File

@@ -45,10 +45,7 @@ namespace jss {
JSS(AL_size); // out: GetCounts JSS(AL_size); // out: GetCounts
JSS(AL_hit_rate); // out: GetCounts JSS(AL_hit_rate); // out: GetCounts
JSS(Account); // in: TransactionSign; field. JSS(Account); // in: TransactionSign; field.
JSS(AccountRoot); // ledger type.
JSS(AMM); // ledger type
JSS(AMMID); // field JSS(AMMID); // field
JSS(Amendments); // ledger type.
JSS(Amount); // in: TransactionSign; field. JSS(Amount); // in: TransactionSign; field.
JSS(Authorize); // field JSS(Authorize); // field
JSS(Amount2); // in/out: AMM IOU/XRP pool, deposit, withdraw amount JSS(Amount2); // in/out: AMM IOU/XRP pool, deposit, withdraw amount
@@ -62,20 +59,13 @@ JSS(BaseAsset); // in: Oracle
JSS(BidMax); // in: AMM Bid JSS(BidMax); // in: AMM Bid
JSS(BidMin); // in: AMM Bid JSS(BidMin); // in: AMM Bid
JSS(Blob); JSS(Blob);
JSS(Bridge); // ledger type.
JSS(Check); // ledger type.
JSS(ClearFlag); // field. JSS(ClearFlag); // field.
JSS(CreateCode); // field. JSS(CreateCode); // field.
JSS(Credential); // ledger type.
JSS(DID); // ledger type.
JSS(DeliverMax); // out: alias to Amount JSS(DeliverMax); // out: alias to Amount
JSS(DeliverMin); // in: TransactionSign JSS(DeliverMin); // in: TransactionSign
JSS(Destination); // in: TransactionSign; field. JSS(Destination); // in: TransactionSign; field.
JSS(DirectoryNode); // ledger type.
JSS(EPrice); // in: AMM Deposit option JSS(EPrice); // in: AMM Deposit option
JSS(Escrow); // ledger type.
JSS(Fee); // in/out: TransactionSign; field. JSS(Fee); // in/out: TransactionSign; field.
JSS(FeeSettings); // ledger type.
JSS(FIELDS); // out: RPC server_definitions JSS(FIELDS); // out: RPC server_definitions
JSS(Flags); // in/out: TransactionSign; field. JSS(Flags); // in/out: TransactionSign; field.
JSS(GenesisMints); JSS(GenesisMints);
@@ -100,64 +90,44 @@ JSS(isSigningField); // out: RPC server_definitions
// matches definitions.json format // matches definitions.json format
JSS(isVLEncoded); // out: RPC server_definitions JSS(isVLEncoded); // out: RPC server_definitions
// matches definitions.json format // matches definitions.json format
JSS(ImportVLSequence);
JSS(Invalid); // JSS(Invalid); //
JSS(Issuer); // in: Credential transactions JSS(Issuer); // in: Credential transactions
JSS(InvoiceID); // field JSS(InvoiceID); // field
JSS(LastLedgerSequence); // in: TransactionSign; field JSS(LastLedgerSequence); // in: TransactionSign; field
JSS(LastUpdateTime); // field. JSS(LastUpdateTime); // field.
JSS(LedgerHashes); // ledger type.
JSS(LimitAmount); // field. JSS(LimitAmount); // field.
JSS(MPToken); // ledger type.
JSS(MPTokenIssuance); // ledger type.
JSS(NetworkID); // field. JSS(NetworkID); // field.
JSS(NFTokenOffer); // ledger type.
JSS(NFTokenPage); // ledger type.
JSS(LPTokenOut); // in: AMM Liquidity Provider deposit tokens JSS(LPTokenOut); // in: AMM Liquidity Provider deposit tokens
JSS(LPTokenIn); // in: AMM Liquidity Provider withdraw tokens JSS(LPTokenIn); // in: AMM Liquidity Provider withdraw tokens
JSS(LPToken); // out: AMM Liquidity Provider tokens info JSS(LPToken); // out: AMM Liquidity Provider tokens info
JSS(Offer); // ledger type.
JSS(OfferSequence); // field. JSS(OfferSequence); // field.
JSS(Oracle); // ledger type.
JSS(OracleDocumentID); // field JSS(OracleDocumentID); // field
JSS(Owner); // field JSS(Owner); // field
JSS(Paths); // in/out: TransactionSign JSS(Paths); // in/out: TransactionSign
JSS(PayChannel); // ledger type.
JSS(PriceDataSeries); // field. JSS(PriceDataSeries); // field.
JSS(PriceData); // field. JSS(PriceData); // field.
JSS(Provider); // field. JSS(Provider); // field.
JSS(QuoteAsset); // in: Oracle. JSS(QuoteAsset); // in: Oracle.
JSS(RippleState); // ledger type.
JSS(SLE_hit_rate); // out: GetCounts. JSS(SLE_hit_rate); // out: GetCounts.
JSS(Scale); // field. JSS(Scale); // field.
JSS(SettleDelay); // in: TransactionSign JSS(SettleDelay); // in: TransactionSign
JSS(SendMax); // in: TransactionSign JSS(SendMax); // in: TransactionSign
JSS(Sequence); // in/out: TransactionSign; field. JSS(Sequence); // in/out: TransactionSign; field.
JSS(SetFlag); // field. JSS(SetFlag); // field.
JSS(Hook); // ledger type.
JSS(HookDefinition); // ledger type.
JSS(HookState); // ledger type.
JSS(HookStateData); // field. JSS(HookStateData); // field.
JSS(HookStateKey); // field. JSS(HookStateKey); // field.
JSS(EmittedTxn); // ledger type.
JSS(SignerList); // ledger type.
JSS(SigningPubKey); // field. JSS(SigningPubKey); // field.
JSS(Subject); // in: Credential transactions JSS(Subject); // in: Credential transactions
JSS(TakerGets); // field. JSS(TakerGets); // field.
JSS(TakerPays); // field. JSS(TakerPays); // field.
JSS(Ticket); // ledger type.
JSS(TxnSignature); // field. JSS(TxnSignature); // field.
JSS(TradingFee); // in/out: AMM trading fee JSS(TradingFee); // in/out: AMM trading fee
JSS(TransactionType); // in: TransactionSign. JSS(TransactionType); // in: TransactionSign.
JSS(TransferRate); // in: TransferRate. JSS(TransferRate); // in: TransferRate.
JSS(URI); // field. JSS(URI); // field.
JSS(URIToken); // out: LedgerEntry
JSS(VoteSlots); // out: AMM Vote JSS(VoteSlots); // out: AMM Vote
JSS(XChainOwnedClaimID); // ledger type.
JSS(XChainOwnedCreateAccountClaimID); // ledger type.
JSS(aborted); // out: InboundLedger JSS(aborted); // out: InboundLedger
JSS(accepted); // out: LedgerToJson, OwnerInfo, SubmitTransaction JSS(accepted); // out: LedgerToJson, OwnerInfo, SubmitTransaction
JSS(account); // in/out: many
JSS(accountState); // out: LedgerToJson JSS(accountState); // out: LedgerToJson
JSS(accountTreeHash); // out: ledger/Ledger.cpp JSS(accountTreeHash); // out: ledger/Ledger.cpp
JSS(account_data); // out: AccountInfo JSS(account_data); // out: AccountInfo
@@ -186,8 +156,6 @@ JSS(affected); // out: AcceptedLedgerTx
JSS(age); // out: NetworkOPs, Peers JSS(age); // out: NetworkOPs, Peers
JSS(alternatives); // out: PathRequest, RipplePathFind JSS(alternatives); // out: PathRequest, RipplePathFind
JSS(amendment_blocked); // out: NetworkOPs JSS(amendment_blocked); // out: NetworkOPs
JSS(amendments); // in: AccountObjects, out: NetworkOPs
JSS(amm); // out: amm_info
JSS(amm_account); // in: amm_info JSS(amm_account); // in: amm_info
JSS(amount); // out: AccountChannels, amm_info JSS(amount); // out: AccountChannels, amm_info
JSS(amount2); // out: amm_info JSS(amount2); // out: amm_info
@@ -229,7 +197,6 @@ JSS(books); // in: Subscribe, Unsubscribe
JSS(both); // in: Subscribe, Unsubscribe JSS(both); // in: Subscribe, Unsubscribe
JSS(both_sides); // in: Subscribe, Unsubscribe JSS(both_sides); // in: Subscribe, Unsubscribe
JSS(broadcast); // out: SubmitTransaction JSS(broadcast); // out: SubmitTransaction
JSS(bridge); // in: LedgerEntry
JSS(bridge_account); // in: LedgerEntry JSS(bridge_account); // in: LedgerEntry
JSS(build_path); // in: TransactionSign JSS(build_path); // in: TransactionSign
JSS(build_version); // out: NetworkOPs JSS(build_version); // out: NetworkOPs
@@ -237,14 +204,11 @@ JSS(bytes_written);
JSS(cancel_after); // out: AccountChannels JSS(cancel_after); // out: AccountChannels
JSS(can_delete); // out: CanDelete JSS(can_delete); // out: CanDelete
JSS(mpt_amount); // out: mpt_holders JSS(mpt_amount); // out: mpt_holders
JSS(mpt_issuance); // in: LedgerEntry, AccountObjects
JSS(mpt_issuance_id); // in: Payment, mpt_holders JSS(mpt_issuance_id); // in: Payment, mpt_holders
JSS(mptoken); // in: LedgerEntry, AccountObjects
JSS(mptoken_index); // out: mpt_holders JSS(mptoken_index); // out: mpt_holders
JSS(changes); // out: BookChanges JSS(changes); // out: BookChanges
JSS(channel_id); // out: AccountChannels JSS(channel_id); // out: AccountChannels
JSS(channels); // out: AccountChannels JSS(channels); // out: AccountChannels
JSS(check); // in: AccountObjects
JSS(check_nodes); // in: LedgerCleaner JSS(check_nodes); // in: LedgerCleaner
JSS(clear); // in/out: FetchInfo JSS(clear); // in/out: FetchInfo
JSS(close); // out: BookChanges JSS(close); // out: BookChanges
@@ -273,7 +237,6 @@ JSS(converge_time_s); // out: NetworkOPs
JSS(cookie); // out: NetworkOPs JSS(cookie); // out: NetworkOPs
JSS(count); // in: AccountTx*, ValidatorList JSS(count); // in: AccountTx*, ValidatorList
JSS(counters); // in/out: retrieve counters JSS(counters); // in/out: retrieve counters
JSS(credential); // in: LedgerEntry Credential
JSS(credentials); // in: deposit_authorized JSS(credentials); // in: deposit_authorized
JSS(credential_type); // in: LedgerEntry DepositPreauth JSS(credential_type); // in: LedgerEntry DepositPreauth
JSS(coins); JSS(coins);
@@ -299,7 +262,6 @@ JSS(debug_signing); // in: TransactionSign
JSS(deletion_blockers_only); // in: AccountObjects JSS(deletion_blockers_only); // in: AccountObjects
JSS(delivered_amount); // out: insertDeliveredAmount JSS(delivered_amount); // out: insertDeliveredAmount
JSS(deposit_authorized); // out: deposit_authorized JSS(deposit_authorized); // out: deposit_authorized
JSS(deposit_preauth); // in: AccountObjects, LedgerData
JSS(deprecated); // out JSS(deprecated); // out
JSS(descending); // in: AccountTx* JSS(descending); // in: AccountTx*
JSS(description); // in/out: Reservations JSS(description); // in/out: Reservations
@@ -311,11 +273,9 @@ JSS(destination_currencies); // in: PathRequest, RipplePathFind
JSS(destination_tag); // in: PathRequest JSS(destination_tag); // in: PathRequest
// out: AccountChannels // out: AccountChannels
JSS(details); // out: Manifest, server_info JSS(details); // out: Manifest, server_info
JSS(did); // in: LedgerEntry
JSS(dir_entry); // out: DirectoryEntryIterator JSS(dir_entry); // out: DirectoryEntryIterator
JSS(dir_index); // out: DirectoryEntryIterator JSS(dir_index); // out: DirectoryEntryIterator
JSS(dir_root); // out: DirectoryEntryIterator JSS(dir_root); // out: DirectoryEntryIterator
JSS(directory); // in: LedgerEntry
JSS(discounted_fee); // out: amm_info JSS(discounted_fee); // out: amm_info
JSS(domain); // out: ValidatorInfo, Manifest JSS(domain); // out: ValidatorInfo, Manifest
JSS(drops); // out: TxQ JSS(drops); // out: TxQ
@@ -335,9 +295,7 @@ JSS(errored);
JSS(error_code); // out: error JSS(error_code); // out: error
JSS(error_exception); // out: Submit JSS(error_exception); // out: Submit
JSS(error_message); // out: error JSS(error_message); // out: error
JSS(escrow); // in: LedgerEntry
JSS(estimated_time_remaining); JSS(estimated_time_remaining);
JSS(emitted_txn); // in: LedgerEntry
JSS(expand); // in: handler/Ledger JSS(expand); // in: handler/Ledger
JSS(expected_date); // out: any (warnings) JSS(expected_date); // out: any (warnings)
JSS(expected_date_UTC); // out: any (warnings) JSS(expected_date_UTC); // out: any (warnings)
@@ -349,7 +307,6 @@ JSS(failed); // out: InboundLedger
JSS(failed_ledgers); // out: catalogue JSS(failed_ledgers); // out: catalogue
JSS(feature); // in: Feature JSS(feature); // in: Feature
JSS(features); // out: Feature JSS(features); // out: Feature
JSS(fee); // out: NetworkOPs, Peers
JSS(fee_base); // out: NetworkOPs JSS(fee_base); // out: NetworkOPs
JSS(fee_div_max); // in: TransactionSign JSS(fee_div_max); // in: TransactionSign
JSS(fee_hooks_feeunits); // out: Fee rpc call JSS(fee_hooks_feeunits); // out: Fee rpc call
@@ -378,7 +335,6 @@ JSS(good); // out: RPCVersion
JSS(hash); // out: NetworkOPs, InboundLedger, JSS(hash); // out: NetworkOPs, InboundLedger,
JSS(hash_mismatches); // out: catalogue JSS(hash_mismatches); // out: catalogue
// LedgerToJson, STTx; field // LedgerToJson, STTx; field
JSS(hashes); // in: AccountObjects
JSS(have_header); // out: InboundLedger JSS(have_header); // out: InboundLedger
JSS(have_state); // out: InboundLedger JSS(have_state); // out: InboundLedger
JSS(have_transactions); // out: InboundLedger JSS(have_transactions); // out: InboundLedger
@@ -387,9 +343,6 @@ JSS(highest_sequence); // out: AccountInfo
JSS(highest_ticket); // out: AccountInfo JSS(highest_ticket); // out: AccountInfo
JSS(historical_perminute); // historical_perminute. JSS(historical_perminute); // historical_perminute.
JSS(holders); // out: MPTHolders JSS(holders); // out: MPTHolders
JSS(hook); // in: LedgerEntry
JSS(hook_definition); // in: LedgerEntry
JSS(hook_state); // in: LedgerEntry
JSS(hostid); // out: NetworkOPs JSS(hostid); // out: NetworkOPs
JSS(hotwallet); // in: GatewayBalances JSS(hotwallet); // in: GatewayBalances
JSS(id); // websocket. JSS(id); // websocket.
@@ -397,7 +350,6 @@ JSS(ident); // in: AccountCurrencies, AccountInfo,
// OwnerInfo // OwnerInfo
JSS(ignore_default); // in: AccountLines JSS(ignore_default); // in: AccountLines
JSS(ignore_hash); JSS(ignore_hash);
JSS(import_vlseq); // in: LedgerEntry
JSS(imported); // out: catalogue JSS(imported); // out: catalogue
JSS(inLedger); // out: tx/Transaction JSS(inLedger); // out: tx/Transaction
JSS(in_queue); JSS(in_queue);
@@ -533,9 +485,7 @@ JSS(network_id); // out: NetworkOPs
JSS(network_ledger); // out: NetworkOPs JSS(network_ledger); // out: NetworkOPs
JSS(next_refresh_time); // out: ValidatorSite JSS(next_refresh_time); // out: ValidatorSite
JSS(nft_id); // in: nft_sell_offers, nft_buy_offers JSS(nft_id); // in: nft_sell_offers, nft_buy_offers
JSS(nft_offer); // in: LedgerEntry
JSS(nft_offer_index); // out nft_buy_offers, nft_sell_offers JSS(nft_offer_index); // out nft_buy_offers, nft_sell_offers
JSS(nft_page); // in: LedgerEntry
JSS(nft_serial); // out: account_nfts JSS(nft_serial); // out: account_nfts
JSS(nft_taxon); // out: nft_info (clio) JSS(nft_taxon); // out: nft_info (clio)
JSS(nftoken_id); // out: insertNFTokenID JSS(nftoken_id); // out: insertNFTokenID
@@ -558,9 +508,7 @@ JSS(node_writes_duration_us); // out: GetCounts
JSS(node_write_retries); // out: GetCounts JSS(node_write_retries); // out: GetCounts
JSS(node_writes_delayed); // out::GetCounts JSS(node_writes_delayed); // out::GetCounts
JSS(nth); // out: RPC server_definitions JSS(nth); // out: RPC server_definitions
JSS(nunl); // in: AccountObjects
JSS(obligations); // out: GatewayBalances JSS(obligations); // out: GatewayBalances
JSS(offer); // in: LedgerEntry
JSS(offers); // out: NetworkOPs, AccountOffers, Subscribe JSS(offers); // out: NetworkOPs, AccountOffers, Subscribe
JSS(offer_id); // out: insertNFTokenOfferID JSS(offer_id); // out: insertNFTokenOfferID
JSS(offline); // in: TransactionSign JSS(offline); // in: TransactionSign
@@ -569,7 +517,6 @@ JSS(open); // out: handlers/Ledger
JSS(open_ledger_cost); // out: SubmitTransaction JSS(open_ledger_cost); // out: SubmitTransaction
JSS(open_ledger_fee); // out: TxQ JSS(open_ledger_fee); // out: TxQ
JSS(open_ledger_level); // out: TxQ JSS(open_ledger_level); // out: TxQ
JSS(oracle); // in: LedgerEntry
JSS(oracles); // in: get_aggregate_price JSS(oracles); // in: get_aggregate_price
JSS(oracle_document_id); // in: get_aggregate_price JSS(oracle_document_id); // in: get_aggregate_price
JSS(owner); // in: LedgerEntry, out: NetworkOPs JSS(owner); // in: LedgerEntry, out: NetworkOPs
@@ -586,7 +533,6 @@ JSS(paths_canonical); // out: RipplePathFind
JSS(paths_computed); // out: PathRequest, RipplePathFind JSS(paths_computed); // out: PathRequest, RipplePathFind
JSS(output_file); // in: CatalogueCreate JSS(output_file); // in: CatalogueCreate
JSS(input_file); // in: CatalogueLoad JSS(input_file); // in: CatalogueLoad
JSS(payment_channel); // in: LedgerEntry
JSS(pclose); JSS(pclose);
JSS(peer); // in: AccountLines JSS(peer); // in: AccountLines
JSS(peer_authorized); // out: AccountLines JSS(peer_authorized); // out: AccountLines
@@ -677,7 +623,6 @@ JSS(signature_verified); // out: ChannelVerify
JSS(signing_key); // out: NetworkOPs JSS(signing_key); // out: NetworkOPs
JSS(signing_keys); // out: ValidatorList JSS(signing_keys); // out: ValidatorList
JSS(signing_time); // out: NetworkOPs JSS(signing_time); // out: NetworkOPs
JSS(signer_list); // in: AccountObjects
JSS(signer_lists); // in/out: AccountInfo JSS(signer_lists); // in/out: AccountInfo
JSS(size); // out: get_aggregate_price JSS(size); // out: get_aggregate_price
JSS(snapshot); // in: Subscribe JSS(snapshot); // in: Subscribe
@@ -690,7 +635,6 @@ JSS(standard_deviation); // out: get_aggregate_price
JSS(start); // in: TxHistory JSS(start); // in: TxHistory
JSS(start_time); JSS(start_time);
JSS(started); JSS(started);
JSS(state); // out: Logic.h, ServerState, LedgerData
JSS(state_accounting); // out: NetworkOPs JSS(state_accounting); // out: NetworkOPs
JSS(state_now); // in: Subscribe JSS(state_now); // in: Subscribe
JSS(status); // error JSS(status); // error
@@ -712,7 +656,6 @@ JSS(taker_gets_funded); // out: NetworkOPs
JSS(taker_pays); // in: Subscribe, Unsubscribe, BookOffers JSS(taker_pays); // in: Subscribe, Unsubscribe, BookOffers
JSS(taker_pays_funded); // out: NetworkOPs JSS(taker_pays_funded); // out: NetworkOPs
JSS(threshold); // in: Blacklist JSS(threshold); // in: Blacklist
JSS(ticket); // in: AccountObjects
JSS(ticket_count); // out: AccountInfo JSS(ticket_count); // out: AccountInfo
JSS(ticket_seq); // in: LedgerEntry JSS(ticket_seq); // in: LedgerEntry
JSS(time); JSS(time);
@@ -779,10 +722,8 @@ JSS(TRANSACTION_FLAGS_INDICES); // out: RPC server_definitions
JSS(type_hex); // out: STPathSet JSS(type_hex); // out: STPathSet
JSS(unl); // out: UnlList JSS(unl); // out: UnlList
JSS(unlimited); // out: Connection.h JSS(unlimited); // out: Connection.h
JSS(unl_report); // in: LedgerEntry
JSS(uptime); // out: GetCounts JSS(uptime); // out: GetCounts
JSS(uri); // out: ValidatorSites JSS(uri); // out: ValidatorSites
JSS(uri_token); // in: LedgerEntry
JSS(url); // in/out: Subscribe, Unsubscribe JSS(url); // in/out: Subscribe, Unsubscribe
JSS(url_password); // in: Subscribe JSS(url_password); // in: Subscribe
JSS(url_username); // in: Subscribe JSS(url_username); // in: Subscribe
@@ -817,9 +758,6 @@ JSS(warning); // rpc:
JSS(warnings); // out: server_info, server_state JSS(warnings); // out: server_info, server_state
JSS(workers); JSS(workers);
JSS(write_load); // out: GetCounts JSS(write_load); // out: GetCounts
JSS(xchain_owned_claim_id); // in: LedgerEntry, AccountObjects
JSS(xchain_owned_create_account_claim_id); // in: LedgerEntry
JSS(NegativeUNL); // out: ValidatorList; ledger type
// clang-format on // clang-format on
#pragma push_macro("TRANSACTION") #pragma push_macro("TRANSACTION")
@@ -832,6 +770,24 @@ JSS(NegativeUNL); // out: ValidatorList; ledger type
#undef TRANSACTION #undef TRANSACTION
#pragma pop_macro("TRANSACTION") #pragma pop_macro("TRANSACTION")
#pragma push_macro("LEDGER_ENTRY")
#undef LEDGER_ENTRY
#pragma push_macro("LEDGER_ENTRY_DUPLICATE")
#undef LEDGER_ENTRY_DUPLICATE
#define LEDGER_ENTRY(tag, value, name, rpcName, fields) \
JSS(name); \
JSS(rpcName);
#define LEDGER_ENTRY_DUPLICATE(tag, value, name, rpcName, fields) JSS(rpcName);
#include <xrpl/protocol/detail/ledger_entries.macro>
#undef LEDGER_ENTRY
#pragma pop_macro("LEDGER_ENTRY")
#undef LEDGER_ENTRY_DUPLICATE
#pragma pop_macro("LEDGER_ENTRY_DUPLICATE")
#undef JSS #undef JSS
} // namespace jss } // namespace jss

View File

@@ -39,7 +39,7 @@ LedgerFormats::LedgerFormats()
#undef LEDGER_ENTRY #undef LEDGER_ENTRY
#define UNWRAP(...) __VA_ARGS__ #define UNWRAP(...) __VA_ARGS__
#define LEDGER_ENTRY(tag, value, name, fields) \ #define LEDGER_ENTRY(tag, value, name, rpcName, fields) \
add(jss::name, tag, UNWRAP fields, commonFields); add(jss::name, tag, UNWRAP fields, commonFields);
#include <xrpl/protocol/detail/ledger_entries.macro> #include <xrpl/protocol/detail/ledger_entries.macro>

View File

@@ -1058,41 +1058,18 @@ chooseLedgerEntryType(Json::Value const& params)
std::pair<RPC::Status, LedgerEntryType> result{RPC::Status::OK, ltANY}; std::pair<RPC::Status, LedgerEntryType> result{RPC::Status::OK, ltANY};
if (params.isMember(jss::type)) if (params.isMember(jss::type))
{ {
static constexpr std::array<std::pair<char const*, LedgerEntryType>, 32> static constexpr auto types =
types{ std::to_array<std::pair<char const*, LedgerEntryType>>({
{{jss::account, ltACCOUNT_ROOT}, #pragma push_macro("LEDGER_ENTRY")
{jss::amendments, ltAMENDMENTS}, #undef LEDGER_ENTRY
{jss::amm, ltAMM},
{jss::bridge, ltBRIDGE}, #define LEDGER_ENTRY(tag, value, name, rpcName, fields) {jss::rpcName, tag},
{jss::check, ltCHECK},
{jss::credential, ltCREDENTIAL}, #include <xrpl/protocol/detail/ledger_entries.macro>
{jss::deposit_preauth, ltDEPOSIT_PREAUTH},
{jss::did, ltDID}, #undef LEDGER_ENTRY
{jss::directory, ltDIR_NODE}, #pragma pop_macro("LEDGER_ENTRY")
{jss::escrow, ltESCROW}, });
{jss::emitted_txn, ltEMITTED_TXN},
{jss::hook, ltHOOK},
{jss::hook_definition, ltHOOK_DEFINITION},
{jss::hook_state, ltHOOK_STATE},
{jss::fee, ltFEE_SETTINGS},
{jss::hashes, ltLEDGER_HASHES},
{jss::import_vlseq, ltIMPORT_VLSEQ},
{jss::mpt_issuance, ltMPTOKEN_ISSUANCE},
{jss::mptoken, ltMPTOKEN},
{jss::nft_offer, ltNFTOKEN_OFFER},
{jss::nft_page, ltNFTOKEN_PAGE},
{jss::nunl, ltNEGATIVE_UNL},
{jss::offer, ltOFFER},
{jss::oracle, ltORACLE},
{jss::payment_channel, ltPAYCHAN},
{jss::signer_list, ltSIGNER_LIST},
{jss::state, ltRIPPLE_STATE},
{jss::ticket, ltTICKET},
{jss::uri_token, ltURI_TOKEN},
{jss::unl_report, ltUNL_REPORT},
{jss::xchain_owned_claim_id, ltXCHAIN_OWNED_CLAIM_ID},
{jss::xchain_owned_create_account_claim_id,
ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID}}};
auto const& p = params[jss::type]; auto const& p = params[jss::type];
if (!p.isString()) if (!p.isString())