5#include <xrpl/protocol/LedgerFormats.h>
47#pragma push_macro("XMACRO")
48#pragma push_macro("TO_VALUE")
49#pragma push_macro("VALUE_TO_MAP")
50#pragma push_macro("NULL_NAME")
51#pragma push_macro("NULL_OUTPUT")
52#pragma push_macro("TO_MAP")
53#pragma push_macro("TO_MASK")
54#pragma push_macro("VALUE_TO_MASK")
55#pragma push_macro("ALL_TX_FLAGS")
56#pragma push_macro("NULL_MASK_ADJ")
57#pragma push_macro("MASK_ADJ_TO_MASK")
68#undef MASK_ADJ_TO_MASK
84#define XMACRO(TRANSACTION, TF_FLAG, TF_FLAG2, MASK_ADJ) \
85 TRANSACTION(AccountSet, \
86 TF_FLAG(tfRequireDestTag, 0x00010000) \
87 TF_FLAG(tfOptionalDestTag, 0x00020000) \
88 TF_FLAG(tfRequireAuth, 0x00040000) \
89 TF_FLAG(tfOptionalAuth, 0x00080000) \
90 TF_FLAG(tfDisallowXRP, 0x00100000) \
91 TF_FLAG(tfAllowXRP, 0x00200000), \
94 TRANSACTION(OfferCreate, \
95 TF_FLAG(tfPassive, 0x00010000) \
96 TF_FLAG(tfImmediateOrCancel, 0x00020000) \
97 TF_FLAG(tfFillOrKill, 0x00040000) \
98 TF_FLAG(tfSell, 0x00080000) \
99 TF_FLAG(tfHybrid, 0x00100000), \
102 TRANSACTION(Payment, \
103 TF_FLAG(tfNoRippleDirect, 0x00010000) \
104 TF_FLAG(tfPartialPayment, 0x00020000) \
105 TF_FLAG(tfLimitQuality, 0x00040000), \
108 TRANSACTION(TrustSet, \
109 TF_FLAG(tfSetfAuth, 0x00010000) \
110 TF_FLAG(tfSetNoRipple, 0x00020000) \
111 TF_FLAG(tfClearNoRipple, 0x00040000) \
112 TF_FLAG(tfSetFreeze, 0x00100000) \
113 TF_FLAG(tfClearFreeze, 0x00200000) \
114 TF_FLAG(tfSetDeepFreeze, 0x00400000) \
115 TF_FLAG(tfClearDeepFreeze, 0x00800000), \
118 TRANSACTION(EnableAmendment, \
119 TF_FLAG(tfGotMajority, 0x00010000) \
120 TF_FLAG(tfLostMajority, 0x00020000), \
123 TRANSACTION(PaymentChannelClaim, \
124 TF_FLAG(tfRenew, 0x00010000) \
125 TF_FLAG(tfClose, 0x00020000), \
128 TRANSACTION(NFTokenMint, \
129 TF_FLAG(tfBurnable, 0x00000001) \
130 TF_FLAG(tfOnlyXRP, 0x00000002) \
132 TF_FLAG(tfTransferable, 0x00000008) \
133 TF_FLAG(tfMutable, 0x00000010), \
136 TRANSACTION(MPTokenIssuanceCreate, \
138 TF_FLAG(tfMPTCanLock, lsfMPTCanLock) \
139 TF_FLAG(tfMPTRequireAuth, lsfMPTRequireAuth) \
140 TF_FLAG(tfMPTCanEscrow, lsfMPTCanEscrow) \
141 TF_FLAG(tfMPTCanTrade, lsfMPTCanTrade) \
142 TF_FLAG(tfMPTCanTransfer, lsfMPTCanTransfer) \
143 TF_FLAG(tfMPTCanClawback, lsfMPTCanClawback) \
144 TF_FLAG(tfMPTCanHoldConfidentialBalance, lsfMPTCanHoldConfidentialBalance), \
147 TRANSACTION(MPTokenAuthorize, \
148 TF_FLAG(tfMPTUnauthorize, 0x00000001), \
151 TRANSACTION(MPTokenIssuanceSet, \
152 TF_FLAG(tfMPTLock, 0x00000001) \
153 TF_FLAG(tfMPTUnlock, 0x00000002), \
156 TRANSACTION(NFTokenCreateOffer, \
157 TF_FLAG(tfSellNFToken, 0x00000001), \
160 TRANSACTION(AMMDeposit, \
161 TF_FLAG(tfLPToken, 0x00010000) \
162 TF_FLAG(tfSingleAsset, 0x00080000) \
163 TF_FLAG(tfTwoAsset, 0x00100000) \
164 TF_FLAG(tfOneAssetLPToken, 0x00200000) \
165 TF_FLAG(tfLimitLPToken, 0x00400000) \
166 TF_FLAG(tfTwoAssetIfEmpty, 0x00800000), \
169 TRANSACTION(AMMWithdraw, \
170 TF_FLAG2(tfLPToken, 0x00010000) \
171 TF_FLAG(tfWithdrawAll, 0x00020000) \
172 TF_FLAG(tfOneAssetWithdrawAll, 0x00040000) \
173 TF_FLAG2(tfSingleAsset, 0x00080000) \
174 TF_FLAG2(tfTwoAsset, 0x00100000) \
175 TF_FLAG2(tfOneAssetLPToken, 0x00200000) \
176 TF_FLAG2(tfLimitLPToken, 0x00400000), \
179 TRANSACTION(AMMClawback, \
180 TF_FLAG(tfClawTwoAssets, 0x00000001), \
183 TRANSACTION(XChainModifyBridge, \
184 TF_FLAG(tfClearAccountCreateAmount, 0x00010000), \
187 TRANSACTION(VaultCreate, \
188 TF_FLAG(tfVaultPrivate, lsfVaultPrivate) \
189 TF_FLAG(tfVaultShareNonTransferable, 0x00020000), \
193 TF_FLAG(tfAllOrNothing, 0x00010000) \
194 TF_FLAG(tfOnlyOne, 0x00020000) \
195 TF_FLAG(tfUntilFailure, 0x00040000) \
196 TF_FLAG(tfIndependent, 0x00080000), \
197 MASK_ADJ(tfInnerBatchTxn)) \
199 TRANSACTION(LoanSet, \
200 TF_FLAG(tfLoanOverpayment, 0x00010000), \
203 TRANSACTION(LoanPay, \
205 TF_FLAG2(tfLoanOverpayment, 0x00010000) \
206 TF_FLAG(tfLoanFullPayment, 0x00020000) \
209 TF_FLAG(tfLoanLatePayment, 0x00040000), \
214 TRANSACTION(LoanManage, \
215 TF_FLAG(tfLoanDefault, 0x00010000) \
216 TF_FLAG(tfLoanImpair, 0x00020000) \
217 TF_FLAG(tfLoanUnimpair, 0x00040000), \
226#define TO_VALUE(name, value) inline constexpr FlagValue name = value;
227#define NULL_NAME(name, values, maskAdj) values
228#define NULL_OUTPUT(name, value)
229#define NULL_MASK_ADJ(value)
230XMACRO(NULL_NAME, TO_VALUE, NULL_OUTPUT, NULL_MASK_ADJ)
240#define TO_MASK(name, values, maskAdj) \
241 inline constexpr FlagValue tf##name##Mask = ~(tfUniversal values) | (maskAdj);
242#define VALUE_TO_MASK(name, value) | name
243#define MASK_ADJ_TO_MASK(value) value
244XMACRO(TO_MASK, VALUE_TO_MASK, VALUE_TO_MASK, MASK_ADJ_TO_MASK)
251 "tfBatchMask must include tfInnerBatchTxn to reject it on outer Batch");
257 "tfPaymentMask must not reject tfInnerBatchTxn");
260 "tfAccountSetMask must not reject tfInnerBatchTxn");
276#define VALUE_TO_MAP(name, value) {#name, value},
277#define TO_MAP(name, values, maskAdj) \
278 inline FlagMap const& get##name##Flags() \
280 static FlagMap const flags = {values}; \
283XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP, NULL_MASK_ADJ)
304#define ALL_TX_FLAGS(name, values, maskAdj) {#name, get##name##Flags()},
310 XMACRO(ALL_TX_FLAGS, NULL_OUTPUT, NULL_OUTPUT, NULL_MASK_ADJ)};
324#undef MASK_ADJ_TO_MASK
326#pragma pop_macro("XMACRO")
327#pragma pop_macro("TO_VALUE")
328#pragma pop_macro("VALUE_TO_MAP")
329#pragma pop_macro("NULL_NAME")
330#pragma pop_macro("NULL_OUTPUT")
331#pragma pop_macro("TO_MAP")
332#pragma pop_macro("TO_MASK")
333#pragma pop_macro("VALUE_TO_MASK")
334#pragma pop_macro("ALL_TX_FLAGS")
335#pragma pop_macro("NULL_MASK_ADJ")
336#pragma pop_macro("MASK_ADJ_TO_MASK")
341 ~(
tfUniversal | tfSetfAuth | tfSetFreeze | tfClearFreeze);
354 lsmfMPTCannotEnableCanHoldConfidentialBalance;
389 ~(
tfUniversal | tfBurnable | tfOnlyXRP | tfTransferable);
397 tfOneAssetLPToken | tfLimitLPToken | tfWithdrawAll | tfOneAssetWithdrawAll;
399 tfLPToken | tfSingleAsset | tfTwoAsset | tfOneAssetLPToken | tfLimitLPToken | tfTwoAssetIfEmpty;
401#pragma push_macro("ACCOUNTSET_FLAGS")
402#pragma push_macro("ACCOUNTSET_FLAG_TO_VALUE")
403#pragma push_macro("ACCOUNTSET_FLAG_TO_MAP")
406#define ACCOUNTSET_FLAGS(ASF_FLAG) \
407 ASF_FLAG(asfRequireDest, 1) \
408 ASF_FLAG(asfRequireAuth, 2) \
409 ASF_FLAG(asfDisallowXRP, 3) \
410 ASF_FLAG(asfDisableMaster, 4) \
411 ASF_FLAG(asfAccountTxnID, 5) \
412 ASF_FLAG(asfNoFreeze, 6) \
413 ASF_FLAG(asfGlobalFreeze, 7) \
414 ASF_FLAG(asfDefaultRipple, 8) \
415 ASF_FLAG(asfDepositAuth, 9) \
416 ASF_FLAG(asfAuthorizedNFTokenMinter, 10) \
419 ASF_FLAG(asfDisallowIncomingNFTokenOffer, 12) \
420 ASF_FLAG(asfDisallowIncomingCheck, 13) \
421 ASF_FLAG(asfDisallowIncomingPayChan, 14) \
422 ASF_FLAG(asfDisallowIncomingTrustline, 15) \
423 ASF_FLAG(asfAllowTrustLineClawback, 16) \
424 ASF_FLAG(asfAllowTrustLineLocking, 17)
426#define ACCOUNTSET_FLAG_TO_VALUE(name, value) inline constexpr FlagValue name = value;
427#define ACCOUNTSET_FLAG_TO_MAP(name, value) {#name, value},
429ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_VALUE)
435 ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_MAP)};
439#undef ACCOUNTSET_FLAG_TO_VALUE
440#undef ACCOUNTSET_FLAG_TO_MAP
441#undef ACCOUNTSET_FLAGS
443#pragma pop_macro("ACCOUNTSET_FLAG_TO_VALUE")
444#pragma pop_macro("ACCOUNTSET_FLAG_TO_MAP")
445#pragma pop_macro("ACCOUNTSET_FLAGS")
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr FlagValue tmfMPTCanEnableCanClawback
constexpr FlagValue tmfMPTCanEnableCanTransfer
constexpr FlagValue tfInnerBatchTxn
constexpr FlagValue tmfMPTSetCanLock
constexpr FlagValue tmfMPTSetCanClawback
std::uint32_t FlagValue
Transaction flags.
constexpr FlagValue tmfMPTCannotEnableCanHoldConfidentialBalance
constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask
constexpr FlagValue tfDepositSubTx
constexpr FlagValue tfTrustLine
constexpr FlagValue tfNFTokenMintMaskWithoutMutable
constexpr FlagValue tmfMPTSetCanHoldConfidentialBalance
constexpr FlagValue tfNFTokenMintOldMaskWithMutable
constexpr FlagValue tmfMPTCanEnableCanLock
constexpr FlagValue tmfMPTSetCanTrade
constexpr FlagValue tfTrustSetPermissionMask
std::vector< std::pair< std::string, FlagMap > > FlagMapPairList
constexpr FlagValue tfUniversal
constexpr FlagValue tmfMPTSetCanTransfer
constexpr FlagValue tmfMPTSetCanEscrow
constexpr FlagValue tfMPTPaymentMask
FlagMap const & getUniversalFlags()
FlagMapPairList const & getAllTxFlags()
constexpr FlagValue tmfMPTCanMutateMetadata
constexpr FlagValue tmfMPTokenIssuanceSetMutableMask
constexpr FlagValue tfNFTokenMintOldMask
constexpr FlagValue tmfMPTCanMutateTransferFee
std::map< std::string, FlagValue > FlagMap
constexpr FlagValue tmfMPTCanEnableRequireAuth
constexpr FlagValue tmfMPTCanEnableCanEscrow
constexpr FlagValue tmfMPTCanEnableCanTrade
std::map< std::string, FlagValue > const & getAsfFlagMap()
constexpr FlagValue tfWithdrawSubTx
constexpr FlagValue tfUniversalMask
constexpr FlagValue tfFullyCanonicalSig
constexpr FlagValue tmfMPTSetRequireAuth