xrpld
Loading...
Searching...
No Matches
xrpl::SField Class Reference

Identifies fields. More...

#include <SField.h>

Inheritance diagram for xrpl::SField:
Collaboration diagram for xrpl::SField:

Classes

struct  PrivateAccessTagT

Public Types

enum class  IsSigning : unsigned char { No , Yes }

Public Member Functions

 SField (SField const &)=delete
SFieldoperator= (SField const &)=delete
 SField (SField &&)=delete
SFieldoperator= (SField &&)=delete
 SField (PrivateAccessTagT, SerializedTypeID tid, int fv, char const *fn, int meta=kSmdDefault, IsSigning signing=IsSigning::Yes)
 SField (PrivateAccessTagT, int fc, char const *fn)
std::string const & getName () const
bool hasName () const
json::StaticString const & getJsonName () const
 operator json::StaticString const & () const
bool isInvalid () const
bool isUseful () const
bool isBinary () const
bool isDiscardable () const
int getCode () const
int getNum () const
bool shouldMeta (int c) const
bool shouldInclude (bool withSigningField) const
bool operator== (SField const &f) const
bool operator!= (SField const &f) const

Static Public Member Functions

static SField const & getField (int fieldCode)
static SField const & getField (std::string const &fieldName)
static SField const & getField (int type, int value)
static SField const & getField (SerializedTypeID type, int value)
static int getNumFields ()
static int compare (SField const &f1, SField const &f2)
static std::unordered_map< int, SField const * > const & getKnownCodeToField ()

Public Attributes

int const fieldCodeMem
SerializedTypeID const fieldType
int const fieldValue
std::string const fieldName
int const fieldMeta
int const fieldNum
IsSigning const signingField
json::StaticString const jsonName

Static Public Attributes

static constexpr auto kSmdNever = 0x00
static constexpr auto kSmdChangeOrig = 0x01
static constexpr auto kSmdChangeNew = 0x02
static constexpr auto kSmdDeleteFinal = 0x04
static constexpr auto kSmdCreate = 0x08
static constexpr auto kSmdAlways = 0x10
static constexpr auto kSmdBaseTen = 0x20
static constexpr auto kSmdPseudoAccount = 0x40
static constexpr auto kSmdNeedsAsset = 0x80
static constexpr auto kSmdDefault
static IsSigning const kNotSigning = IsSigning::No

Static Private Attributes

static int num = 0
static std::unordered_map< int, SField const * > knownCodeToField
static std::unordered_map< std::string, SField const * > knownNameToField

Detailed Description

Identifies fields.

Fields are necessary to tag data in signed transactions so that the binary format of the transaction can be canonicalized. All SFields are created at compile time.

Each SField, once constructed, lives until program termination, and there is only one instance per fieldType/fieldValue pair which serves the entire application.

Definition at line 129 of file SField.h.

Member Enumeration Documentation

◆ IsSigning

enum class xrpl::SField::IsSigning : unsigned char
strong
Enumerator
No 
Yes 

Definition at line 147 of file SField.h.

Constructor & Destructor Documentation

◆ SField() [1/4]

xrpl::SField::SField ( SField const & )
delete

◆ SField() [2/4]

xrpl::SField::SField ( SField && )
delete

◆ SField() [3/4]

xrpl::SField::SField ( PrivateAccessTagT ,
SerializedTypeID tid,
int fv,
char const * fn,
int meta = kSmdDefault,
IsSigning signing = IsSigning::Yes )

Definition at line 70 of file SField.cpp.

◆ SField() [4/4]

xrpl::SField::SField ( PrivateAccessTagT ,
int fc,
char const * fn )
explicit

Definition at line 96 of file SField.cpp.

Member Function Documentation

◆ operator=() [1/2]

SField & xrpl::SField::operator= ( SField const & )
delete

◆ operator=() [2/2]

SField & xrpl::SField::operator= ( SField && )
delete

◆ getField() [1/4]

SField const & xrpl::SField::getField ( int fieldCode)
static

Definition at line 116 of file SField.cpp.

◆ getField() [2/4]

SField const & xrpl::SField::getField ( std::string const & fieldName)
static

Definition at line 144 of file SField.cpp.

◆ getField() [3/4]

SField const & xrpl::SField::getField ( int type,
int value )
static

Definition at line 184 of file SField.h.

◆ getField() [4/4]

SField const & xrpl::SField::getField ( SerializedTypeID type,
int value )
static

Definition at line 190 of file SField.h.

◆ getName()

std::string const & xrpl::SField::getName ( ) const
nodiscard

Definition at line 196 of file SField.h.

◆ hasName()

bool xrpl::SField::hasName ( ) const
nodiscard

Definition at line 202 of file SField.h.

◆ getJsonName()

json::StaticString const & xrpl::SField::getJsonName ( ) const
nodiscard

Definition at line 208 of file SField.h.

◆ operator json::StaticString const &()

xrpl::SField::operator json::StaticString const & ( ) const

Definition at line 213 of file SField.h.

◆ isInvalid()

bool xrpl::SField::isInvalid ( ) const
nodiscard

Definition at line 219 of file SField.h.

◆ isUseful()

bool xrpl::SField::isUseful ( ) const
nodiscard

Definition at line 225 of file SField.h.

◆ isBinary()

bool xrpl::SField::isBinary ( ) const
nodiscard

Definition at line 231 of file SField.h.

◆ isDiscardable()

bool xrpl::SField::isDiscardable ( ) const
nodiscard

Definition at line 241 of file SField.h.

◆ getCode()

int xrpl::SField::getCode ( ) const
nodiscard

Definition at line 247 of file SField.h.

◆ getNum()

int xrpl::SField::getNum ( ) const
nodiscard

Definition at line 252 of file SField.h.

◆ getNumFields()

int xrpl::SField::getNumFields ( )
static

Definition at line 257 of file SField.h.

◆ shouldMeta()

bool xrpl::SField::shouldMeta ( int c) const
nodiscard

Definition at line 263 of file SField.h.

◆ shouldInclude()

bool xrpl::SField::shouldInclude ( bool withSigningField) const
nodiscard

Definition at line 269 of file SField.h.

◆ operator==()

bool xrpl::SField::operator== ( SField const & f) const

Definition at line 275 of file SField.h.

◆ operator!=()

bool xrpl::SField::operator!= ( SField const & f) const

Definition at line 281 of file SField.h.

◆ compare()

int xrpl::SField::compare ( SField const & f1,
SField const & f2 )
static

Definition at line 128 of file SField.cpp.

◆ getKnownCodeToField()

std::unordered_map< int, SField const * > const & xrpl::SField::getKnownCodeToField ( )
static

Definition at line 290 of file SField.h.

Member Data Documentation

◆ kSmdNever

auto xrpl::SField::kSmdNever = 0x00
staticconstexpr

Definition at line 132 of file SField.h.

◆ kSmdChangeOrig

auto xrpl::SField::kSmdChangeOrig = 0x01
staticconstexpr

Definition at line 133 of file SField.h.

◆ kSmdChangeNew

auto xrpl::SField::kSmdChangeNew = 0x02
staticconstexpr

Definition at line 134 of file SField.h.

◆ kSmdDeleteFinal

auto xrpl::SField::kSmdDeleteFinal = 0x04
staticconstexpr

Definition at line 135 of file SField.h.

◆ kSmdCreate

auto xrpl::SField::kSmdCreate = 0x08
staticconstexpr

Definition at line 136 of file SField.h.

◆ kSmdAlways

auto xrpl::SField::kSmdAlways = 0x10
staticconstexpr

Definition at line 137 of file SField.h.

◆ kSmdBaseTen

auto xrpl::SField::kSmdBaseTen = 0x20
staticconstexpr

Definition at line 138 of file SField.h.

◆ kSmdPseudoAccount

auto xrpl::SField::kSmdPseudoAccount = 0x40
staticconstexpr

Definition at line 139 of file SField.h.

◆ kSmdNeedsAsset

auto xrpl::SField::kSmdNeedsAsset = 0x80
staticconstexpr

Definition at line 141 of file SField.h.

◆ kSmdDefault

auto xrpl::SField::kSmdDefault
staticconstexpr
Initial value:
=
static constexpr auto kSmdChangeOrig
Definition SField.h:133
static constexpr auto kSmdDeleteFinal
Definition SField.h:135
static constexpr auto kSmdCreate
Definition SField.h:136
static constexpr auto kSmdChangeNew
Definition SField.h:134

Definition at line 144 of file SField.h.

◆ kNotSigning

SField::IsSigning const xrpl::SField::kNotSigning = IsSigning::No
static

Definition at line 148 of file SField.h.

◆ fieldCodeMem

int const xrpl::SField::fieldCodeMem

Definition at line 150 of file SField.h.

◆ fieldType

SerializedTypeID const xrpl::SField::fieldType

Definition at line 151 of file SField.h.

◆ fieldValue

int const xrpl::SField::fieldValue

Definition at line 152 of file SField.h.

◆ fieldName

std::string const xrpl::SField::fieldName

Definition at line 153 of file SField.h.

◆ fieldMeta

int const xrpl::SField::fieldMeta

Definition at line 154 of file SField.h.

◆ fieldNum

int const xrpl::SField::fieldNum

Definition at line 155 of file SField.h.

◆ signingField

IsSigning const xrpl::SField::signingField

Definition at line 156 of file SField.h.

◆ jsonName

json::StaticString const xrpl::SField::jsonName

Definition at line 157 of file SField.h.

◆ num

int xrpl::SField::num = 0
staticprivate

Definition at line 296 of file SField.h.

◆ knownCodeToField

std::unordered_map< int, SField const * > xrpl::SField::knownCodeToField
staticprivate

Definition at line 297 of file SField.h.

◆ knownNameToField

std::unordered_map< std::string, SField const * > xrpl::SField::knownNameToField
staticprivate

Definition at line 298 of file SField.h.