rippled
SField.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_PROTOCOL_SFIELD_H_INCLUDED
21 #define RIPPLE_PROTOCOL_SFIELD_H_INCLUDED
22 
23 #include <ripple/basics/safe_cast.h>
24 #include <ripple/json/json_value.h>
25 #include <cstdint>
26 #include <map>
27 #include <utility>
28 
29 namespace ripple {
30 
31 /*
32 
33 Some fields have a different meaning for their
34  default value versus not present.
35  Example:
36  QualityIn on a TrustLine
37 
38 */
39 
40 //------------------------------------------------------------------------------
41 
42 // Forwards
43 class STAccount;
44 class STAmount;
45 class STBlob;
46 template <std::size_t>
48 template <class>
49 class STInteger;
50 class STVector256;
51 
53  // special types
55  STI_DONE = -1,
57 
58  // // types (common)
65  STI_VL = 7,
67  // 9-13 are reserved
68  STI_OBJECT = 14,
69  STI_ARRAY = 15,
70 
71  // types (uncommon)
72  STI_UINT8 = 16,
76 
77  // high level types
78  // cannot be serialized inside other types
79  STI_TRANSACTION = 10001,
80  STI_LEDGERENTRY = 10002,
81  STI_VALIDATION = 10003,
82  STI_METADATA = 10004,
83 };
84 
85 // constexpr
86 inline int
88 {
89  return (safe_cast<int>(id) << 16) | index;
90 }
91 
92 // constexpr
93 inline int
94 field_code(int id, int index)
95 {
96  return (id << 16) | index;
97 }
98 
109 class SField
110 {
111 public:
112  enum {
113  sMD_Never = 0x00,
114  sMD_ChangeOrig = 0x01, // original value when it changes
115  sMD_ChangeNew = 0x02, // new value when it changes
116  sMD_DeleteFinal = 0x04, // final value when it is deleted
117  sMD_Create = 0x08, // value when it's created
118  sMD_Always = 0x10, // value when node containing it is affected at all
121  };
122 
123  enum class IsSigning : unsigned char { no, yes };
125 
126  int const fieldCode; // (type<<16)|index
127  SerializedTypeID const fieldType; // STI_*
128  int const fieldValue; // Code number for protocol
130  int const fieldMeta;
131  int const fieldNum;
134 
135  SField(SField const&) = delete;
136  SField&
137  operator=(SField const&) = delete;
138  SField(SField&&) = delete;
139  SField&
140  operator=(SField&&) = delete;
141 
142 public:
143  struct private_access_tag_t; // public, but still an implementation detail
144 
145  // These constructors can only be called from SField.cpp
146  SField(
148  SerializedTypeID tid,
149  int fv,
150  const char* fn,
151  int meta = sMD_Default,
152  IsSigning signing = IsSigning::yes);
153  explicit SField(private_access_tag_t, int fc);
154 
155  static const SField&
156  getField(int fieldCode);
157  static const SField&
159  static const SField&
160  getField(int type, int value)
161  {
162  return getField(field_code(type, value));
163  }
164 
165  static const SField&
166  getField(SerializedTypeID type, int value)
167  {
168  return getField(field_code(type, value));
169  }
170 
171  std::string const&
172  getName() const
173  {
174  return fieldName;
175  }
176 
177  bool
178  hasName() const
179  {
180  return fieldCode > 0;
181  }
182 
183  Json::StaticString const&
184  getJsonName() const
185  {
186  return jsonName;
187  }
188 
189  bool
190  isGeneric() const
191  {
192  return fieldCode == 0;
193  }
194  bool
195  isInvalid() const
196  {
197  return fieldCode == -1;
198  }
199  bool
200  isUseful() const
201  {
202  return fieldCode > 0;
203  }
204  bool
205  isKnown() const
206  {
207  return fieldType != STI_UNKNOWN;
208  }
209  bool
210  isBinary() const
211  {
212  return fieldValue < 256;
213  }
214 
215  // A discardable field is one that cannot be serialized, and
216  // should be discarded during serialization,like 'hash'.
217  // You cannot serialize an object's hash inside that object,
218  // but you can have it in the JSON representation.
219  bool
221  {
222  return fieldValue > 256;
223  }
224 
225  int
226  getCode() const
227  {
228  return fieldCode;
229  }
230  int
231  getNum() const
232  {
233  return fieldNum;
234  }
235  static int
237  {
238  return num;
239  }
240 
241  bool
243  {
244  return signingField == IsSigning::yes;
245  }
246  bool
247  shouldMeta(int c) const
248  {
249  return (fieldMeta & c) != 0;
250  }
251 
252  bool
253  shouldInclude(bool withSigningField) const
254  {
255  return (fieldValue < 256) &&
256  (withSigningField || (signingField == IsSigning::yes));
257  }
258 
259  bool
260  operator==(const SField& f) const
261  {
262  return fieldCode == f.fieldCode;
263  }
264 
265  bool
266  operator!=(const SField& f) const
267  {
268  return fieldCode != f.fieldCode;
269  }
270 
271  static int
272  compare(const SField& f1, const SField& f2);
273 
274 private:
275  static int num;
277 };
278 
280 template <class T>
282 {
283  using type = T;
284 
285  template <class... Args>
286  explicit TypedField(Args&&... args) : SField(std::forward<Args>(args)...)
287  {
288  }
289 
290  TypedField(TypedField&& u) : SField(std::move(u))
291  {
292  }
293 };
294 
296 template <class T>
298 {
299  TypedField<T> const* f;
300 
301  explicit OptionaledField(TypedField<T> const& f_) : f(&f_)
302  {
303  }
304 };
305 
306 template <class T>
307 inline OptionaledField<T>
309 {
310  return OptionaledField<T>(f);
311 }
312 
313 //------------------------------------------------------------------------------
314 
315 //------------------------------------------------------------------------------
316 
328 
329 //------------------------------------------------------------------------------
330 
331 extern SField const sfInvalid;
332 extern SField const sfGeneric;
333 extern SField const sfLedgerEntry;
334 extern SField const sfTransaction;
335 extern SField const sfValidation;
336 extern SField const sfMetadata;
337 
338 // 8-bit integers
340 extern SF_U8 const sfMethod;
342 extern SF_U8 const sfTickSize;
344 
345 // 16-bit integers
348 extern SF_U16 const sfSignerWeight;
349 
350 // 16-bit integers (uncommon)
351 extern SF_U16 const sfVersion;
352 
353 // 32-bit integers (common)
354 extern SF_U32 const sfFlags;
355 extern SF_U32 const sfSourceTag;
356 extern SF_U32 const sfSequence;
359 extern SF_U32 const sfCloseTime;
361 extern SF_U32 const sfSigningTime;
362 extern SF_U32 const sfExpiration;
363 extern SF_U32 const sfTransferRate;
364 extern SF_U32 const sfWalletSize;
365 extern SF_U32 const sfOwnerCount;
367 
368 // 32-bit integers (uncommon)
369 extern SF_U32 const sfHighQualityIn;
371 extern SF_U32 const sfLowQualityIn;
372 extern SF_U32 const sfLowQualityOut;
373 extern SF_U32 const sfQualityIn;
374 extern SF_U32 const sfQualityOut;
375 extern SF_U32 const sfStampEscrow;
376 extern SF_U32 const sfBondAmount;
377 extern SF_U32 const sfLoadFee;
378 extern SF_U32 const sfOfferSequence;
384 extern SF_U32 const sfReserveBase;
386 extern SF_U32 const sfSetFlag;
387 extern SF_U32 const sfClearFlag;
388 extern SF_U32 const sfSignerQuorum;
389 extern SF_U32 const sfCancelAfter;
390 extern SF_U32 const sfFinishAfter;
391 extern SF_U32 const sfSignerListID;
392 extern SF_U32 const sfSettleDelay;
393 
394 // 64-bit integers
395 extern SF_U64 const sfIndexNext;
396 extern SF_U64 const sfIndexPrevious;
397 extern SF_U64 const sfBookNode;
398 extern SF_U64 const sfOwnerNode;
399 extern SF_U64 const sfBaseFee;
400 extern SF_U64 const sfExchangeRate;
401 extern SF_U64 const sfLowNode;
402 extern SF_U64 const sfHighNode;
404 extern SF_U64 const sfCookie;
405 extern SF_U64 const sfServerVersion;
406 
407 // 128-bit
408 extern SF_U128 const sfEmailHash;
409 
410 // 160-bit (common)
415 
416 // 256-bit (common)
417 extern SF_U256 const sfLedgerHash;
418 extern SF_U256 const sfParentHash;
420 extern SF_U256 const sfAccountHash;
422 extern SF_U256 const sfLedgerIndex;
424 extern SF_U256 const sfRootIndex;
425 extern SF_U256 const sfAccountTxnID;
426 
427 // 256-bit (uncommon)
429 extern SF_U256 const sfInvoiceID;
430 extern SF_U256 const sfNickname;
431 extern SF_U256 const sfAmendment;
432 extern SF_U256 const sfTicketID;
433 extern SF_U256 const sfDigest;
434 extern SF_U256 const sfPayChannel;
436 extern SF_U256 const sfCheckID;
438 
439 // currency amount (common)
440 extern SF_Amount const sfAmount;
441 extern SF_Amount const sfBalance;
443 extern SF_Amount const sfTakerPays;
444 extern SF_Amount const sfTakerGets;
445 extern SF_Amount const sfLowLimit;
446 extern SF_Amount const sfHighLimit;
447 extern SF_Amount const sfFee;
448 extern SF_Amount const sfSendMax;
449 extern SF_Amount const sfDeliverMin;
450 
451 // currency amount (uncommon)
455 
456 // variable length (common)
457 extern SF_Blob const sfPublicKey;
458 extern SF_Blob const sfMessageKey;
460 extern SF_Blob const sfTxnSignature;
461 extern SF_Blob const sfSignature;
462 extern SF_Blob const sfDomain;
463 extern SF_Blob const sfFundCode;
464 extern SF_Blob const sfRemoveCode;
465 extern SF_Blob const sfExpireCode;
466 extern SF_Blob const sfCreateCode;
467 extern SF_Blob const sfMemoType;
468 extern SF_Blob const sfMemoData;
469 extern SF_Blob const sfMemoFormat;
470 
471 // variable length (uncommon)
472 extern SF_Blob const sfFulfillment;
473 extern SF_Blob const sfCondition;
478 
479 // account
480 extern SF_Account const sfAccount;
481 extern SF_Account const sfOwner;
483 extern SF_Account const sfIssuer;
484 extern SF_Account const sfAuthorize;
486 extern SF_Account const sfTarget;
488 
489 // path set
490 extern SField const sfPaths;
491 
492 // vector of 256-bit
493 extern SF_Vec256 const sfIndexes;
494 extern SF_Vec256 const sfHashes;
495 extern SF_Vec256 const sfAmendments;
496 
497 // inner object
498 // OBJECT/1 is reserved for end of object
500 extern SField const sfCreatedNode;
501 extern SField const sfDeletedNode;
502 extern SField const sfModifiedNode;
504 extern SField const sfFinalFields;
505 extern SField const sfNewFields;
506 extern SField const sfTemplateEntry;
507 extern SField const sfMemo;
508 extern SField const sfSignerEntry;
509 extern SField const sfSigner;
510 extern SField const sfMajority;
512 
513 // array of objects
514 // ARRAY/1 is reserved for end of array
515 // extern SField const sfSigningAccounts; // Never been used.
516 extern SField const sfSigners;
517 extern SField const sfSignerEntries;
518 extern SField const sfTemplate;
519 extern SField const sfNecessary;
520 extern SField const sfSufficient;
521 extern SField const sfAffectedNodes;
522 extern SField const sfMemos;
523 extern SField const sfMajorities;
525 //------------------------------------------------------------------------------
526 
527 } // namespace ripple
528 
529 #endif
ripple::sfHighQualityIn
const SF_U32 sfHighQualityIn(access, STI_UINT32, 16, "HighQualityIn")
Definition: SField.h:369
ripple::TypedField::TypedField
TypedField(TypedField &&u)
Definition: SField.h:290
ripple::sfRegularKey
const SF_Account sfRegularKey(access, STI_ACCOUNT, 8, "RegularKey")
Definition: SField.h:487
ripple::sfLoadFee
const SF_U32 sfLoadFee(access, STI_UINT32, 24, "LoadFee")
Definition: SField.h:377
ripple::sfIndexNext
const SF_U64 sfIndexNext(access, STI_UINT64, 1, "IndexNext")
Definition: SField.h:395
ripple::sfPreviousFields
const SField sfPreviousFields(access, STI_OBJECT, 6, "PreviousFields")
Definition: SField.h:503
ripple::sfTarget
const SF_Account sfTarget(access, STI_ACCOUNT, 7, "Target")
Definition: SField.h:486
ripple::sfTicketID
const SF_U256 sfTicketID(access, STI_HASH256, 20, "TicketID")
Definition: SField.h:432
ripple::SField::IsSigning
IsSigning
Definition: SField.h:123
ripple::sfTransactionIndex
const SF_U32 sfTransactionIndex(access, STI_UINT32, 28, "TransactionIndex")
Definition: SField.h:381
std::string
STL class.
ripple::SField::getField
static const SField & getField(SerializedTypeID type, int value)
Definition: SField.h:166
utility
ripple::TypedField
A field with a type known at compile time.
Definition: SField.h:281
ripple::sfTemplateEntry
const SField sfTemplateEntry(access, STI_OBJECT, 9, "TemplateEntry")
Definition: SField.h:506
ripple::STI_METADATA
@ STI_METADATA
Definition: SField.h:82
ripple::sfPreviousTxnLgrSeq
const SF_U32 sfPreviousTxnLgrSeq(access, STI_UINT32, 5, "PreviousTxnLgrSeq", SField::sMD_DeleteFinal)
Definition: SField.h:357
ripple::sfGeneric
const SField sfGeneric(access, 0)
Definition: SField.h:332
ripple::sfParentCloseTime
const SF_U32 sfParentCloseTime(access, STI_UINT32, 8, "ParentCloseTime")
Definition: SField.h:360
ripple::SField::fieldValue
const int fieldValue
Definition: SField.h:128
ripple::sfQualityIn
const SF_U32 sfQualityIn(access, STI_UINT32, 20, "QualityIn")
Definition: SField.h:373
ripple::sfLedgerIndex
const SF_U256 sfLedgerIndex(access, STI_HASH256, 6, "LedgerIndex")
Definition: SField.h:422
ripple::sfLedgerEntryType
const SF_U16 sfLedgerEntryType(access, STI_UINT16, 1, "LedgerEntryType", SField::sMD_Never)
Definition: SField.h:346
ripple::sfSigners
const SField sfSigners(access, STI_ARRAY, 3, "Signers", SField::sMD_Default, SField::notSigning)
Definition: SField.h:516
ripple::SField::isBinary
bool isBinary() const
Definition: SField.h:210
ripple::SField::isInvalid
bool isInvalid() const
Definition: SField.h:195
ripple::sfMemoType
const SF_Blob sfMemoType(access, STI_VL, 12, "MemoType")
Definition: SField.h:467
ripple::sfOperationLimit
const SF_U32 sfOperationLimit(access, STI_UINT32, 29, "OperationLimit")
Definition: SField.h:382
ripple::sfSigningPubKey
const SF_Blob sfSigningPubKey(access, STI_VL, 3, "SigningPubKey")
Definition: SField.h:459
ripple::sfMetadata
const SField sfMetadata(access, STI_METADATA, 257, "Metadata")
Definition: SField.h:336
ripple::SField::private_access_tag_t
Definition: SField.cpp:33
ripple::sfDeliveredAmount
const SF_Amount sfDeliveredAmount(access, STI_AMOUNT, 18, "DeliveredAmount")
Definition: SField.h:454
ripple::sfSignerQuorum
const SF_U32 sfSignerQuorum(access, STI_UINT32, 35, "SignerQuorum")
Definition: SField.h:388
ripple::STI_AMOUNT
@ STI_AMOUNT
Definition: SField.h:64
ripple::sfMessageKey
const SF_Blob sfMessageKey(access, STI_VL, 2, "MessageKey")
Definition: SField.h:458
ripple::sfSequence
const SF_U32 sfSequence(access, STI_UINT32, 4, "Sequence")
Definition: SField.h:356
ripple::STI_UINT8
@ STI_UINT8
Definition: SField.h:72
ripple::field_code
int field_code(SerializedTypeID id, int index)
Definition: SField.h:87
ripple::SField::fieldName
const std::string fieldName
Definition: SField.h:129
ripple::sfSufficient
const SField sfSufficient(access, STI_ARRAY, 7, "Sufficient")
Definition: SField.h:520
ripple::STI_PATHSET
@ STI_PATHSET
Definition: SField.h:74
ripple::SField::hasName
bool hasName() const
Definition: SField.h:178
ripple::SerializedTypeID
SerializedTypeID
Definition: SField.h:52
ripple::SField::isUseful
bool isUseful() const
Definition: SField.h:200
ripple::sfAccount
const SF_Account sfAccount(access, STI_ACCOUNT, 1, "Account")
Definition: SField.h:480
ripple::sfFlags
const SF_U32 sfFlags(access, STI_UINT32, 2, "Flags")
Definition: SField.h:354
ripple::STI_VALIDATION
@ STI_VALIDATION
Definition: SField.h:81
ripple::STI_LEDGERENTRY
@ STI_LEDGERENTRY
Definition: SField.h:80
ripple::SField::signingField
const IsSigning signingField
Definition: SField.h:132
ripple::sfTakerPaysIssuer
const SF_U160 sfTakerPaysIssuer(access, STI_HASH160, 2, "TakerPaysIssuer")
Definition: SField.h:412
ripple::sfNewFields
const SField sfNewFields(access, STI_OBJECT, 8, "NewFields")
Definition: SField.h:505
ripple::sfMasterSignature
const SF_Blob sfMasterSignature(access, STI_VL, 18, "MasterSignature", SField::sMD_Default, SField::notSigning)
Definition: SField.h:474
ripple::sfMajorities
const SField sfMajorities(access, STI_ARRAY, 16, "Majorities")
Definition: SField.h:523
ripple::SField::sMD_ChangeNew
@ sMD_ChangeNew
Definition: SField.h:115
ripple::sfWalletLocator
const SF_U256 sfWalletLocator(access, STI_HASH256, 7, "WalletLocator")
Definition: SField.h:423
ripple::SField::getField
static const SField & getField(int type, int value)
Definition: SField.h:160
ripple::sfTakerPays
const SF_Amount sfTakerPays(access, STI_AMOUNT, 4, "TakerPays")
Definition: SField.h:443
ripple::sfMethod
const SF_U8 sfMethod(access, STI_UINT8, 2, "Method")
Definition: SField.h:340
ripple::sfIssuer
const SF_Account sfIssuer(access, STI_ACCOUNT, 4, "Issuer")
Definition: SField.h:483
ripple::SField::operator!=
bool operator!=(const SField &f) const
Definition: SField.h:266
ripple::STI_DONE
@ STI_DONE
Definition: SField.h:55
ripple::SField::getNum
int getNum() const
Definition: SField.h:231
ripple::OptionaledField
Indicate boost::optional field semantics.
Definition: SField.h:297
ripple::sfUnauthorize
const SF_Account sfUnauthorize(access, STI_ACCOUNT, 6, "Unauthorize")
Definition: SField.h:485
ripple::sfUNLModifyValidator
const SF_Blob sfUNLModifyValidator(access, STI_VL, 19, "UNLModifyValidator")
Definition: SField.h:475
ripple::sfUNLModifyDisabling
const SF_U8 sfUNLModifyDisabling(access, STI_UINT8, 17, "UNLModifyDisabling")
Definition: SField.h:343
ripple::SField::getField
static const SField & getField(int fieldCode)
Definition: SField.cpp:323
ripple::STI_ACCOUNT
@ STI_ACCOUNT
Definition: SField.h:66
ripple::STI_ARRAY
@ STI_ARRAY
Definition: SField.h:69
ripple::SField::knownCodeToField
static std::map< int, SField const * > knownCodeToField
Definition: SField.h:276
ripple::STI_HASH160
@ STI_HASH160
Definition: SField.h:73
ripple::sfOwnerNode
const SF_U64 sfOwnerNode(access, STI_UINT64, 4, "OwnerNode")
Definition: SField.h:398
ripple::sfSigner
const SField sfSigner(access, STI_OBJECT, 16, "Signer")
Definition: SField.h:509
ripple::sfDisabledValidators
const SField sfDisabledValidators(access, STI_ARRAY, 17, "DisabledValidators")
Definition: SField.h:524
ripple::sfTakerGetsCurrency
const SF_U160 sfTakerGetsCurrency(access, STI_HASH160, 3, "TakerGetsCurrency")
Definition: SField.h:413
ripple::sfPayChannel
const SF_U256 sfPayChannel(access, STI_HASH256, 22, "Channel")
Definition: SField.h:434
ripple::sfValidatedHash
const SF_U256 sfValidatedHash(access, STI_HASH256, 25, "ValidatedHash")
Definition: SField.h:437
ripple::sfAmount
const SF_Amount sfAmount(access, STI_AMOUNT, 1, "Amount")
Definition: SField.h:440
ripple::SField::getJsonName
Json::StaticString const & getJsonName() const
Definition: SField.h:184
ripple::sfSignerEntries
const SField sfSignerEntries(access, STI_ARRAY, 4, "SignerEntries")
Definition: SField.h:517
ripple::SField::operator==
bool operator==(const SField &f) const
Definition: SField.h:260
ripple::sfOwnerCount
const SF_U32 sfOwnerCount(access, STI_UINT32, 13, "OwnerCount")
Definition: SField.h:365
ripple::STBitString
Definition: SField.h:47
ripple::SField::sMD_Never
@ sMD_Never
Definition: SField.h:113
ripple::sfFinalFields
const SField sfFinalFields(access, STI_OBJECT, 7, "FinalFields")
Definition: SField.h:504
ripple::SField::operator=
SField & operator=(SField const &)=delete
ripple::sfModifiedNode
const SField sfModifiedNode(access, STI_OBJECT, 5, "ModifiedNode")
Definition: SField.h:502
ripple::SField::jsonName
const Json::StaticString jsonName
Definition: SField.h:133
ripple::sfReserveBase
const SF_U32 sfReserveBase(access, STI_UINT32, 31, "ReserveBase")
Definition: SField.h:384
ripple::sfLimitAmount
const SF_Amount sfLimitAmount(access, STI_AMOUNT, 3, "LimitAmount")
Definition: SField.h:442
ripple::sfHighLimit
const SF_Amount sfHighLimit(access, STI_AMOUNT, 7, "HighLimit")
Definition: SField.h:446
ripple::sfFundCode
const SF_Blob sfFundCode(access, STI_VL, 8, "FundCode")
Definition: SField.h:463
ripple::sfFinishAfter
const SF_U32 sfFinishAfter(access, STI_UINT32, 37, "FinishAfter")
Definition: SField.h:390
ripple::sfInvalid
const SField sfInvalid(access, -1)
Definition: SField.h:331
ripple::sfSignature
const SF_Blob sfSignature(access, STI_VL, 6, "Signature", SField::sMD_Default, SField::notSigning)
Definition: SField.h:461
ripple::TypedField::TypedField
TypedField(Args &&... args)
Definition: SField.h:286
ripple::sfAccountTxnID
const SF_U256 sfAccountTxnID(access, STI_HASH256, 9, "AccountTxnID")
Definition: SField.h:425
ripple::sfLedgerEntry
const SField sfLedgerEntry(access, STI_LEDGERENTRY, 257, "LedgerEntry")
Definition: SField.h:333
ripple::sfLowLimit
const SF_Amount sfLowLimit(access, STI_AMOUNT, 6, "LowLimit")
Definition: SField.h:445
ripple::sfMajority
const SField sfMajority(access, STI_OBJECT, 18, "Majority")
Definition: SField.h:510
ripple::sfDestinationTag
const SF_U32 sfDestinationTag(access, STI_UINT32, 14, "DestinationTag")
Definition: SField.h:366
ripple::sfMemoData
const SF_Blob sfMemoData(access, STI_VL, 13, "MemoData")
Definition: SField.h:468
ripple::sfIndexPrevious
const SF_U64 sfIndexPrevious(access, STI_UINT64, 2, "IndexPrevious")
Definition: SField.h:396
ripple::SField::fieldType
const SerializedTypeID fieldType
Definition: SField.h:127
ripple::sfFulfillment
const SF_Blob sfFulfillment(access, STI_VL, 16, "Fulfillment")
Definition: SField.h:472
ripple::sfMinimumOffer
const SF_Amount sfMinimumOffer(access, STI_AMOUNT, 16, "MinimumOffer")
Definition: SField.h:452
ripple::SField::SField
SField(SField const &)=delete
ripple::sfLastLedgerSequence
const SF_U32 sfLastLedgerSequence(access, STI_UINT32, 27, "LastLedgerSequence")
Definition: SField.h:380
ripple::OptionaledField::OptionaledField
OptionaledField(TypedField< T > const &f_)
Definition: SField.h:301
ripple::sfOwner
const SF_Account sfOwner(access, STI_ACCOUNT, 2, "Owner")
Definition: SField.h:481
ripple::sfHighNode
const SF_U64 sfHighNode(access, STI_UINT64, 8, "HighNode")
Definition: SField.h:402
ripple::sfParentHash
const SF_U256 sfParentHash(access, STI_HASH256, 2, "ParentHash")
Definition: SField.h:418
ripple::sfBookDirectory
const SF_U256 sfBookDirectory(access, STI_HASH256, 16, "BookDirectory")
Definition: SField.h:428
ripple::SField::sMD_Always
@ sMD_Always
Definition: SField.h:118
ripple::SField::sMD_Create
@ sMD_Create
Definition: SField.h:117
ripple::sfRemoveCode
const SF_Blob sfRemoveCode(access, STI_VL, 9, "RemoveCode")
Definition: SField.h:464
ripple::sfSendMax
const SF_Amount sfSendMax(access, STI_AMOUNT, 9, "SendMax")
Definition: SField.h:448
ripple::sfAmendment
const SF_U256 sfAmendment(access, STI_HASH256, 19, "Amendment")
Definition: SField.h:431
ripple::sfSignerListID
const SF_U32 sfSignerListID(access, STI_UINT32, 38, "SignerListID")
Definition: SField.h:391
ripple::sfSigningTime
const SF_U32 sfSigningTime(access, STI_UINT32, 9, "SigningTime")
Definition: SField.h:361
ripple::sfDestinationNode
const SF_U64 sfDestinationNode(access, STI_UINT64, 9, "DestinationNode")
Definition: SField.h:403
ripple::SField::notSigning
static const IsSigning notSigning
Definition: SField.h:124
ripple::sfTransaction
const SField sfTransaction(access, STI_TRANSACTION, 257, "Transaction")
Definition: SField.h:334
ripple::STI_UNKNOWN
@ STI_UNKNOWN
Definition: SField.h:54
ripple::STI_VL
@ STI_VL
Definition: SField.h:65
ripple::STI_UINT16
@ STI_UINT16
Definition: SField.h:59
ripple::sfTxnSignature
const SF_Blob sfTxnSignature(access, STI_VL, 4, "TxnSignature", SField::sMD_Default, SField::notSigning)
Definition: SField.h:460
ripple::sfTransactionType
const SF_U16 sfTransactionType(access, STI_UINT16, 2, "TransactionType")
Definition: SField.h:347
ripple::STI_HASH256
@ STI_HASH256
Definition: SField.h:63
ripple::sfLedgerSequence
const SF_U32 sfLedgerSequence(access, STI_UINT32, 6, "LedgerSequence")
Definition: SField.h:358
ripple::sfReferenceFeeUnits
const SF_U32 sfReferenceFeeUnits(access, STI_UINT32, 30, "ReferenceFeeUnits")
Definition: SField.h:383
ripple::SField::sMD_DeleteFinal
@ sMD_DeleteFinal
Definition: SField.h:116
ripple::sfTransactionMetaData
const SField sfTransactionMetaData(access, STI_OBJECT, 2, "TransactionMetaData")
Definition: SField.h:499
ripple::sfExchangeRate
const SF_U64 sfExchangeRate(access, STI_UINT64, 6, "ExchangeRate")
Definition: SField.h:400
cstdint
ripple::sfCreateCode
const SF_Blob sfCreateCode(access, STI_VL, 11, "CreateCode")
Definition: SField.h:466
ripple::sfSignerEntry
const SField sfSignerEntry(access, STI_OBJECT, 11, "SignerEntry")
Definition: SField.h:508
ripple::SField::fieldCode
const int fieldCode
Definition: SField.h:126
ripple::SField::isKnown
bool isKnown() const
Definition: SField.h:205
ripple::sfLowQualityOut
const SF_U32 sfLowQualityOut(access, STI_UINT32, 19, "LowQualityOut")
Definition: SField.h:372
ripple::STI_VECTOR256
@ STI_VECTOR256
Definition: SField.h:75
ripple::sfValidation
const SField sfValidation(access, STI_VALIDATION, 257, "Validation")
Definition: SField.h:335
ripple::sfCreatedNode
const SField sfCreatedNode(access, STI_OBJECT, 3, "CreatedNode")
Definition: SField.h:500
map
ripple::sfSourceTag
const SF_U32 sfSourceTag(access, STI_UINT32, 3, "SourceTag")
Definition: SField.h:355
ripple::SField::getNumFields
static int getNumFields()
Definition: SField.h:236
ripple::sfIndexes
const SF_Vec256 sfIndexes(access, STI_VECTOR256, 1, "Indexes", SField::sMD_Never)
Definition: SField.h:493
ripple::sfExpiration
const SF_U32 sfExpiration(access, STI_UINT32, 10, "Expiration")
Definition: SField.h:362
ripple::sfFirstLedgerSequence
const SF_U32 sfFirstLedgerSequence(access, STI_UINT32, 26, "FirstLedgerSequence")
Definition: SField.h:379
ripple::sfFee
const SF_Amount sfFee(access, STI_AMOUNT, 8, "Fee")
Definition: SField.h:447
ripple::STInteger
Definition: SField.h:49
ripple::sfQualityOut
const SF_U32 sfQualityOut(access, STI_UINT32, 21, "QualityOut")
Definition: SField.h:374
ripple::sfVersion
const SF_U16 sfVersion(access, STI_UINT16, 16, "Version")
Definition: SField.h:351
ripple::SField::IsSigning::yes
@ yes
ripple::SField::shouldInclude
bool shouldInclude(bool withSigningField) const
Definition: SField.h:253
ripple::TypedField::type
T type
Definition: SField.h:283
ripple::sfValidatorToReEnable
const SF_Blob sfValidatorToReEnable(access, STI_VL, 21, "ValidatorToReEnable")
Definition: SField.h:477
ripple::SField::sMD_ChangeOrig
@ sMD_ChangeOrig
Definition: SField.h:114
ripple::sfMemo
const SField sfMemo(access, STI_OBJECT, 10, "Memo")
Definition: SField.h:507
ripple::sfHashes
const SF_Vec256 sfHashes(access, STI_VECTOR256, 2, "Hashes")
Definition: SField.h:494
ripple::STI_UINT32
@ STI_UINT32
Definition: SField.h:60
ripple::sfPublicKey
const SF_Blob sfPublicKey(access, STI_VL, 1, "PublicKey")
Definition: SField.h:457
ripple::sfSignerWeight
const SF_U16 sfSignerWeight(access, STI_UINT16, 3, "SignerWeight")
Definition: SField.h:348
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::sfWalletSize
const SF_U32 sfWalletSize(access, STI_UINT32, 12, "WalletSize")
Definition: SField.h:364
ripple::sfNecessary
const SField sfNecessary(access, STI_ARRAY, 6, "Necessary")
Definition: SField.h:519
ripple::sfLowQualityIn
const SF_U32 sfLowQualityIn(access, STI_UINT32, 18, "LowQualityIn")
Definition: SField.h:371
ripple::sfBalance
const SF_Amount sfBalance(access, STI_AMOUNT, 2, "Balance")
Definition: SField.h:441
ripple::sfTakerPaysCurrency
const SF_U160 sfTakerPaysCurrency(access, STI_HASH160, 1, "TakerPaysCurrency")
Definition: SField.h:411
ripple::sfDeliverMin
const SF_Amount sfDeliverMin(access, STI_AMOUNT, 10, "DeliverMin")
Definition: SField.h:449
ripple::sfOfferSequence
const SF_U32 sfOfferSequence(access, STI_UINT32, 25, "OfferSequence")
Definition: SField.h:378
ripple::SField
Identifies fields.
Definition: SField.h:109
ripple::sfTransactionHash
const SF_U256 sfTransactionHash(access, STI_HASH256, 3, "TransactionHash")
Definition: SField.h:419
ripple::STI_UINT64
@ STI_UINT64
Definition: SField.h:61
ripple::SField::num
static int num
Definition: SField.h:275
ripple::sfAffectedNodes
const SField sfAffectedNodes(access, STI_ARRAY, 8, "AffectedNodes")
Definition: SField.h:521
ripple::SField::getName
std::string const & getName() const
Definition: SField.h:172
ripple::sfReserveIncrement
const SF_U32 sfReserveIncrement(access, STI_UINT32, 32, "ReserveIncrement")
Definition: SField.h:385
Json::StaticString
Lightweight wrapper to tag static string.
Definition: json_value.h:60
std
STL namespace.
ripple::SField::isDiscardable
bool isDiscardable() const
Definition: SField.h:220
ripple::STI_HASH128
@ STI_HASH128
Definition: SField.h:62
ripple::sfRippleEscrow
const SF_Amount sfRippleEscrow(access, STI_AMOUNT, 17, "RippleEscrow")
Definition: SField.h:453
ripple::sfClearFlag
const SF_U32 sfClearFlag(access, STI_UINT32, 34, "ClearFlag")
Definition: SField.h:387
ripple::sfCondition
const SF_Blob sfCondition(access, STI_VL, 17, "Condition")
Definition: SField.h:473
ripple::sfPaths
const SField sfPaths(access, STI_PATHSET, 1, "Paths")
Definition: SField.h:490
ripple::sfTransactionResult
const SF_U8 sfTransactionResult(access, STI_UINT8, 3, "TransactionResult")
Definition: SField.h:341
ripple::sfCloseTime
const SF_U32 sfCloseTime(access, STI_UINT32, 7, "CloseTime")
Definition: SField.h:359
ripple::sfMemos
const SField sfMemos(access, STI_ARRAY, 9, "Memos")
Definition: SField.h:522
ripple::SField::compare
static int compare(const SField &f1, const SField &f2)
Definition: SField.cpp:335
ripple::STVector256
Definition: STVector256.h:29
ripple::sfSettleDelay
const SF_U32 sfSettleDelay(access, STI_UINT32, 39, "SettleDelay")
Definition: SField.h:392
ripple::sfTakerGets
const SF_Amount sfTakerGets(access, STI_AMOUNT, 5, "TakerGets")
Definition: SField.h:444
ripple::sfDigest
const SF_U256 sfDigest(access, STI_HASH256, 21, "Digest")
Definition: SField.h:433
ripple::SField::getCode
int getCode() const
Definition: SField.h:226
ripple::SField::isGeneric
bool isGeneric() const
Definition: SField.h:190
ripple::sfAccountHash
const SF_U256 sfAccountHash(access, STI_HASH256, 4, "AccountHash")
Definition: SField.h:420
ripple::sfDestination
const SF_Account sfDestination(access, STI_ACCOUNT, 3, "Destination")
Definition: SField.h:482
ripple::sfCheckID
const SF_U256 sfCheckID(access, STI_HASH256, 24, "CheckID")
Definition: SField.h:436
ripple::SField::fieldMeta
const int fieldMeta
Definition: SField.h:130
ripple::sfRootIndex
const SF_U256 sfRootIndex(access, STI_HASH256, 8, "RootIndex", SField::sMD_Always)
Definition: SField.h:424
ripple::sfCookie
const SF_U64 sfCookie(access, STI_UINT64, 10, "Cookie")
Definition: SField.h:404
ripple::sfTransferRate
const SF_U32 sfTransferRate(access, STI_UINT32, 11, "TransferRate")
Definition: SField.h:363
ripple::sfValidatorToDisable
const SF_Blob sfValidatorToDisable(access, STI_VL, 20, "ValidatorToDisable")
Definition: SField.h:476
ripple::OptionaledField::f
TypedField< T > const * f
Definition: SField.h:299
ripple::sfLowNode
const SF_U64 sfLowNode(access, STI_UINT64, 7, "LowNode")
Definition: SField.h:401
ripple::sfBondAmount
const SF_U32 sfBondAmount(access, STI_UINT32, 23, "BondAmount")
Definition: SField.h:376
ripple::STI_OBJECT
@ STI_OBJECT
Definition: SField.h:68
ripple::sfAmendments
const SF_Vec256 sfAmendments(access, STI_VECTOR256, 3, "Amendments")
Definition: SField.h:495
ripple::SField::sMD_Default
@ sMD_Default
Definition: SField.h:119
ripple::sfBookNode
const SF_U64 sfBookNode(access, STI_UINT64, 3, "BookNode")
Definition: SField.h:397
ripple::sfTemplate
const SField sfTemplate(access, STI_ARRAY, 5, "Template")
Definition: SField.h:518
ripple::sfBaseFee
const SF_U64 sfBaseFee(access, STI_UINT64, 5, "BaseFee")
Definition: SField.h:399
ripple::SField::shouldMeta
bool shouldMeta(int c) const
Definition: SField.h:247
ripple::sfAuthorize
const SF_Account sfAuthorize(access, STI_ACCOUNT, 5, "Authorize")
Definition: SField.h:484
ripple::sfDeletedNode
const SField sfDeletedNode(access, STI_OBJECT, 4, "DeletedNode")
Definition: SField.h:501
ripple::sfCloseResolution
const SF_U8 sfCloseResolution(access, STI_UINT8, 1, "CloseResolution")
Definition: SField.h:339
ripple::sfNickname
const SF_U256 sfNickname(access, STI_HASH256, 18, "Nickname")
Definition: SField.h:430
ripple::sfConsensusHash
const SF_U256 sfConsensusHash(access, STI_HASH256, 23, "ConsensusHash")
Definition: SField.h:435
ripple::sfHighQualityOut
const SF_U32 sfHighQualityOut(access, STI_UINT32, 17, "HighQualityOut")
Definition: SField.h:370
ripple::SField::IsSigning::no
@ no
ripple::sfLedgerHash
const SF_U256 sfLedgerHash(access, STI_HASH256, 1, "LedgerHash")
Definition: SField.h:417
ripple::sfPreviousTxnID
const SF_U256 sfPreviousTxnID(access, STI_HASH256, 5, "PreviousTxnID", SField::sMD_DeleteFinal)
Definition: SField.h:421
ripple::sfCancelAfter
const SF_U32 sfCancelAfter(access, STI_UINT32, 36, "CancelAfter")
Definition: SField.h:389
ripple::SField::fieldNum
const int fieldNum
Definition: SField.h:131
ripple::sfEmailHash
const SF_U128 sfEmailHash(access, STI_HASH128, 1, "EmailHash")
Definition: SField.h:408
ripple::sfSetFlag
const SF_U32 sfSetFlag(access, STI_UINT32, 33, "SetFlag")
Definition: SField.h:386
ripple::sfTickSize
const SF_U8 sfTickSize(access, STI_UINT8, 16, "TickSize")
Definition: SField.h:342
ripple::sfExpireCode
const SF_Blob sfExpireCode(access, STI_VL, 10, "ExpireCode")
Definition: SField.h:465
ripple::sfMemoFormat
const SF_Blob sfMemoFormat(access, STI_VL, 14, "MemoFormat")
Definition: SField.h:469
ripple::sfServerVersion
const SF_U64 sfServerVersion(access, STI_UINT64, 11, "ServerVersion")
Definition: SField.h:405
ripple::SField::isSigningField
bool isSigningField() const
Definition: SField.h:242
ripple::sfInvoiceID
const SF_U256 sfInvoiceID(access, STI_HASH256, 17, "InvoiceID")
Definition: SField.h:429
ripple::STI_TRANSACTION
@ STI_TRANSACTION
Definition: SField.h:79
ripple::STI_NOTPRESENT
@ STI_NOTPRESENT
Definition: SField.h:56
ripple::operator~
constexpr ApplyFlags operator~(ApplyFlags const &flags)
Definition: ApplyView.h:77
ripple::sfDisabledValidator
const SField sfDisabledValidator(access, STI_OBJECT, 19, "DisabledValidator")
Definition: SField.h:511
ripple::sfStampEscrow
const SF_U32 sfStampEscrow(access, STI_UINT32, 22, "StampEscrow")
Definition: SField.h:375
ripple::sfTakerGetsIssuer
const SF_U160 sfTakerGetsIssuer(access, STI_HASH160, 4, "TakerGetsIssuer")
Definition: SField.h:414
ripple::sfDomain
const SF_Blob sfDomain(access, STI_VL, 7, "Domain")
Definition: SField.h:462