1#include <xrpl/beast/utility/instrumentation.h>
2#include <xrpl/protocol/SField.h>
24template <
class... Args>
34#pragma push_macro("UNTYPED_SFIELD")
36#pragma push_macro("TYPED_SFIELD")
39#define UNTYPED_SFIELD(sfName, stiSuffix, fieldValue, ...) \
40 SField const sfName( \
44 std::string_view(#sfName).substr(2).data(), \
46#define TYPED_SFIELD(sfName, stiSuffix, fieldValue, ...) \
47 SF_##stiSuffix const sfName( \
51 std::string_view(#sfName).substr(2).data(), \
62#include <xrpl/protocol/detail/sfields.macro>
65#pragma pop_macro("TYPED_SFIELD")
67#pragma pop_macro("UNTYPED_SFIELD")
82 , signingField(signing)
83 , jsonName(fieldName.c_str())
87 "ripple::SField::SField(tid,fv,fn,meta,signing) : fieldCode is unique");
90 "ripple::SField::SField(tid,fv,fn,meta,signing) : fieldName is unique");
97 , fieldType(STI_UNKNOWN)
100 , fieldMeta(sMD_Never)
103 , jsonName(fieldName.c_str())
107 "ripple::SField::SField(fc,fn) : fieldCode is unique");
110 "ripple::SField::SField(fc,fn) : fieldName is unique");
122 return *(it->second);
150 return *(it->second);
SField(SField const &)=delete
std::string const fieldName
static std::unordered_map< int, SField const * > knownCodeToField
static IsSigning const notSigning
static SField const & getField(int fieldCode)
static int compare(SField const &f1, SField const &f2)
static std::unordered_map< std::string, SField const * > knownNameToField
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
SField const sfIndex(access, STI_UINT256, 258, "index")
static SField::private_access_tag_t access
int field_code(SerializedTypeID id, int index)
SField const sfHash(access, STI_UINT256, 257, "hash")
private_access_tag_t()=default
TypedField(private_access_tag_t pat, Args &&... args)