5#include <xrpl/protocol/KnownFormats.h>
38#pragma push_macro("LEDGER_ENTRY")
41#define LEDGER_ENTRY(tag, value, ...) tag = value,
43#include <xrpl/protocol/detail/ledger_entries.macro>
46#pragma pop_macro("LEDGER_ENTRY")
79 ltNICKNAME [[deprecated(
"This object type is not supported and should not be used.")]] = 0x006e,
87 ltCONTRACT [[deprecated(
"This object type is not supported and should not be used.")]] = 0x0063,
95 ltGENERATOR_MAP [[deprecated(
"This object type is not supported and should not be used.")]] =
109#pragma push_macro("XMACRO")
110#pragma push_macro("TO_VALUE")
111#pragma push_macro("VALUE_TO_MAP")
112#pragma push_macro("NULL_NAME")
113#pragma push_macro("TO_MAP")
114#pragma push_macro("ALL_LEDGER_FLAGS")
122#undef ALL_LEDGER_FLAGS
126#define XMACRO(LEDGER_OBJECT, LSF_FLAG, LSF_FLAG2) \
127 LEDGER_OBJECT(AccountRoot, \
128 LSF_FLAG(lsfPasswordSpent, 0x00010000) \
129 LSF_FLAG(lsfRequireDestTag, 0x00020000) \
130 LSF_FLAG(lsfRequireAuth, 0x00040000) \
131 LSF_FLAG(lsfDisallowXRP, 0x00080000) \
132 LSF_FLAG(lsfDisableMaster, 0x00100000) \
133 LSF_FLAG(lsfNoFreeze, 0x00200000) \
134 LSF_FLAG(lsfGlobalFreeze, 0x00400000) \
135 LSF_FLAG(lsfDefaultRipple, 0x00800000) \
136 LSF_FLAG(lsfDepositAuth, 0x01000000) \
137 LSF_FLAG(lsfDisallowIncomingNFTokenOffer, 0x04000000) \
138 LSF_FLAG(lsfDisallowIncomingCheck, 0x08000000) \
139 LSF_FLAG(lsfDisallowIncomingPayChan, 0x10000000) \
140 LSF_FLAG(lsfDisallowIncomingTrustline, 0x20000000) \
141 LSF_FLAG(lsfAllowTrustLineLocking, 0x40000000) \
142 LSF_FLAG(lsfAllowTrustLineClawback, 0x80000000)) \
144 LEDGER_OBJECT(Offer, \
145 LSF_FLAG(lsfPassive, 0x00010000) \
146 LSF_FLAG(lsfSell, 0x00020000) \
147 LSF_FLAG(lsfHybrid, 0x00040000)) \
149 LEDGER_OBJECT(RippleState, \
150 LSF_FLAG(lsfLowReserve, 0x00010000) \
151 LSF_FLAG(lsfHighReserve, 0x00020000) \
152 LSF_FLAG(lsfLowAuth, 0x00040000) \
153 LSF_FLAG(lsfHighAuth, 0x00080000) \
154 LSF_FLAG(lsfLowNoRipple, 0x00100000) \
155 LSF_FLAG(lsfHighNoRipple, 0x00200000) \
156 LSF_FLAG(lsfLowFreeze, 0x00400000) \
157 LSF_FLAG(lsfHighFreeze, 0x00800000) \
158 LSF_FLAG(lsfAMMNode, 0x01000000) \
160 LSF_FLAG(lsfLowDeepFreeze, 0x02000000) \
161 LSF_FLAG(lsfHighDeepFreeze, 0x04000000)) \
163 LEDGER_OBJECT(SignerList, \
164 LSF_FLAG(lsfOneOwnerCount, 0x00010000)) \
166 LEDGER_OBJECT(DirNode, \
167 LSF_FLAG(lsfNFTokenBuyOffers, 0x00000001) \
168 LSF_FLAG(lsfNFTokenSellOffers, 0x00000002)) \
170 LEDGER_OBJECT(NFTokenOffer, \
171 LSF_FLAG(lsfSellNFToken, 0x00000001)) \
173 LEDGER_OBJECT(MPTokenIssuance, \
174 LSF_FLAG(lsfMPTLocked, 0x00000001) \
175 LSF_FLAG(lsfMPTCanLock, 0x00000002) \
176 LSF_FLAG(lsfMPTRequireAuth, 0x00000004) \
177 LSF_FLAG(lsfMPTCanEscrow, 0x00000008) \
178 LSF_FLAG(lsfMPTCanTrade, 0x00000010) \
179 LSF_FLAG(lsfMPTCanTransfer, 0x00000020) \
180 LSF_FLAG(lsfMPTCanClawback, 0x00000040) \
181 LSF_FLAG(lsfMPTCanHoldConfidentialBalance, 0x00000080)) \
183 LEDGER_OBJECT(MPTokenIssuanceMutable, \
184 LSF_FLAG(lsmfMPTCanEnableCanLock, 0x00000002) \
185 LSF_FLAG(lsmfMPTCanEnableRequireAuth, 0x00000004) \
186 LSF_FLAG(lsmfMPTCanEnableCanEscrow, 0x00000008) \
187 LSF_FLAG(lsmfMPTCanEnableCanTrade, 0x00000010) \
188 LSF_FLAG(lsmfMPTCanEnableCanTransfer, 0x00000020) \
189 LSF_FLAG(lsmfMPTCanEnableCanClawback, 0x00000040) \
190 LSF_FLAG(lsmfMPTCannotEnableCanHoldConfidentialBalance, 0x00000080) \
191 LSF_FLAG(lsmfMPTCanMutateMetadata, 0x00010000) \
192 LSF_FLAG(lsmfMPTCanMutateTransferFee, 0x00020000)) \
194 LEDGER_OBJECT(MPToken, \
195 LSF_FLAG2(lsfMPTLocked, 0x00000001) \
196 LSF_FLAG(lsfMPTAuthorized, 0x00000002) \
197 LSF_FLAG(lsfMPTAMM, 0x00000004)) \
199 LEDGER_OBJECT(Credential, \
200 LSF_FLAG(lsfAccepted, 0x00010000)) \
202 LEDGER_OBJECT(Vault, \
203 LSF_FLAG(lsfVaultPrivate, 0x00010000)) \
205 LEDGER_OBJECT(Loan, \
206 LSF_FLAG(lsfLoanDefault, 0x00010000) \
207 LSF_FLAG(lsfLoanImpaired, 0x00020000) \
208 LSF_FLAG(lsfLoanOverpayment, 0x00040000))
220#define TO_VALUE(name, value) name = (value),
221#define NULL_NAME(name, values) values
222#define NULL_OUTPUT(name, value)
240#define VALUE_TO_MAP(name, value) {#name, value},
241#define TO_MAP(name, values) \
242 inline LedgerFlagMap const& get##name##Flags() \
244 static LedgerFlagMap const flags = {values}; \
247XMACRO(TO_MAP, VALUE_TO_MAP, VALUE_TO_MAP)
259#define ALL_LEDGER_FLAGS(name, values) {#name, get##name##Flags()},
264 XMACRO(ALL_LEDGER_FLAGS, NULL_OUTPUT, NULL_OUTPUT)};
274#undef ALL_LEDGER_FLAGS
276#pragma pop_macro("XMACRO")
277#pragma pop_macro("TO_VALUE")
278#pragma pop_macro("VALUE_TO_MAP")
279#pragma pop_macro("NULL_NAME")
280#pragma pop_macro("TO_MAP")
281#pragma pop_macro("ALL_LEDGER_FLAGS")
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::map< std::string, std::uint32_t > LedgerFlagMap
std::vector< std::pair< std::string, LedgerFlagMap > > const & getAllLedgerFlags()
LedgerEntryType
Identifiers for on-ledger objects.
@ ltGENERATOR_MAP
A legacy, deprecated type.
@ ltNICKNAME
A legacy, deprecated type.
@ ltCONTRACT
A legacy, deprecated type.
@ ltANY
A special type, matching any ledger entry type.
@ ltCHILD
A special type, matching any ledger type except directory nodes.