20#include <xrpl/beast/utility/instrumentation.h>
21#include <xrpl/protocol/SField.h>
43template <
class... Args>
53#pragma push_macro("UNTYPED_SFIELD")
55#pragma push_macro("TYPED_SFIELD")
58#define UNTYPED_SFIELD(sfName, stiSuffix, fieldValue, ...) \
59 SField const sfName( \
63 std::string_view(#sfName).substr(2).data(), \
65#define TYPED_SFIELD(sfName, stiSuffix, fieldValue, ...) \
66 SF_##stiSuffix const sfName( \
70 std::string_view(#sfName).substr(2).data(), \
81#include <xrpl/protocol/detail/sfields.macro>
84#pragma pop_macro("TYPED_SFIELD")
86#pragma pop_macro("UNTYPED_SFIELD")
101 , signingField(signing)
102 , jsonName(fieldName.c_str())
106 "ripple::SField::SField(tid,fv,fn,meta,signing) : fieldCode is unique");
109 "ripple::SField::SField(tid,fv,fn,meta,signing) : fieldName is unique");
116 , fieldType(STI_UNKNOWN)
119 , fieldMeta(sMD_Never)
122 , jsonName(fieldName.c_str())
126 "ripple::SField::SField(fc,fn) : fieldCode is unique");
129 "ripple::SField::SField(fc,fn) : fieldName is unique");
141 return *(it->second);
169 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)