refactor: Align identifier naming with develop

Restore NOLINT-protected headers and apply develop's identifier naming
conventions to files modified in this branch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pratik Mankawde
2026-05-05 15:30:12 +01:00
parent 875911f156
commit afc3835d0a
14 changed files with 1144 additions and 1116 deletions

View File

@@ -92,7 +92,7 @@ tokenOfferCreatePreflight(
std::uint16_t nftFlags,
Rules const& rules,
std::optional<AccountID> const& owner = std::nullopt,
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
std::uint32_t txFlags = tfSellNFToken);
/** Preclaim checks shared by NFTokenCreateOffer and NFTokenMint */
TER
@@ -106,7 +106,7 @@ tokenOfferCreatePreclaim(
std::uint16_t xferFee,
beast::Journal j,
std::optional<AccountID> const& owner = std::nullopt,
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
std::uint32_t txFlags = tfSellNFToken);
/** doApply implementation shared by NFTokenCreateOffer and NFTokenMint */
TER
@@ -120,7 +120,7 @@ tokenOfferCreateApply(
uint256 const& nftokenID,
XRPAmount const& priorBalance,
beast::Journal j,
std::uint32_t txFlags = kTF_SELL_NF_TOKEN);
std::uint32_t txFlags = tfSellNFToken);
TER
checkTrustlineAuthorized(

View File

@@ -118,7 +118,7 @@ isDeepFrozen(
[[nodiscard]] inline TER
checkDeepFrozen(ReadView const& view, AccountID const& account, Issue const& issue)
{
return isDeepFrozen(view, account, issue) ? (TER)TecFrozen : (TER)TesSuccess;
return isDeepFrozen(view, account, issue) ? (TER)tecFROZEN : (TER)tesSUCCESS;
}
//------------------------------------------------------------------------------

View File

@@ -65,7 +65,7 @@ invalidAMMAssetPair(
std::optional<std::uint8_t>
ammAuctionTimeSlot(std::uint64_t current, STObject const& auctionSlot);
/** Return true if required AMM amendment is enabled
/** Return true if required AMM amendments are enabled
*/
bool
ammEnabled(Rules const&);

View File

@@ -179,4 +179,36 @@ to_string(IOUAmount const& amount);
IOUAmount
mulRatio(IOUAmount const& amt, std::uint32_t num, std::uint32_t den, bool roundUp);
// Since many uses of the number class do not have access to a ledger,
// getSTNumberSwitchover needs to be globally accessible.
bool
getSTNumberSwitchover();
void
setSTNumberSwitchover(bool v);
/** RAII class to set and restore the Number switchover.
*/
class NumberSO
{
bool saved_;
public:
~NumberSO()
{
setSTNumberSwitchover(saved_);
}
NumberSO(NumberSO const&) = delete;
NumberSO&
operator=(NumberSO const&) = delete;
explicit NumberSO(bool v) : saved_(getSTNumberSwitchover())
{
setSTNumberSwitchover(v);
}
};
} // namespace xrpl

View File

@@ -55,7 +55,7 @@ enum LedgerEntryType : std::uint16_t {
\sa keylet::unchecked
*/
LtAny = 0,
ltANY = 0,
/** A special type, matching any ledger type except directory nodes.
@@ -67,7 +67,7 @@ enum LedgerEntryType : std::uint16_t {
\sa keylet::child
*/
LtChild = 0x1CD2,
ltCHILD = 0x1CD2,
//---------------------------------------------------------------------------
/** A legacy, deprecated type.
@@ -76,7 +76,7 @@ enum LedgerEntryType : std::uint16_t {
Support for this type of object was never implemented.
No objects of this type were ever created.
*/
LtNickname [[deprecated("This object type is not supported and should not be used.")]] = 0x006e,
ltNICKNAME [[deprecated("This object type is not supported and should not be used.")]] = 0x006e,
/** A legacy, deprecated type.
@@ -84,7 +84,7 @@ enum LedgerEntryType : std::uint16_t {
Support for this type of object was never implemented.
No objects of this type were ever created.
*/
LtContract [[deprecated("This object type is not supported and should not be used.")]] = 0x0063,
ltCONTRACT [[deprecated("This object type is not supported and should not be used.")]] = 0x0063,
/** A legacy, deprecated type.
@@ -92,7 +92,7 @@ enum LedgerEntryType : std::uint16_t {
Support for this type of object was never implemented.
No objects of this type were ever created.
*/
LtGeneratorMap [[deprecated("This object type is not supported and should not be used.")]] =
ltGENERATOR_MAP [[deprecated("This object type is not supported and should not be used.")]] =
0x0067,
};
@@ -125,85 +125,85 @@ enum LedgerEntryType : std::uint16_t {
#define XMACRO(LEDGER_OBJECT, LSF_FLAG, LSF_FLAG2) \
LEDGER_OBJECT(AccountRoot, \
LSF_FLAG(LsfPasswordSpent, 0x00010000) /* True, if password set fee is spent. */ \
LSF_FLAG(LsfRequireDestTag, 0x00020000) /* True, to require a DestinationTag for payments. */ \
LSF_FLAG(LsfRequireAuth, 0x00040000) /* True, to require a authorization to hold IOUs. */ \
LSF_FLAG(LsfDisallowXrp, 0x00080000) /* True, to disallow sending XRP. */ \
LSF_FLAG(LsfDisableMaster, 0x00100000) /* True, force regular key */ \
LSF_FLAG(LsfNoFreeze, 0x00200000) /* True, cannot freeze ripple states */ \
LSF_FLAG(LsfGlobalFreeze, 0x00400000) /* True, all assets frozen */ \
LSF_FLAG(LsfDefaultRipple, 0x00800000) /* True, incoming trust lines allow rippling by default */ \
LSF_FLAG(LsfDepositAuth, 0x01000000) /* True, all deposits require authorization */ \
LSF_FLAG(LsfDisallowIncomingNfTokenOffer, 0x04000000) /* True, reject new incoming NFT offers */ \
LSF_FLAG(LsfDisallowIncomingCheck, 0x08000000) /* True, reject new checks */ \
LSF_FLAG(LsfDisallowIncomingPayChan, 0x10000000) /* True, reject new paychans */ \
LSF_FLAG(LsfDisallowIncomingTrustline, 0x20000000) /* True, reject new trustlines (only if no issued assets) */ \
LSF_FLAG(LsfAllowTrustLineLocking, 0x40000000) /* True, enable trustline locking */ \
LSF_FLAG(LsfAllowTrustLineClawback, 0x80000000)) /* True, enable clawback */ \
LSF_FLAG(lsfPasswordSpent, 0x00010000) /* True, if password set fee is spent. */ \
LSF_FLAG(lsfRequireDestTag, 0x00020000) /* True, to require a DestinationTag for payments. */ \
LSF_FLAG(lsfRequireAuth, 0x00040000) /* True, to require a authorization to hold IOUs. */ \
LSF_FLAG(lsfDisallowXRP, 0x00080000) /* True, to disallow sending XRP. */ \
LSF_FLAG(lsfDisableMaster, 0x00100000) /* True, force regular key */ \
LSF_FLAG(lsfNoFreeze, 0x00200000) /* True, cannot freeze ripple states */ \
LSF_FLAG(lsfGlobalFreeze, 0x00400000) /* True, all assets frozen */ \
LSF_FLAG(lsfDefaultRipple, 0x00800000) /* True, incoming trust lines allow rippling by default */ \
LSF_FLAG(lsfDepositAuth, 0x01000000) /* True, all deposits require authorization */ \
LSF_FLAG(lsfDisallowIncomingNFTokenOffer, 0x04000000) /* True, reject new incoming NFT offers */ \
LSF_FLAG(lsfDisallowIncomingCheck, 0x08000000) /* True, reject new checks */ \
LSF_FLAG(lsfDisallowIncomingPayChan, 0x10000000) /* True, reject new paychans */ \
LSF_FLAG(lsfDisallowIncomingTrustline, 0x20000000) /* True, reject new trustlines (only if no issued assets) */ \
LSF_FLAG(lsfAllowTrustLineLocking, 0x40000000) /* True, enable trustline locking */ \
LSF_FLAG(lsfAllowTrustLineClawback, 0x80000000)) /* True, enable clawback */ \
\
LEDGER_OBJECT(Offer, \
LSF_FLAG(LsfPassive, 0x00010000) \
LSF_FLAG(LsfSell, 0x00020000) /* True, offer was placed as a sell. */ \
LSF_FLAG(LsfHybrid, 0x00040000)) /* True, offer is hybrid. */ \
LSF_FLAG(lsfPassive, 0x00010000) \
LSF_FLAG(lsfSell, 0x00020000) /* True, offer was placed as a sell. */ \
LSF_FLAG(lsfHybrid, 0x00040000)) /* True, offer is hybrid. */ \
\
LEDGER_OBJECT(RippleState, \
LSF_FLAG(LsfLowReserve, 0x00010000) /* True, if entry counts toward reserve. */ \
LSF_FLAG(LsfHighReserve, 0x00020000) \
LSF_FLAG(LsfLowAuth, 0x00040000) \
LSF_FLAG(LsfHighAuth, 0x00080000) \
LSF_FLAG(LsfLowNoRipple, 0x00100000) \
LSF_FLAG(LsfHighNoRipple, 0x00200000) \
LSF_FLAG(LsfLowFreeze, 0x00400000) /* True, low side has set freeze flag */ \
LSF_FLAG(LsfHighFreeze, 0x00800000) /* True, high side has set freeze flag */ \
LSF_FLAG(LsfAmmNode, 0x01000000) /* True, trust line to AMM. */ \
LSF_FLAG(lsfLowReserve, 0x00010000) /* True, if entry counts toward reserve. */ \
LSF_FLAG(lsfHighReserve, 0x00020000) \
LSF_FLAG(lsfLowAuth, 0x00040000) \
LSF_FLAG(lsfHighAuth, 0x00080000) \
LSF_FLAG(lsfLowNoRipple, 0x00100000) \
LSF_FLAG(lsfHighNoRipple, 0x00200000) \
LSF_FLAG(lsfLowFreeze, 0x00400000) /* True, low side has set freeze flag */ \
LSF_FLAG(lsfHighFreeze, 0x00800000) /* True, high side has set freeze flag */ \
LSF_FLAG(lsfAMMNode, 0x01000000) /* True, trust line to AMM. */ \
/* Used by client apps to identify payments via AMM. */ \
LSF_FLAG(LsfLowDeepFreeze, 0x02000000) /* True, low side has set deep freeze flag */ \
LSF_FLAG(LsfHighDeepFreeze, 0x04000000)) /* True, high side has set deep freeze flag */ \
LSF_FLAG(lsfLowDeepFreeze, 0x02000000) /* True, low side has set deep freeze flag */ \
LSF_FLAG(lsfHighDeepFreeze, 0x04000000)) /* True, high side has set deep freeze flag */ \
\
LEDGER_OBJECT(SignerList, \
LSF_FLAG(LsfOneOwnerCount, 0x00010000)) /* True, uses only one OwnerCount */ \
LSF_FLAG(lsfOneOwnerCount, 0x00010000)) /* True, uses only one OwnerCount */ \
\
LEDGER_OBJECT(DirNode, \
LSF_FLAG(LsfNfTokenBuyOffers, 0x00000001) \
LSF_FLAG(LsfNfTokenSellOffers, 0x00000002)) \
LSF_FLAG(lsfNFTokenBuyOffers, 0x00000001) \
LSF_FLAG(lsfNFTokenSellOffers, 0x00000002)) \
\
LEDGER_OBJECT(NFTokenOffer, \
LSF_FLAG(LsfSellNfToken, 0x00000001)) \
LSF_FLAG(lsfSellNFToken, 0x00000001)) \
\
LEDGER_OBJECT(MPTokenIssuance, \
LSF_FLAG(LsfMptLocked, 0x00000001) /* Also used in ltMPTOKEN */ \
LSF_FLAG(LsfMptCanLock, 0x00000002) \
LSF_FLAG(LsfMptRequireAuth, 0x00000004) \
LSF_FLAG(LsfMptCanEscrow, 0x00000008) \
LSF_FLAG(LsfMptCanTrade, 0x00000010) \
LSF_FLAG(LsfMptCanTransfer, 0x00000020) \
LSF_FLAG(LsfMptCanClawback, 0x00000040)) \
LSF_FLAG(lsfMPTLocked, 0x00000001) /* Also used in ltMPTOKEN */ \
LSF_FLAG(lsfMPTCanLock, 0x00000002) \
LSF_FLAG(lsfMPTRequireAuth, 0x00000004) \
LSF_FLAG(lsfMPTCanEscrow, 0x00000008) \
LSF_FLAG(lsfMPTCanTrade, 0x00000010) \
LSF_FLAG(lsfMPTCanTransfer, 0x00000020) \
LSF_FLAG(lsfMPTCanClawback, 0x00000040)) \
\
LEDGER_OBJECT(MPTokenIssuanceMutable, \
LSF_FLAG(LsmfMptCanMutateCanLock, 0x00000002) \
LSF_FLAG(LsmfMptCanMutateRequireAuth, 0x00000004) \
LSF_FLAG(LsmfMptCanMutateCanEscrow, 0x00000008) \
LSF_FLAG(LsmfMptCanMutateCanTrade, 0x00000010) \
LSF_FLAG(LsmfMptCanMutateCanTransfer, 0x00000020) \
LSF_FLAG(LsmfMptCanMutateCanClawback, 0x00000040) \
LSF_FLAG(LsmfMptCanMutateMetadata, 0x00010000) \
LSF_FLAG(LsmfMptCanMutateTransferFee, 0x00020000)) \
LSF_FLAG(lsmfMPTCanMutateCanLock, 0x00000002) \
LSF_FLAG(lsmfMPTCanMutateRequireAuth, 0x00000004) \
LSF_FLAG(lsmfMPTCanMutateCanEscrow, 0x00000008) \
LSF_FLAG(lsmfMPTCanMutateCanTrade, 0x00000010) \
LSF_FLAG(lsmfMPTCanMutateCanTransfer, 0x00000020) \
LSF_FLAG(lsmfMPTCanMutateCanClawback, 0x00000040) \
LSF_FLAG(lsmfMPTCanMutateMetadata, 0x00010000) \
LSF_FLAG(lsmfMPTCanMutateTransferFee, 0x00020000)) \
\
LEDGER_OBJECT(MPToken, \
LSF_FLAG2(lsfMPTLocked, 0x00000001) \
LSF_FLAG(LsfMptAuthorized, 0x00000002) \
LSF_FLAG(LsfMptamm, 0x00000004)) \
LSF_FLAG(lsfMPTAuthorized, 0x00000002) \
LSF_FLAG(lsfMPTAMM, 0x00000004)) \
\
LEDGER_OBJECT(Credential, \
LSF_FLAG(LsfAccepted, 0x00010000)) \
LSF_FLAG(lsfAccepted, 0x00010000)) \
\
LEDGER_OBJECT(Vault, \
LSF_FLAG(LsfVaultPrivate, 0x00010000)) \
LSF_FLAG(lsfVaultPrivate, 0x00010000)) \
\
LEDGER_OBJECT(Loan, \
LSF_FLAG(LsfLoanDefault, 0x00010000) \
LSF_FLAG(LsfLoanImpaired, 0x00020000) \
LSF_FLAG(LsfLoanOverpayment, 0x00040000)) /* True, loan allows overpayments */
LSF_FLAG(lsfLoanDefault, 0x00010000) \
LSF_FLAG(lsfLoanImpaired, 0x00020000) \
LSF_FLAG(lsfLoanOverpayment, 0x00040000)) /* True, loan allows overpayments */
// clang-format on
@@ -258,9 +258,9 @@ XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP)
inline std::vector<std::pair<std::string, LedgerFlagMap>> const&
getAllLedgerFlags()
{
static std::vector<std::pair<std::string, LedgerFlagMap>> const kFLAGS = {
static std::vector<std::pair<std::string, LedgerFlagMap>> const flags = {
XMACRO(ALL_LEDGER_FLAGS, NULL_OUTPUT, NULL_OUTPUT)};
return kFLAGS;
return flags;
}
#undef XMACRO

View File

@@ -106,28 +106,28 @@ template <>
inline SerializedTypeID
STUInt128::getSType() const
{
return StiUinT128;
return STI_UINT128;
}
template <>
inline SerializedTypeID
STUInt160::getSType() const
{
return StiUinT160;
return STI_UINT160;
}
template <>
inline SerializedTypeID
STUInt192::getSType() const
{
return StiUinT192;
return STI_UINT192;
}
template <>
inline SerializedTypeID
STUInt256::getSType() const
{
return StiUinT256;
return STI_UINT256;
}
template <int Bits>

View File

@@ -100,7 +100,7 @@ get(STObject const& st, TypedField<U> const& f)
if (!b)
return t;
auto const id = b->getSType();
if (id == StiNotpresent)
if (id == STI_NOTPRESENT)
return t;
auto const u = dynamic_cast<U const*>(b);
// This should never happen

View File

@@ -33,23 +33,23 @@ enum TELcodes : TERUnderlyingType {
// limit) Only valid during non-consensus processing. Implications:
// - Not forwarded
// - No fee check
TelLocalError = -399,
TelBadDomain,
TelBadPathCount,
TelBadPublicKey,
TelFailedProcessing,
TelInsufFeeP,
TelNoDstPartial,
TelCanNotQueue,
TelCanNotQueueBalance,
TelCanNotQueueBlocks,
TelCanNotQueueBlocked,
TelCanNotQueueFee,
TelCanNotQueueFull,
TelWrongNetwork,
TelRequiresNetworkId,
TelNetworkIdMakesTxNonCanonical,
TelEnvRpcFailed
telLOCAL_ERROR = -399,
telBAD_DOMAIN,
telBAD_PATH_COUNT,
telBAD_PUBLIC_KEY,
telFAILED_PROCESSING,
telINSUF_FEE_P,
telNO_DST_PARTIAL,
telCAN_NOT_QUEUE,
telCAN_NOT_QUEUE_BALANCE,
telCAN_NOT_QUEUE_BLOCKS,
telCAN_NOT_QUEUE_BLOCKED,
telCAN_NOT_QUEUE_FEE,
telCAN_NOT_QUEUE_FULL,
telWRONG_NETWORK,
telREQUIRES_NETWORK_ID,
telNETWORK_ID_MAKES_TX_NON_CANONICAL,
telENV_RPC_FAILED
};
//------------------------------------------------------------------------------
@@ -70,64 +70,64 @@ enum TEMcodes : TERUnderlyingType {
// - Not forwarded
// - Reject
// - Cannot succeed in any imagined ledger.
TemMalformed = -299,
temMALFORMED = -299,
TemBadAmount,
TemBadCurrency,
TemBadExpiration,
TemBadFee,
TemBadIssuer,
TemBadLimit,
TemBadOffer,
TemBadPath,
TemBadPathLoop,
TemBadRegkey,
TemBadSendXrpLimit,
TemBadSendXrpMax,
TemBadSendXrpNoDirect,
TemBadSendXrpPartial,
TemBadSendXrpPaths,
TemBadSequence,
TemBadSignature,
TemBadSrcAccount,
TemBadTransferRate,
TemDstIsSrc,
TemDstNeeded,
TemInvalid,
TemInvalidFlag,
TemRedundant,
TemRippleEmpty,
TemDisabled,
TemBadSigner,
TemBadQuorum,
TemBadWeight,
TemBadTickSize,
TemInvalidAccountId,
TemCannotPreauthSelf,
TemInvalidCount,
temBAD_AMOUNT,
temBAD_CURRENCY,
temBAD_EXPIRATION,
temBAD_FEE,
temBAD_ISSUER,
temBAD_LIMIT,
temBAD_OFFER,
temBAD_PATH,
temBAD_PATH_LOOP,
temBAD_REGKEY,
temBAD_SEND_XRP_LIMIT,
temBAD_SEND_XRP_MAX,
temBAD_SEND_XRP_NO_DIRECT,
temBAD_SEND_XRP_PARTIAL,
temBAD_SEND_XRP_PATHS,
temBAD_SEQUENCE,
temBAD_SIGNATURE,
temBAD_SRC_ACCOUNT,
temBAD_TRANSFER_RATE,
temDST_IS_SRC,
temDST_NEEDED,
temINVALID,
temINVALID_FLAG,
temREDUNDANT,
temRIPPLE_EMPTY,
temDISABLED,
temBAD_SIGNER,
temBAD_QUORUM,
temBAD_WEIGHT,
temBAD_TICK_SIZE,
temINVALID_ACCOUNT_ID,
temCANNOT_PREAUTH_SELF,
temINVALID_COUNT,
TemUncertain, // An internal intermediate result; should never be returned.
TemUnknown, // An internal intermediate result; should never be returned.
temUNCERTAIN, // An internal intermediate result; should never be returned.
temUNKNOWN, // An internal intermediate result; should never be returned.
TemSeqAndTicket,
TemBadNftokenTransferFee,
temSEQ_AND_TICKET,
temBAD_NFTOKEN_TRANSFER_FEE,
TemBadAmmTokens,
temBAD_AMM_TOKENS,
TemXchainEqualDoorAccounts,
TemXchainBadProof,
TemXchainBridgeBadIssues,
TemXchainBridgeNondoorOwner,
TemXchainBridgeBadMinAccountCreateAmount,
TemXchainBridgeBadRewardAmount,
temXCHAIN_EQUAL_DOOR_ACCOUNTS,
temXCHAIN_BAD_PROOF,
temXCHAIN_BRIDGE_BAD_ISSUES,
temXCHAIN_BRIDGE_NONDOOR_OWNER,
temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT,
temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT,
TemEmptyDid,
temEMPTY_DID,
TemArrayEmpty,
TemArrayTooLarge,
TemBadTransferFee,
TemInvalidInnerBatch,
TemBadMpt,
temARRAY_EMPTY,
temARRAY_TOO_LARGE,
temBAD_TRANSFER_FEE,
temINVALID_INNER_BATCH,
temBAD_MPT,
};
//------------------------------------------------------------------------------
@@ -152,28 +152,28 @@ enum TEFcodes : TERUnderlyingType {
// - Not applied
// - Not forwarded
// - Could succeed in an imagined ledger.
TefFailure = -199,
TefAlready,
TefBadAddAuth,
TefBadAuth,
TefBadLedger,
TefCreated,
TefException,
TefInternal,
TefNoAuthRequired, // Can't set auth if auth is not required.
TefPastSeq,
TefWrongPrior,
TefMasterDisabled,
TefMaxLedger,
TefBadSignature,
TefBadQuorum,
TefNotMultiSigning,
TefBadAuthMaster,
TefInvariantFailed,
TefTooBig,
TefNoTicket,
TefNftokenIsNotTransferable,
TefInvalidLedgerFixType,
tefFAILURE = -199,
tefALREADY,
tefBAD_ADD_AUTH,
tefBAD_AUTH,
tefBAD_LEDGER,
tefCREATED,
tefEXCEPTION,
tefINTERNAL,
tefNO_AUTH_REQUIRED, // Can't set auth if auth is not required.
tefPAST_SEQ,
tefWRONG_PRIOR,
tefMASTER_DISABLED,
tefMAX_LEDGER,
tefBAD_SIGNATURE,
tefBAD_QUORUM,
tefNOT_MULTI_SIGNING,
tefBAD_AUTH_MASTER,
tefINVARIANT_FAILED,
tefTOO_BIG,
tefNO_TICKET,
tefNFTOKEN_IS_NOT_TRANSFERABLE,
tefINVALID_LEDGER_FIX_TYPE,
};
//------------------------------------------------------------------------------
@@ -202,24 +202,24 @@ enum TERcodes : TERUnderlyingType {
// - Might succeed later
// - Hold
// - Makes hole in sequence which jams transactions.
TerRetry = -99,
TerFundsSpent, // DEPRECATED.
TerInsufFeeB, // Can't pay fee, therefore don't burden network.
TerNoAccount, // Can't pay fee, therefore don't burden network.
TerNoAuth, // Not authorized to hold IOUs.
TerNoLine, // Internal flag.
TerOwners, // Can't succeed with non-zero owner count.
TerPreSeq, // Can't pay fee, no point in forwarding, so don't
// burden network.
TerLast, // DEPRECATED.
TerNoRipple, // Rippling not allowed
TerQueued, // Transaction is being held in TxQ until fee drops
TerPreTicket, // Ticket is not yet in ledger but might be on its way
TerNoAmm, // AMM doesn't exist for the asset pair
TerAddressCollision, // Failed to allocate AccountID when trying to
// create a pseudo-account
TerNoDelegatePermission, // Delegate does not have permission
TerLocked, // MPT is locked
terRETRY = -99,
terFUNDS_SPENT, // DEPRECATED.
terINSUF_FEE_B, // Can't pay fee, therefore don't burden network.
terNO_ACCOUNT, // Can't pay fee, therefore don't burden network.
terNO_AUTH, // Not authorized to hold IOUs.
terNO_LINE, // Internal flag.
terOWNERS, // Can't succeed with non-zero owner count.
terPRE_SEQ, // Can't pay fee, no point in forwarding, so don't
// burden network.
terLAST, // DEPRECATED.
terNO_RIPPLE, // Rippling not allowed
terQUEUED, // Transaction is being held in TxQ until fee drops
terPRE_TICKET, // Ticket is not yet in ledger but might be on its way
terNO_AMM, // AMM doesn't exist for the asset pair
terADDRESS_COLLISION, // Failed to allocate AccountID when trying to
// create a pseudo-account
terNO_DELEGATE_PERMISSION, // Delegate does not have permission
terLOCKED, // MPT is locked
};
//------------------------------------------------------------------------------
@@ -236,7 +236,7 @@ enum TEScodes : TERUnderlyingType {
// Implications:
// - Applied
// - Forwarded
TesSuccess = 0
tesSUCCESS = 0
};
//------------------------------------------------------------------------------
@@ -275,89 +275,89 @@ enum TECcodes : TERUnderlyingType {
// - tecOBJECT_NOT_FOUND : cannot find the additional object(s) needed to
// complete the transaction
TecClaim = 100,
TecPathPartial = 101,
TecUnfundedAdd = 102, // Unused legacy code
TecUnfundedOffer = 103,
TecUnfundedPayment = 104,
TecFailedProcessing = 105,
TecDirFull = 121,
TecInsufReserveLine = 122,
TecInsufReserveOffer = 123,
TecNoDst = 124,
TecNoDstInsufXrp = 125,
TecNoLineInsufReserve = 126,
TecNoLineRedundant = 127,
TecPathDry = 128,
TecUnfunded = 129,
TecNoAlternativeKey = 130,
TecNoRegularKey = 131,
TecOwners = 132,
TecNoIssuer = 133,
TecNoAuth = 134,
TecNoLine = 135,
TecInsuffFee = 136,
TecFrozen = 137,
TecNoTarget = 138,
TecNoPermission = 139,
TecNoEntry = 140,
TecInsufficientReserve = 141,
TecNeedMasterKey = 142,
TecDstTagNeeded = 143,
TecInternal = 144,
TecOversize = 145,
TecCryptoconditionError = 146,
TecInvariantFailed = 147,
TecExpired = 148,
TecDuplicate = 149,
TecKilled = 150,
TecHasObligations = 151,
TecTooSoon = 152,
TecHookRejected [[maybe_unused]] = 153,
TecMaxSequenceReached = 154,
TecNoSuitableNftokenPage = 155,
TecNftokenBuySellMismatch = 156,
TecNftokenOfferTypeMismatch = 157,
TecCantAcceptOwnNftokenOffer = 158,
TecInsufficientFunds = 159,
TecObjectNotFound = 160,
TecInsufficientPayment = 161,
TecUnfundedAmm = 162,
TecAmmBalance = 163,
TecAmmFailed = 164,
TecAmmInvalidTokens = 165,
TecAmmEmpty = 166,
TecAmmNotEmpty = 167,
TecAmmAccount = 168,
TecIncomplete = 169,
TecXchainBadTransferIssue = 170,
TecXchainNoClaimId = 171,
TecXchainBadClaimId = 172,
TecXchainClaimNoQuorum = 173,
TecXchainProofUnknownKey = 174,
TecXchainCreateAccountNonxrpIssue = 175,
TecXchainWrongChain = 176,
TecXchainRewardMismatch = 177,
TecXchainNoSignersList = 178,
TecXchainSendingAccountMismatch = 179,
TecXchainInsuffCreateAmount = 180,
TecXchainAccountCreatePast = 181,
TecXchainAccountCreateTooMany = 182,
TecXchainPaymentFailed = 183,
TecXchainSelfCommit = 184,
TecXchainBadPublicKeyAccountPair = 185,
TecXchainCreateAccountDisabled = 186,
TecEmptyDid = 187,
TecInvalidUpdateTime = 188,
TecTokenPairNotFound = 189,
TecArrayEmpty = 190,
TecArrayTooLarge = 191,
TecLocked = 192,
TecBadCredentials = 193,
TecWrongAsset = 194,
TecLimitExceeded = 195,
TecPseudoAccount = 196,
TecPrecisionLoss = 197,
tecCLAIM = 100,
tecPATH_PARTIAL = 101,
tecUNFUNDED_ADD = 102, // Unused legacy code
tecUNFUNDED_OFFER = 103,
tecUNFUNDED_PAYMENT = 104,
tecFAILED_PROCESSING = 105,
tecDIR_FULL = 121,
tecINSUF_RESERVE_LINE = 122,
tecINSUF_RESERVE_OFFER = 123,
tecNO_DST = 124,
tecNO_DST_INSUF_XRP = 125,
tecNO_LINE_INSUF_RESERVE = 126,
tecNO_LINE_REDUNDANT = 127,
tecPATH_DRY = 128,
tecUNFUNDED = 129,
tecNO_ALTERNATIVE_KEY = 130,
tecNO_REGULAR_KEY = 131,
tecOWNERS = 132,
tecNO_ISSUER = 133,
tecNO_AUTH = 134,
tecNO_LINE = 135,
tecINSUFF_FEE = 136,
tecFROZEN = 137,
tecNO_TARGET = 138,
tecNO_PERMISSION = 139,
tecNO_ENTRY = 140,
tecINSUFFICIENT_RESERVE = 141,
tecNEED_MASTER_KEY = 142,
tecDST_TAG_NEEDED = 143,
tecINTERNAL = 144,
tecOVERSIZE = 145,
tecCRYPTOCONDITION_ERROR = 146,
tecINVARIANT_FAILED = 147,
tecEXPIRED = 148,
tecDUPLICATE = 149,
tecKILLED = 150,
tecHAS_OBLIGATIONS = 151,
tecTOO_SOON = 152,
tecHOOK_REJECTED [[maybe_unused]] = 153,
tecMAX_SEQUENCE_REACHED = 154,
tecNO_SUITABLE_NFTOKEN_PAGE = 155,
tecNFTOKEN_BUY_SELL_MISMATCH = 156,
tecNFTOKEN_OFFER_TYPE_MISMATCH = 157,
tecCANT_ACCEPT_OWN_NFTOKEN_OFFER = 158,
tecINSUFFICIENT_FUNDS = 159,
tecOBJECT_NOT_FOUND = 160,
tecINSUFFICIENT_PAYMENT = 161,
tecUNFUNDED_AMM = 162,
tecAMM_BALANCE = 163,
tecAMM_FAILED = 164,
tecAMM_INVALID_TOKENS = 165,
tecAMM_EMPTY = 166,
tecAMM_NOT_EMPTY = 167,
tecAMM_ACCOUNT = 168,
tecINCOMPLETE = 169,
tecXCHAIN_BAD_TRANSFER_ISSUE = 170,
tecXCHAIN_NO_CLAIM_ID = 171,
tecXCHAIN_BAD_CLAIM_ID = 172,
tecXCHAIN_CLAIM_NO_QUORUM = 173,
tecXCHAIN_PROOF_UNKNOWN_KEY = 174,
tecXCHAIN_CREATE_ACCOUNT_NONXRP_ISSUE = 175,
tecXCHAIN_WRONG_CHAIN = 176,
tecXCHAIN_REWARD_MISMATCH = 177,
tecXCHAIN_NO_SIGNERS_LIST = 178,
tecXCHAIN_SENDING_ACCOUNT_MISMATCH = 179,
tecXCHAIN_INSUFF_CREATE_AMOUNT = 180,
tecXCHAIN_ACCOUNT_CREATE_PAST = 181,
tecXCHAIN_ACCOUNT_CREATE_TOO_MANY = 182,
tecXCHAIN_PAYMENT_FAILED = 183,
tecXCHAIN_SELF_COMMIT = 184,
tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR = 185,
tecXCHAIN_CREATE_ACCOUNT_DISABLED = 186,
tecEMPTY_DID = 187,
tecINVALID_UPDATE_TIME = 188,
tecTOKEN_PAIR_NOT_FOUND = 189,
tecARRAY_EMPTY = 190,
tecARRAY_TOO_LARGE = 191,
tecLOCKED = 192,
tecBAD_CREDENTIALS = 193,
tecWRONG_ASSET = 194,
tecLIMIT_EXCEEDED = 195,
tecPSEUDO_ACCOUNT = 196,
tecPRECISION_LOSS = 197,
};
//------------------------------------------------------------------------------
@@ -370,7 +370,7 @@ TERtoInt(TELcodes v)
}
constexpr TERUnderlyingType
teRtoInt(TEMcodes v)
TERtoInt(TEMcodes v)
{
return safeCast<TERUnderlyingType>(v);
}
@@ -409,7 +409,7 @@ class TERSubset
public:
// Constructors
constexpr TERSubset() : code_(TesSuccess)
constexpr TERSubset() : code_(tesSUCCESS)
{
}
constexpr TERSubset(TERSubset const& rhs) = default;
@@ -431,7 +431,7 @@ public:
template <
typename T,
typename = std::enable_if_t<Trait<std::remove_cv_t<std::remove_reference_t<T>>>::value>>
constexpr TERSubset(T rhs) : code_(teRtoInt(rhs))
constexpr TERSubset(T rhs) : code_(TERtoInt(rhs))
{
}
@@ -454,7 +454,7 @@ public:
explicit
operator bool() const
{
return code_ != TesSuccess;
return code_ != tesSUCCESS;
}
// Conversion to json::Value allows assignment to json::Objects
@@ -488,7 +488,7 @@ public:
// (unnamed) conversion to int. To avoid silent conversions like these
// we provide (only) a named conversion.
friend constexpr TERUnderlyingType
teRtoInt(TERSubset v)
TERtoInt(TERSubset v)
{
return v.code_;
}
@@ -499,28 +499,28 @@ public:
template <typename L, typename R>
constexpr auto
operator==(L const& lhs, R const& rhs) -> std::enable_if_t<
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
bool>
{
return teRtoInt(lhs) == TERtoInt(rhs);
return TERtoInt(lhs) == TERtoInt(rhs);
}
template <typename L, typename R>
constexpr auto
operator!=(L const& lhs, R const& rhs) -> std::enable_if_t<
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
bool>
{
return teRtoInt(lhs) != TERtoInt(rhs);
return TERtoInt(lhs) != TERtoInt(rhs);
}
template <typename L, typename R>
constexpr auto
operator<(L const& lhs, R const& rhs) -> std::enable_if_t<
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(teRtoInt(rhs)), int>,
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
bool>
{
return teRtoInt(lhs) < teRtoInt(rhs);
return TERtoInt(lhs) < TERtoInt(rhs);
}
template <typename L, typename R>
@@ -544,10 +544,10 @@ operator>(L const& lhs, R const& rhs) -> std::enable_if_t<
template <typename L, typename R>
constexpr auto
operator>=(L const& lhs, R const& rhs) -> std::enable_if_t<
std::is_same_v<decltype(teRtoInt(lhs)), int> && std::is_same_v<decltype(teRtoInt(rhs)), int>,
std::is_same_v<decltype(TERtoInt(lhs)), int> && std::is_same_v<decltype(TERtoInt(rhs)), int>,
bool>
{
return teRtoInt(lhs) >= teRtoInt(rhs);
return TERtoInt(lhs) >= TERtoInt(rhs);
}
//------------------------------------------------------------------------------
@@ -632,25 +632,25 @@ using TER = TERSubset<CanCvtToTER>;
inline bool
isTelLocal(TER x) noexcept
{
return (x >= TelLocalError && x < TemMalformed);
return (x >= telLOCAL_ERROR && x < temMALFORMED);
}
inline bool
isTemMalformed(TER x) noexcept
{
return (x >= TemMalformed && x < TefFailure);
return (x >= temMALFORMED && x < tefFAILURE);
}
inline bool
isTefFailure(TER x) noexcept
{
return (x >= TefFailure && x < TerRetry);
return (x >= tefFAILURE && x < terRETRY);
}
inline bool
isTerRetry(TER x) noexcept
{
return (x >= TerRetry && x < TesSuccess);
return (x >= terRETRY && x < tesSUCCESS);
}
inline bool
@@ -663,7 +663,7 @@ isTesSuccess(TER x) noexcept
inline bool
isTecClaim(TER x) noexcept
{
return ((x) >= TecClaim);
return ((x) >= tecCLAIM);
}
std::unordered_map<TERUnderlyingType, std::pair<char const* const, char const* const>> const&

View File

@@ -39,10 +39,10 @@ namespace xrpl {
using FlagValue = std::uint32_t;
// Universal Transaction flags:
inline constexpr FlagValue kTF_FULLY_CANONICAL_SIG = 0x80000000;
inline constexpr FlagValue kTF_INNER_BATCH_TXN = 0x40000000;
inline constexpr FlagValue tfUniversal = kTF_FULLY_CANONICAL_SIG | kTF_INNER_BATCH_TXN;
inline constexpr FlagValue kTF_UNIVERSAL_MASK = ~tfUniversal;
inline constexpr FlagValue tfFullyCanonicalSig = 0x80000000;
inline constexpr FlagValue tfInnerBatchTxn = 0x40000000;
inline constexpr FlagValue tfUniversal = tfFullyCanonicalSig | tfInnerBatchTxn;
inline constexpr FlagValue tfUniversalMask = ~tfUniversal;
#pragma push_macro("XMACRO")
#pragma push_macro("TO_VALUE")
@@ -83,137 +83,137 @@ inline constexpr FlagValue kTF_UNIVERSAL_MASK = ~tfUniversal;
// TODO: Consider rewriting this using reflection in C++26 or later. Alternatively this could be a DSL processed by a script at build time.
#define XMACRO(TRANSACTION, TF_FLAG, TF_FLAG2, MASK_ADJ) \
TRANSACTION(AccountSet, \
TF_FLAG(kTF_REQUIRE_DEST_TAG, 0x00010000) \
TF_FLAG(kTF_OPTIONAL_DEST_TAG, 0x00020000) \
TF_FLAG(kTF_REQUIRE_AUTH, 0x00040000) \
TF_FLAG(kTF_OPTIONAL_AUTH, 0x00080000) \
TF_FLAG(kTF_DISALLOW_XRP, 0x00100000) \
TF_FLAG(kTF_ALLOW_XRP, 0x00200000), \
TF_FLAG(tfRequireDestTag, 0x00010000) \
TF_FLAG(tfOptionalDestTag, 0x00020000) \
TF_FLAG(tfRequireAuth, 0x00040000) \
TF_FLAG(tfOptionalAuth, 0x00080000) \
TF_FLAG(tfDisallowXRP, 0x00100000) \
TF_FLAG(tfAllowXRP, 0x00200000), \
MASK_ADJ(0)) \
\
TRANSACTION(OfferCreate, \
TF_FLAG(kTF_PASSIVE, 0x00010000) \
TF_FLAG(kTF_IMMEDIATE_OR_CANCEL, 0x00020000) \
TF_FLAG(kTF_FILL_OR_KILL, 0x00040000) \
TF_FLAG(kTF_SELL, 0x00080000) \
TF_FLAG(kTF_HYBRID, 0x00100000), \
TF_FLAG(tfPassive, 0x00010000) \
TF_FLAG(tfImmediateOrCancel, 0x00020000) \
TF_FLAG(tfFillOrKill, 0x00040000) \
TF_FLAG(tfSell, 0x00080000) \
TF_FLAG(tfHybrid, 0x00100000), \
MASK_ADJ(0)) \
\
TRANSACTION(Payment, \
TF_FLAG(kTF_NO_RIPPLE_DIRECT, 0x00010000) \
TF_FLAG(kTF_PARTIAL_PAYMENT, 0x00020000) \
TF_FLAG(kTF_LIMIT_QUALITY, 0x00040000), \
TF_FLAG(tfNoRippleDirect, 0x00010000) \
TF_FLAG(tfPartialPayment, 0x00020000) \
TF_FLAG(tfLimitQuality, 0x00040000), \
MASK_ADJ(0)) \
\
TRANSACTION(TrustSet, \
TF_FLAG(kTF_SETF_AUTH, 0x00010000) \
TF_FLAG(kTF_SET_NO_RIPPLE, 0x00020000) \
TF_FLAG(kTF_CLEAR_NO_RIPPLE, 0x00040000) \
TF_FLAG(kTF_SET_FREEZE, 0x00100000) \
TF_FLAG(kTF_CLEAR_FREEZE, 0x00200000) \
TF_FLAG(kTF_SET_DEEP_FREEZE, 0x00400000) \
TF_FLAG(kTF_CLEAR_DEEP_FREEZE, 0x00800000), \
TF_FLAG(tfSetfAuth, 0x00010000) \
TF_FLAG(tfSetNoRipple, 0x00020000) \
TF_FLAG(tfClearNoRipple, 0x00040000) \
TF_FLAG(tfSetFreeze, 0x00100000) \
TF_FLAG(tfClearFreeze, 0x00200000) \
TF_FLAG(tfSetDeepFreeze, 0x00400000) \
TF_FLAG(tfClearDeepFreeze, 0x00800000), \
MASK_ADJ(0)) \
\
TRANSACTION(EnableAmendment, \
TF_FLAG(kTF_GOT_MAJORITY, 0x00010000) \
TF_FLAG(kTF_LOST_MAJORITY, 0x00020000), \
TF_FLAG(tfGotMajority, 0x00010000) \
TF_FLAG(tfLostMajority, 0x00020000), \
MASK_ADJ(0)) \
\
TRANSACTION(PaymentChannelClaim, \
TF_FLAG(kTF_RENEW, 0x00010000) \
TF_FLAG(kTF_CLOSE, 0x00020000), \
TF_FLAG(tfRenew, 0x00010000) \
TF_FLAG(tfClose, 0x00020000), \
MASK_ADJ(0)) \
\
TRANSACTION(NFTokenMint, \
TF_FLAG(kTF_BURNABLE, 0x00000001) \
TF_FLAG(kTF_ONLY_XRP, 0x00000002) \
TF_FLAG(tfBurnable, 0x00000001) \
TF_FLAG(tfOnlyXRP, 0x00000002) \
/* deprecated TF_FLAG(tfTrustLine, 0x00000004) */ \
TF_FLAG(kTF_TRANSFERABLE, 0x00000008) \
TF_FLAG(kTF_MUTABLE, 0x00000010), \
TF_FLAG(tfTransferable, 0x00000008) \
TF_FLAG(tfMutable, 0x00000010), \
MASK_ADJ(0)) \
\
TRANSACTION(MPTokenIssuanceCreate, \
/* Note: tf/lsfMPTLocked is intentionally omitted since this transaction is not allowed to modify it. */ \
TF_FLAG(kTF_MPT_CAN_LOCK, LsfMptCanLock) \
TF_FLAG(kTF_MPT_REQUIRE_AUTH, LsfMptRequireAuth) \
TF_FLAG(kTF_MPT_CAN_ESCROW, LsfMptCanEscrow) \
TF_FLAG(kTF_MPT_CAN_TRADE, LsfMptCanTrade) \
TF_FLAG(kTF_MPT_CAN_TRANSFER, LsfMptCanTransfer) \
TF_FLAG(kTF_MPT_CAN_CLAWBACK, LsfMptCanClawback), \
TF_FLAG(tfMPTCanLock, lsfMPTCanLock) \
TF_FLAG(tfMPTRequireAuth, lsfMPTRequireAuth) \
TF_FLAG(tfMPTCanEscrow, lsfMPTCanEscrow) \
TF_FLAG(tfMPTCanTrade, lsfMPTCanTrade) \
TF_FLAG(tfMPTCanTransfer, lsfMPTCanTransfer) \
TF_FLAG(tfMPTCanClawback, lsfMPTCanClawback), \
MASK_ADJ(0)) \
\
TRANSACTION(MPTokenAuthorize, \
TF_FLAG(kTF_MPT_UNAUTHORIZE, 0x00000001), \
TF_FLAG(tfMPTUnauthorize, 0x00000001), \
MASK_ADJ(0)) \
\
TRANSACTION(MPTokenIssuanceSet, \
TF_FLAG(kTF_MPT_LOCK, 0x00000001) \
TF_FLAG(kTF_MPT_UNLOCK, 0x00000002), \
TF_FLAG(tfMPTLock, 0x00000001) \
TF_FLAG(tfMPTUnlock, 0x00000002), \
MASK_ADJ(0)) \
\
TRANSACTION(NFTokenCreateOffer, \
TF_FLAG(kTF_SELL_NF_TOKEN, 0x00000001), \
TF_FLAG(tfSellNFToken, 0x00000001), \
MASK_ADJ(0)) \
\
TRANSACTION(AMMDeposit, \
TF_FLAG(kTF_LP_TOKEN, 0x00010000) \
TF_FLAG(kTF_SINGLE_ASSET, 0x00080000) \
TF_FLAG(kTF_TWO_ASSET, 0x00100000) \
TF_FLAG(kTF_ONE_ASSET_LP_TOKEN, 0x00200000) \
TF_FLAG(kTF_LIMIT_LP_TOKEN, 0x00400000) \
TF_FLAG(kTF_TWO_ASSET_IF_EMPTY, 0x00800000), \
TF_FLAG(tfLPToken, 0x00010000) \
TF_FLAG(tfSingleAsset, 0x00080000) \
TF_FLAG(tfTwoAsset, 0x00100000) \
TF_FLAG(tfOneAssetLPToken, 0x00200000) \
TF_FLAG(tfLimitLPToken, 0x00400000) \
TF_FLAG(tfTwoAssetIfEmpty, 0x00800000), \
MASK_ADJ(0)) \
\
TRANSACTION(AMMWithdraw, \
TF_FLAG2(kTF_LP_TOKEN, 0x00010000) \
TF_FLAG(kTF_WITHDRAW_ALL, 0x00020000) \
TF_FLAG(kTF_ONE_ASSET_WITHDRAW_ALL, 0x00040000) \
TF_FLAG2(kTF_SINGLE_ASSET, 0x00080000) \
TF_FLAG2(kTF_TWO_ASSET, 0x00100000) \
TF_FLAG2(kTF_ONE_ASSET_LP_TOKEN, 0x00200000) \
TF_FLAG2(kTF_LIMIT_LP_TOKEN, 0x00400000), \
TF_FLAG2(tfLPToken, 0x00010000) \
TF_FLAG(tfWithdrawAll, 0x00020000) \
TF_FLAG(tfOneAssetWithdrawAll, 0x00040000) \
TF_FLAG2(tfSingleAsset, 0x00080000) \
TF_FLAG2(tfTwoAsset, 0x00100000) \
TF_FLAG2(tfOneAssetLPToken, 0x00200000) \
TF_FLAG2(tfLimitLPToken, 0x00400000), \
MASK_ADJ(0)) \
\
TRANSACTION(AMMClawback, \
TF_FLAG(kTF_CLAW_TWO_ASSETS, 0x00000001), \
TF_FLAG(tfClawTwoAssets, 0x00000001), \
MASK_ADJ(0)) \
\
TRANSACTION(XChainModifyBridge, \
TF_FLAG(kTF_CLEAR_ACCOUNT_CREATE_AMOUNT, 0x00010000), \
TF_FLAG(tfClearAccountCreateAmount, 0x00010000), \
MASK_ADJ(0)) \
\
TRANSACTION(VaultCreate, \
TF_FLAG(kTF_VAULT_PRIVATE, LsfVaultPrivate) \
TF_FLAG(kTF_VAULT_SHARE_NON_TRANSFERABLE, 0x00020000), \
TF_FLAG(tfVaultPrivate, lsfVaultPrivate) \
TF_FLAG(tfVaultShareNonTransferable, 0x00020000), \
MASK_ADJ(0)) \
\
TRANSACTION(Batch, \
TF_FLAG(kTF_ALL_OR_NOTHING, 0x00010000) \
TF_FLAG(kTF_ONLY_ONE, 0x00020000) \
TF_FLAG(kTF_UNTIL_FAILURE, 0x00040000) \
TF_FLAG(kTF_INDEPENDENT, 0x00080000), \
MASK_ADJ(kTF_INNER_BATCH_TXN)) /* Batch must reject tfInnerBatchTxn - only inner transactions should have this flag */ \
TF_FLAG(tfAllOrNothing, 0x00010000) \
TF_FLAG(tfOnlyOne, 0x00020000) \
TF_FLAG(tfUntilFailure, 0x00040000) \
TF_FLAG(tfIndependent, 0x00080000), \
MASK_ADJ(tfInnerBatchTxn)) /* Batch must reject tfInnerBatchTxn - only inner transactions should have this flag */ \
\
TRANSACTION(LoanSet, /* True indicates the loan supports overpayments */ \
TF_FLAG(kTF_LOAN_OVERPAYMENT, 0x00010000), \
TF_FLAG(tfLoanOverpayment, 0x00010000), \
MASK_ADJ(0)) \
\
TRANSACTION(LoanPay, /* True indicates any excess in this payment can be used as an overpayment. */ \
/* False: no overpayments will be taken. */ \
TF_FLAG2(kTF_LOAN_OVERPAYMENT, 0x00010000) \
TF_FLAG(kTF_LOAN_FULL_PAYMENT, 0x00020000) /* True indicates that the payment is an early full payment. */ \
TF_FLAG2(tfLoanOverpayment, 0x00010000) \
TF_FLAG(tfLoanFullPayment, 0x00020000) /* True indicates that the payment is an early full payment. */ \
/* It must pay the entire loan including close interest and fees, or it will fail. */ \
/* False: Not a full payment. */ \
TF_FLAG(kTF_LOAN_LATE_PAYMENT, 0x00040000), /* True indicates that the payment is late, and includes late interest and fees. */ \
TF_FLAG(tfLoanLatePayment, 0x00040000), /* True indicates that the payment is late, and includes late interest and fees. */ \
/* If the loan is not late, it will fail. */ \
/* False: not a late payment. If the current payment is overdue, the transaction will fail.*/ \
MASK_ADJ(0)) \
\
TRANSACTION(LoanManage, \
TF_FLAG(kTF_LOAN_DEFAULT, 0x00010000) \
TF_FLAG(kTF_LOAN_IMPAIR, 0x00020000) \
TF_FLAG(kTF_LOAN_UNIMPAIR, 0x00040000), \
TF_FLAG(tfLoanDefault, 0x00010000) \
TF_FLAG(tfLoanImpair, 0x00020000) \
TF_FLAG(tfLoanUnimpair, 0x00040000), \
MASK_ADJ(0))
// clang-format on
@@ -246,16 +246,16 @@ XMACRO(TO_MASK, VALUE_TO_MASK, VALUE_TO_MASK, MASK_ADJ_TO_MASK)
// The outer Batch transaction must NOT have tfInnerBatchTxn set; only inner transactions should
// have it.
static_assert(
(tfBatchMask & kTF_INNER_BATCH_TXN) == kTF_INNER_BATCH_TXN,
(tfBatchMask & tfInnerBatchTxn) == tfInnerBatchTxn,
"tfBatchMask must include tfInnerBatchTxn to reject it on outer Batch");
// Verify that other transaction masks correctly allow tfInnerBatchTxn.
// Inner transactions need tfInnerBatchTxn to be valid, so these masks must not reject it.
static_assert(
(tfPaymentMask & kTF_INNER_BATCH_TXN) == 0,
(tfPaymentMask & tfInnerBatchTxn) == 0,
"tfPaymentMask must not reject tfInnerBatchTxn");
static_assert(
(tfAccountSetMask & kTF_INNER_BATCH_TXN) == 0,
(tfAccountSetMask & tfInnerBatchTxn) == 0,
"tfAccountSetMask must not reject tfInnerBatchTxn");
// Create getter functions for each set of flags using Meyer's singleton pattern.
@@ -284,9 +284,9 @@ XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP, NULL_MASK_ADJ)
inline FlagMap const&
getUniversalFlags()
{
static FlagMap const kFLAGS = {
{"tfFullyCanonicalSig", kTF_FULLY_CANONICAL_SIG}, {"tfInnerBatchTxn", kTF_INNER_BATCH_TXN}};
return kFLAGS;
static FlagMap const flags = {
{"tfFullyCanonicalSig", tfFullyCanonicalSig}, {"tfInnerBatchTxn", tfInnerBatchTxn}};
return flags;
}
// Create a getter function for all transaction flag maps using Meyer's singleton pattern.
@@ -304,10 +304,10 @@ using FlagMapPairList = std::vector<std::pair<std::string, FlagMap>>;
inline FlagMapPairList const&
getAllTxFlags()
{
static FlagMapPairList const kFLAGS = {
static FlagMapPairList const flags = {
{"universal", getUniversalFlags()},
XMACRO(ALL_TX_FLAGS, NULL_OUTPUT, NULL_OUTPUT, NULL_MASK_ADJ)};
return kFLAGS;
return flags;
}
#undef XMACRO
@@ -335,46 +335,44 @@ getAllTxFlags()
#pragma pop_macro("MASK_ADJ_TO_MASK")
// Additional transaction masks and combos
inline constexpr FlagValue kTF_MPT_PAYMENT_MASK = ~(tfUniversal | kTF_PARTIAL_PAYMENT);
inline constexpr FlagValue kTF_TRUST_SET_PERMISSION_MASK =
~(tfUniversal | kTF_SETF_AUTH | kTF_SET_FREEZE | kTF_CLEAR_FREEZE);
inline constexpr FlagValue tfMPTPaymentMask = ~(tfUniversal | tfPartialPayment);
inline constexpr FlagValue tfTrustSetPermissionMask =
~(tfUniversal | tfSetfAuth | tfSetFreeze | tfClearFreeze);
// MPTokenIssuanceCreate MutableFlags:
// Indicating specific fields or flags may be changed after issuance.
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_LOCK = LsmfMptCanMutateCanLock;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_REQUIRE_AUTH = LsmfMptCanMutateRequireAuth;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_ESCROW = LsmfMptCanMutateCanEscrow;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_TRADE = LsmfMptCanMutateCanTrade;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_TRANSFER = LsmfMptCanMutateCanTransfer;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_CAN_CLAWBACK = LsmfMptCanMutateCanClawback;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_METADATA = LsmfMptCanMutateMetadata;
inline constexpr FlagValue kTMF_MPT_CAN_MUTATE_TRANSFER_FEE = LsmfMptCanMutateTransferFee;
inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_CREATE_MUTABLE_MASK =
~(kTMF_MPT_CAN_MUTATE_CAN_LOCK | kTMF_MPT_CAN_MUTATE_REQUIRE_AUTH |
kTMF_MPT_CAN_MUTATE_CAN_ESCROW | kTMF_MPT_CAN_MUTATE_CAN_TRADE |
kTMF_MPT_CAN_MUTATE_CAN_TRANSFER | kTMF_MPT_CAN_MUTATE_CAN_CLAWBACK |
kTMF_MPT_CAN_MUTATE_METADATA | kTMF_MPT_CAN_MUTATE_TRANSFER_FEE);
inline constexpr FlagValue tmfMPTCanMutateCanLock = lsmfMPTCanMutateCanLock;
inline constexpr FlagValue tmfMPTCanMutateRequireAuth = lsmfMPTCanMutateRequireAuth;
inline constexpr FlagValue tmfMPTCanMutateCanEscrow = lsmfMPTCanMutateCanEscrow;
inline constexpr FlagValue tmfMPTCanMutateCanTrade = lsmfMPTCanMutateCanTrade;
inline constexpr FlagValue tmfMPTCanMutateCanTransfer = lsmfMPTCanMutateCanTransfer;
inline constexpr FlagValue tmfMPTCanMutateCanClawback = lsmfMPTCanMutateCanClawback;
inline constexpr FlagValue tmfMPTCanMutateMetadata = lsmfMPTCanMutateMetadata;
inline constexpr FlagValue tmfMPTCanMutateTransferFee = lsmfMPTCanMutateTransferFee;
inline constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask =
~(tmfMPTCanMutateCanLock | tmfMPTCanMutateRequireAuth | tmfMPTCanMutateCanEscrow |
tmfMPTCanMutateCanTrade | tmfMPTCanMutateCanTransfer | tmfMPTCanMutateCanClawback |
tmfMPTCanMutateMetadata | tmfMPTCanMutateTransferFee);
// MPTokenIssuanceSet MutableFlags:
// Set or Clear flags.
inline constexpr FlagValue kTMF_MPT_SET_CAN_LOCK = 0x00000001;
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_LOCK = 0x00000002;
inline constexpr FlagValue kTMF_MPT_SET_REQUIRE_AUTH = 0x00000004;
inline constexpr FlagValue kTMF_MPT_CLEAR_REQUIRE_AUTH = 0x00000008;
inline constexpr FlagValue kTMF_MPT_SET_CAN_ESCROW = 0x00000010;
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_ESCROW = 0x00000020;
inline constexpr FlagValue kTMF_MPT_SET_CAN_TRADE = 0x00000040;
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_TRADE = 0x00000080;
inline constexpr FlagValue kTMF_MPT_SET_CAN_TRANSFER = 0x00000100;
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_TRANSFER = 0x00000200;
inline constexpr FlagValue kTMF_MPT_SET_CAN_CLAWBACK = 0x00000400;
inline constexpr FlagValue kTMF_MPT_CLEAR_CAN_CLAWBACK = 0x00000800;
inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_SET_MUTABLE_MASK =
~(kTMF_MPT_SET_CAN_LOCK | kTMF_MPT_CLEAR_CAN_LOCK | kTMF_MPT_SET_REQUIRE_AUTH |
kTMF_MPT_CLEAR_REQUIRE_AUTH | kTMF_MPT_SET_CAN_ESCROW | kTMF_MPT_CLEAR_CAN_ESCROW |
kTMF_MPT_SET_CAN_TRADE | kTMF_MPT_CLEAR_CAN_TRADE | kTMF_MPT_SET_CAN_TRANSFER |
kTMF_MPT_CLEAR_CAN_TRANSFER | kTMF_MPT_SET_CAN_CLAWBACK | kTMF_MPT_CLEAR_CAN_CLAWBACK);
inline constexpr FlagValue tmfMPTSetCanLock = 0x00000001;
inline constexpr FlagValue tmfMPTClearCanLock = 0x00000002;
inline constexpr FlagValue tmfMPTSetRequireAuth = 0x00000004;
inline constexpr FlagValue tmfMPTClearRequireAuth = 0x00000008;
inline constexpr FlagValue tmfMPTSetCanEscrow = 0x00000010;
inline constexpr FlagValue tmfMPTClearCanEscrow = 0x00000020;
inline constexpr FlagValue tmfMPTSetCanTrade = 0x00000040;
inline constexpr FlagValue tmfMPTClearCanTrade = 0x00000080;
inline constexpr FlagValue tmfMPTSetCanTransfer = 0x00000100;
inline constexpr FlagValue tmfMPTClearCanTransfer = 0x00000200;
inline constexpr FlagValue tmfMPTSetCanClawback = 0x00000400;
inline constexpr FlagValue tmfMPTClearCanClawback = 0x00000800;
inline constexpr FlagValue tmfMPTokenIssuanceSetMutableMask = ~(
tmfMPTSetCanLock | tmfMPTClearCanLock | tmfMPTSetRequireAuth | tmfMPTClearRequireAuth |
tmfMPTSetCanEscrow | tmfMPTClearCanEscrow | tmfMPTSetCanTrade | tmfMPTClearCanTrade |
tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | tmfMPTSetCanClawback | tmfMPTClearCanClawback);
// Prior to fixRemoveNFTokenAutoTrustLine, transfer of an NFToken between accounts allowed a
// TrustLine to be added to the issuer of that token without explicit permission from that issuer.
@@ -387,46 +385,44 @@ inline constexpr FlagValue kTMF_MP_TOKEN_ISSUANCE_SET_MUTABLE_MASK =
// The fixRemoveNFTokenAutoTrustLine amendment disables minting with the tfTrustLine flag as a way
// to prevent the attack. But until the amendment passes we still need to keep the old behavior
// available.
inline constexpr FlagValue kTF_TRUST_LINE = 0x00000004; // needed for backwards compatibility
inline constexpr FlagValue kTF_NF_TOKEN_MINT_MASK_WITHOUT_MUTABLE =
~(tfUniversal | kTF_BURNABLE | kTF_ONLY_XRP | kTF_TRANSFERABLE);
inline constexpr FlagValue tfTrustLine = 0x00000004; // needed for backwards compatibility
inline constexpr FlagValue tfNFTokenMintMaskWithoutMutable =
~(tfUniversal | tfBurnable | tfOnlyXRP | tfTransferable);
inline constexpr FlagValue kTF_NF_TOKEN_MINT_OLD_MASK =
~(~kTF_NF_TOKEN_MINT_MASK_WITHOUT_MUTABLE | kTF_TRUST_LINE);
inline constexpr FlagValue tfNFTokenMintOldMask = ~(~tfNFTokenMintMaskWithoutMutable | tfTrustLine);
// if featureDynamicNFT enabled then new flag allowing mutable URI available.
inline constexpr FlagValue kTF_NF_TOKEN_MINT_OLD_MASK_WITH_MUTABLE =
~(~kTF_NF_TOKEN_MINT_OLD_MASK | kTF_MUTABLE);
inline constexpr FlagValue tfNFTokenMintOldMaskWithMutable = ~(~tfNFTokenMintOldMask | tfMutable);
inline constexpr FlagValue kTF_WITHDRAW_SUB_TX = kTF_LP_TOKEN | kTF_SINGLE_ASSET | kTF_TWO_ASSET |
kTF_ONE_ASSET_LP_TOKEN | kTF_LIMIT_LP_TOKEN | kTF_WITHDRAW_ALL | kTF_ONE_ASSET_WITHDRAW_ALL;
inline constexpr FlagValue kTF_DEPOSIT_SUB_TX = kTF_LP_TOKEN | kTF_SINGLE_ASSET | kTF_TWO_ASSET |
kTF_ONE_ASSET_LP_TOKEN | kTF_LIMIT_LP_TOKEN | kTF_TWO_ASSET_IF_EMPTY;
inline constexpr FlagValue tfWithdrawSubTx = tfLPToken | tfSingleAsset | tfTwoAsset |
tfOneAssetLPToken | tfLimitLPToken | tfWithdrawAll | tfOneAssetWithdrawAll;
inline constexpr FlagValue tfDepositSubTx =
tfLPToken | tfSingleAsset | tfTwoAsset | tfOneAssetLPToken | tfLimitLPToken | tfTwoAssetIfEmpty;
#pragma push_macro("ACCOUNTSET_FLAGS")
#pragma push_macro("ACCOUNTSET_FLAG_TO_VALUE")
#pragma push_macro("ACCOUNTSET_FLAG_TO_MAP")
// AccountSet SetFlag/ClearFlag values
#define ACCOUNTSET_FLAGS(ASF_FLAG) \
ASF_FLAG(kASF_REQUIRE_DEST, 1) \
ASF_FLAG(kASF_REQUIRE_AUTH, 2) \
ASF_FLAG(kASF_DISALLOW_XRP, 3) \
ASF_FLAG(kASF_DISABLE_MASTER, 4) \
ASF_FLAG(kASF_ACCOUNT_TXN_ID, 5) \
ASF_FLAG(kASF_NO_FREEZE, 6) \
ASF_FLAG(kASF_GLOBAL_FREEZE, 7) \
ASF_FLAG(kASF_DEFAULT_RIPPLE, 8) \
ASF_FLAG(kASF_DEPOSIT_AUTH, 9) \
ASF_FLAG(kASF_AUTHORIZED_NF_TOKEN_MINTER, 10) \
/* 11 is reserved for Hooks amendment */ \
/* ASF_FLAG(asfTshCollect, 11) */ \
ASF_FLAG(kASF_DISALLOW_INCOMING_NF_TOKEN_OFFER, 12) \
ASF_FLAG(kASF_DISALLOW_INCOMING_CHECK, 13) \
ASF_FLAG(kASF_DISALLOW_INCOMING_PAY_CHAN, 14) \
ASF_FLAG(kASF_DISALLOW_INCOMING_TRUSTLINE, 15) \
ASF_FLAG(kASF_ALLOW_TRUST_LINE_CLAWBACK, 16) \
ASF_FLAG(kASF_ALLOW_TRUST_LINE_LOCKING, 17)
#define ACCOUNTSET_FLAGS(ASF_FLAG) \
ASF_FLAG(asfRequireDest, 1) \
ASF_FLAG(asfRequireAuth, 2) \
ASF_FLAG(asfDisallowXRP, 3) \
ASF_FLAG(asfDisableMaster, 4) \
ASF_FLAG(asfAccountTxnID, 5) \
ASF_FLAG(asfNoFreeze, 6) \
ASF_FLAG(asfGlobalFreeze, 7) \
ASF_FLAG(asfDefaultRipple, 8) \
ASF_FLAG(asfDepositAuth, 9) \
ASF_FLAG(asfAuthorizedNFTokenMinter, 10) \
/* 11 is reserved for Hooks amendment */ \
/* ASF_FLAG(asfTshCollect, 11) */ \
ASF_FLAG(asfDisallowIncomingNFTokenOffer, 12) \
ASF_FLAG(asfDisallowIncomingCheck, 13) \
ASF_FLAG(asfDisallowIncomingPayChan, 14) \
ASF_FLAG(asfDisallowIncomingTrustline, 15) \
ASF_FLAG(asfAllowTrustLineClawback, 16) \
ASF_FLAG(asfAllowTrustLineLocking, 17)
#define ACCOUNTSET_FLAG_TO_VALUE(name, value) inline constexpr FlagValue name = value;
#define ACCOUNTSET_FLAG_TO_MAP(name, value) {#name, value},
@@ -436,9 +432,9 @@ ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_VALUE)
inline std::map<std::string, FlagValue> const&
getAsfFlagMap()
{
static std::map<std::string, FlagValue> const kFLAGS = {
static std::map<std::string, FlagValue> const flags = {
ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_MAP)};
return kFLAGS;
return flags;
}
#undef ACCOUNTSET_FLAG_TO_VALUE

File diff suppressed because it is too large Load Diff

View File

@@ -220,7 +220,7 @@ public:
{
// Most transactors do nothing
// after checkSeq/Fee/Sign.
return TesSuccess;
return tesSUCCESS;
}
static NotTEC
@@ -456,10 +456,10 @@ Transactor::invokePreflight(PreflightContext const& ctx)
auto const feature = Permission::getInstance().getTxFeature(ctx.tx.getTxnType());
if (feature && !ctx.rules.enabled(*feature))
return TemDisabled;
return temDISABLED;
if (!T::checkExtraFeatures(ctx))
return TemDisabled;
return temDISABLED;
if (auto const ret = preflight1(ctx, T::getFlagsMask(ctx)))
return ret;