3#include <xrpl/protocol/LedgerFormats.h>
45#pragma push_macro("XMACRO")
46#pragma push_macro("TO_VALUE")
47#pragma push_macro("VALUE_TO_MAP")
48#pragma push_macro("NULL_NAME")
49#pragma push_macro("NULL_OUTPUT")
50#pragma push_macro("TO_MAP")
51#pragma push_macro("TO_MASK")
52#pragma push_macro("VALUE_TO_MASK")
53#pragma push_macro("ALL_TX_FLAGS")
54#pragma push_macro("NULL_MASK_ADJ")
55#pragma push_macro("MASK_ADJ_TO_MASK")
66#undef MASK_ADJ_TO_MASK
82#define XMACRO(TRANSACTION, TF_FLAG, TF_FLAG2, MASK_ADJ) \
83 TRANSACTION(AccountSet, \
84 TF_FLAG(tfRequireDestTag, 0x00010000) \
85 TF_FLAG(tfOptionalDestTag, 0x00020000) \
86 TF_FLAG(tfRequireAuth, 0x00040000) \
87 TF_FLAG(tfOptionalAuth, 0x00080000) \
88 TF_FLAG(tfDisallowXRP, 0x00100000) \
89 TF_FLAG(tfAllowXRP, 0x00200000), \
92 TRANSACTION(OfferCreate, \
93 TF_FLAG(tfPassive, 0x00010000) \
94 TF_FLAG(tfImmediateOrCancel, 0x00020000) \
95 TF_FLAG(tfFillOrKill, 0x00040000) \
96 TF_FLAG(tfSell, 0x00080000) \
97 TF_FLAG(tfHybrid, 0x00100000), \
100 TRANSACTION(Payment, \
101 TF_FLAG(tfNoRippleDirect, 0x00010000) \
102 TF_FLAG(tfPartialPayment, 0x00020000) \
103 TF_FLAG(tfLimitQuality, 0x00040000), \
106 TRANSACTION(TrustSet, \
107 TF_FLAG(tfSetfAuth, 0x00010000) \
108 TF_FLAG(tfSetNoRipple, 0x00020000) \
109 TF_FLAG(tfClearNoRipple, 0x00040000) \
110 TF_FLAG(tfSetFreeze, 0x00100000) \
111 TF_FLAG(tfClearFreeze, 0x00200000) \
112 TF_FLAG(tfSetDeepFreeze, 0x00400000) \
113 TF_FLAG(tfClearDeepFreeze, 0x00800000), \
116 TRANSACTION(EnableAmendment, \
117 TF_FLAG(tfGotMajority, 0x00010000) \
118 TF_FLAG(tfLostMajority, 0x00020000), \
121 TRANSACTION(PaymentChannelClaim, \
122 TF_FLAG(tfRenew, 0x00010000) \
123 TF_FLAG(tfClose, 0x00020000), \
126 TRANSACTION(NFTokenMint, \
127 TF_FLAG(tfBurnable, 0x00000001) \
128 TF_FLAG(tfOnlyXRP, 0x00000002) \
130 TF_FLAG(tfTransferable, 0x00000008) \
131 TF_FLAG(tfMutable, 0x00000010), \
134 TRANSACTION(MPTokenIssuanceCreate, \
136 TF_FLAG(tfMPTCanLock, lsfMPTCanLock) \
137 TF_FLAG(tfMPTRequireAuth, lsfMPTRequireAuth) \
138 TF_FLAG(tfMPTCanEscrow, lsfMPTCanEscrow) \
139 TF_FLAG(tfMPTCanTrade, lsfMPTCanTrade) \
140 TF_FLAG(tfMPTCanTransfer, lsfMPTCanTransfer) \
141 TF_FLAG(tfMPTCanClawback, lsfMPTCanClawback), \
144 TRANSACTION(MPTokenAuthorize, \
145 TF_FLAG(tfMPTUnauthorize, 0x00000001), \
148 TRANSACTION(MPTokenIssuanceSet, \
149 TF_FLAG(tfMPTLock, 0x00000001) \
150 TF_FLAG(tfMPTUnlock, 0x00000002), \
153 TRANSACTION(NFTokenCreateOffer, \
154 TF_FLAG(tfSellNFToken, 0x00000001), \
157 TRANSACTION(AMMDeposit, \
158 TF_FLAG(tfLPToken, 0x00010000) \
159 TF_FLAG(tfSingleAsset, 0x00080000) \
160 TF_FLAG(tfTwoAsset, 0x00100000) \
161 TF_FLAG(tfOneAssetLPToken, 0x00200000) \
162 TF_FLAG(tfLimitLPToken, 0x00400000) \
163 TF_FLAG(tfTwoAssetIfEmpty, 0x00800000), \
166 TRANSACTION(AMMWithdraw, \
167 TF_FLAG2(tfLPToken, 0x00010000) \
168 TF_FLAG(tfWithdrawAll, 0x00020000) \
169 TF_FLAG(tfOneAssetWithdrawAll, 0x00040000) \
170 TF_FLAG2(tfSingleAsset, 0x00080000) \
171 TF_FLAG2(tfTwoAsset, 0x00100000) \
172 TF_FLAG2(tfOneAssetLPToken, 0x00200000) \
173 TF_FLAG2(tfLimitLPToken, 0x00400000), \
176 TRANSACTION(AMMClawback, \
177 TF_FLAG(tfClawTwoAssets, 0x00000001), \
180 TRANSACTION(XChainModifyBridge, \
181 TF_FLAG(tfClearAccountCreateAmount, 0x00010000), \
184 TRANSACTION(VaultCreate, \
185 TF_FLAG(tfVaultPrivate, lsfVaultPrivate) \
186 TF_FLAG(tfVaultShareNonTransferable, 0x00020000), \
190 TF_FLAG(tfAllOrNothing, 0x00010000) \
191 TF_FLAG(tfOnlyOne, 0x00020000) \
192 TF_FLAG(tfUntilFailure, 0x00040000) \
193 TF_FLAG(tfIndependent, 0x00080000), \
194 MASK_ADJ(tfInnerBatchTxn)) \
196 TRANSACTION(LoanSet, \
197 TF_FLAG(tfLoanOverpayment, 0x00010000), \
200 TRANSACTION(LoanPay, \
202 TF_FLAG2(tfLoanOverpayment, 0x00010000) \
203 TF_FLAG(tfLoanFullPayment, 0x00020000) \
206 TF_FLAG(tfLoanLatePayment, 0x00040000), \
211 TRANSACTION(LoanManage, \
212 TF_FLAG(tfLoanDefault, 0x00010000) \
213 TF_FLAG(tfLoanImpair, 0x00020000) \
214 TF_FLAG(tfLoanUnimpair, 0x00040000), \
223#define TO_VALUE(name, value) inline constexpr FlagValue name = value;
224#define NULL_NAME(name, values, maskAdj) values
225#define NULL_OUTPUT(name, value)
226#define NULL_MASK_ADJ(value)
227XMACRO(NULL_NAME, TO_VALUE, NULL_OUTPUT, NULL_MASK_ADJ)
237#define TO_MASK(name, values, maskAdj) \
238 inline constexpr FlagValue tf##name##Mask = ~(tfUniversal values) | maskAdj;
239#define VALUE_TO_MASK(name, value) | name
240#define MASK_ADJ_TO_MASK(value) value
241XMACRO(TO_MASK, VALUE_TO_MASK, VALUE_TO_MASK, MASK_ADJ_TO_MASK)
248 "tfBatchMask must include tfInnerBatchTxn to reject it on outer Batch");
254 "tfPaymentMask must not reject tfInnerBatchTxn");
257 "tfAccountSetMask must not reject tfInnerBatchTxn");
273#define VALUE_TO_MAP(name, value) {#name, value},
274#define TO_MAP(name, values, maskAdj) \
275 inline FlagMap const& get##name##Flags() \
277 static FlagMap const flags = {values}; \
280XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP, NULL_MASK_ADJ)
301#define ALL_TX_FLAGS(name, values, maskAdj) {#name, get##name##Flags()},
307 XMACRO(ALL_TX_FLAGS, NULL_OUTPUT, NULL_OUTPUT, NULL_MASK_ADJ)};
321#undef MASK_ADJ_TO_MASK
323#pragma pop_macro("XMACRO")
324#pragma pop_macro("TO_VALUE")
325#pragma pop_macro("VALUE_TO_MAP")
326#pragma pop_macro("NULL_NAME")
327#pragma pop_macro("NULL_OUTPUT")
328#pragma pop_macro("TO_MAP")
329#pragma pop_macro("TO_MASK")
330#pragma pop_macro("VALUE_TO_MASK")
331#pragma pop_macro("ALL_TX_FLAGS")
332#pragma pop_macro("NULL_MASK_ADJ")
333#pragma pop_macro("MASK_ADJ_TO_MASK")
338 ~(
tfUniversal | tfSetfAuth | tfSetFreeze | tfClearFreeze);
388 ~(
tfUniversal | tfBurnable | tfOnlyXRP | tfTransferable);
396 tfOneAssetLPToken | tfLimitLPToken | tfWithdrawAll | tfOneAssetWithdrawAll;
398 tfLPToken | tfSingleAsset | tfTwoAsset | tfOneAssetLPToken | tfLimitLPToken | tfTwoAssetIfEmpty;
400#pragma push_macro("ACCOUNTSET_FLAGS")
401#pragma push_macro("ACCOUNTSET_FLAG_TO_VALUE")
402#pragma push_macro("ACCOUNTSET_FLAG_TO_MAP")
405#define ACCOUNTSET_FLAGS(ASF_FLAG) \
406 ASF_FLAG(asfRequireDest, 1) \
407 ASF_FLAG(asfRequireAuth, 2) \
408 ASF_FLAG(asfDisallowXRP, 3) \
409 ASF_FLAG(asfDisableMaster, 4) \
410 ASF_FLAG(asfAccountTxnID, 5) \
411 ASF_FLAG(asfNoFreeze, 6) \
412 ASF_FLAG(asfGlobalFreeze, 7) \
413 ASF_FLAG(asfDefaultRipple, 8) \
414 ASF_FLAG(asfDepositAuth, 9) \
415 ASF_FLAG(asfAuthorizedNFTokenMinter, 10) \
418 ASF_FLAG(asfDisallowIncomingNFTokenOffer, 12) \
419 ASF_FLAG(asfDisallowIncomingCheck, 13) \
420 ASF_FLAG(asfDisallowIncomingPayChan, 14) \
421 ASF_FLAG(asfDisallowIncomingTrustline, 15) \
422 ASF_FLAG(asfAllowTrustLineClawback, 16) \
423 ASF_FLAG(asfAllowTrustLineLocking, 17)
425#define ACCOUNTSET_FLAG_TO_VALUE(name, value) inline constexpr FlagValue name = value;
426#define ACCOUNTSET_FLAG_TO_MAP(name, value) {#name, value},
428ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_VALUE)
434 ACCOUNTSET_FLAGS(ACCOUNTSET_FLAG_TO_MAP)};
438#undef ACCOUNTSET_FLAG_TO_VALUE
439#undef ACCOUNTSET_FLAG_TO_MAP
440#undef ACCOUNTSET_FLAGS
442#pragma pop_macro("ACCOUNTSET_FLAG_TO_VALUE")
443#pragma pop_macro("ACCOUNTSET_FLAG_TO_MAP")
444#pragma pop_macro("ACCOUNTSET_FLAGS")
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
constexpr FlagValue tfInnerBatchTxn
constexpr FlagValue tmfMPTSetCanLock
constexpr FlagValue tmfMPTSetCanClawback
constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask
constexpr FlagValue tfDepositSubTx
constexpr FlagValue tfTrustLine
constexpr FlagValue tmfMPTCanMutateCanEscrow
constexpr FlagValue tfNFTokenMintMaskWithoutMutable
constexpr FlagValue tmfMPTClearCanTrade
constexpr FlagValue tfNFTokenMintOldMaskWithMutable
constexpr FlagValue tmfMPTSetCanTrade
constexpr FlagValue tfTrustSetPermissionMask
constexpr FlagValue tmfMPTClearCanLock
constexpr FlagValue tmfMPTClearCanEscrow
constexpr FlagValue tfUniversal
constexpr FlagValue tmfMPTCanMutateCanLock
constexpr FlagValue tmfMPTSetCanTransfer
constexpr FlagValue tmfMPTSetCanEscrow
constexpr FlagValue tmfMPTCanMutateCanTransfer
constexpr FlagValue tmfMPTClearCanTransfer
constexpr FlagValue tfMPTPaymentMask
FlagMap const & getUniversalFlags()
constexpr FlagValue tmfMPTCanMutateRequireAuth
FlagMapPairList const & getAllTxFlags()
constexpr FlagValue tmfMPTCanMutateMetadata
constexpr FlagValue tmfMPTokenIssuanceSetMutableMask
constexpr FlagValue tfNFTokenMintOldMask
constexpr FlagValue tmfMPTCanMutateTransferFee
constexpr FlagValue tmfMPTCanMutateCanTrade
constexpr FlagValue tmfMPTCanMutateCanClawback
constexpr FlagValue tmfMPTClearRequireAuth
std::map< std::string, FlagValue > const & getAsfFlagMap()
constexpr FlagValue tfWithdrawSubTx
constexpr FlagValue tmfMPTClearCanClawback
constexpr FlagValue tfUniversalMask
constexpr FlagValue tfFullyCanonicalSig
constexpr FlagValue tmfMPTSetRequireAuth