xrpld
Loading...
Searching...
No Matches
protocol Directory Reference
Directory dependency graph for protocol:
protocol

Directories

 
detail

Files

 
AccountID.h
 
AMMCore.h
 
AmountConversions.h
 
ApiVersion.h
 
Asset.h
 
Batch.h
 
Book.h
 
BuildInfo.h
 
Concepts.h
 
ConfidentialTransfer.h
 
digest.h
 
ErrorCodes.h
 
Feature.h
 
Fees.h
 
HashPrefix.h
 
Indexes.h
 
InnerObjectFormats.h
 
IOUAmount.h
 
Issue.h
 
json_get_or_throw.h
 
jss.h
 
Keylet.h
 
KeyType.h
 
KnownFormats.h
 
LedgerFormats.h
 
LedgerHeader.h
 
LedgerShortcut.h
 
messages.h
 
MPTAmount.h
 
MPTIssue.h
 
MultiApiJson.h
 
nft.h
 
NFTokenID.h
 
NFTokenOfferID.h
 
nftPageMask.h
 
NFTSyntheticSerializer.h
 
PathAsset.h
 
PayChan.h
 
Permissions.h
 
Protocol.h
 
PublicKey.h
 
Quality.h
 
QualityFunction.h
 
Rate.h
 
RippleLedgerHash.h
 
RPCErr.h
 
Rules.h
 
SecretKey.h
 
Seed.h
 
SeqProxy.h
 
serialize.h
 
Serializer.h
 
SField.h
 
Sign.h
 
SOTemplate.h
 
st.h
 
STAccount.h
 
STAmount.h
 
STArray.h
 
STBase.h
 
STBitString.h
 
STBlob.h
 
STCurrency.h
 
STExchange.h
 
STInteger.h
 
STIssue.h
 
STLedgerEntry.h
 
STNumber.h
 
STObject.h
 
STParsedJSON.h
 
STPathSet.h
 
STTakesAsset.h
 
STTx.h
 
STValidation.h
 
STVector256.h
 
STXChainBridge.h
 
SystemParameters.h
 
TER.h
 
tokens.h
 
TxFlags.h
 
TxFormats.h
 
TxMeta.h
 
TxSearched.h
 
UintTypes.h
 
Units.h
 
XChainAttestations.h
 
XRPAmount.h

Detailed Description

protocol

Classes and functions for handling data and values associated with the XRP Ledger protocol.

Serialized Objects

Objects transmitted over the network must be serialized into a canonical format. The prefix "ST" refers to classes that deal with the serialized format.

The term "Tx" or "tx" is an abbreviation for "Transaction", a commonly occurring object type.

Optional Fields

Our serialized fields have some "type magic" to make optional fields easier to read:

  • The operation x[sfFoo] means "return the value of 'Foo' if it exists, or the default value if it doesn't."
  • The operation x[~sfFoo] means "return the value of 'Foo' if it exists, or nothing if it doesn't." This usage of the tilde/bitwise NOT operator is not standard outside of the xrpld codebase.
    • As a consequence of this, x[~sfFoo] = y[~sfFoo] assigns the value of Foo from y to x, including omitting Foo from x if it doesn't exist in y.

Typically, for things that are guaranteed to exist, you use x[sfFoo] and avoid having to deal with a container that may or may not hold a value. For things not guaranteed to exist, you use x[~sfFoo] because you want such a container. It avoids having to look something up twice, once just to see if it exists and a second time to get/set its value. (Real example)

The source of this "type magic" is in SField.h.

Related Resources