37 #ifndef FIX8_FIELD_HPP_
38 #define FIX8_FIELD_HPP_
40 #include <Poco/Timestamp.h>
41 #include <Poco/DateTime.h>
69 : _range(range), _dtype(dtype), _ftype(ftype), _sz(sz), _descriptions(descriptions) {}
78 const T *rng(static_cast<const T*>(_range));
79 return _dtype ==
dt_set ? std::binary_search(rng, rng + _sz, what) : *rng <= what && what <= *(rng + 1);
87 const T&
get_rlm_val(
const int idx)
const {
return *(
static_cast<const T*
>(
_range) + idx); }
98 const T *rng(static_cast<const T*>(_range)), *res(std::lower_bound(rng, rng + _sz, what));
99 return res != rng + _sz ? res - rng : -1;
110 std::ostream&
_print(std::ostream& os,
int idx)
const {
return os << *((static_cast<const T *>(
_range) + idx)); }
116 std::ostream&
print(std::ostream& os,
int idx)
const
150 virtual std::ostream&
print(std::ostream& os)
const = 0;
155 virtual size_t print(
char *to)
const = 0;
173 T&
from() {
return *
static_cast<T*
>(
this); }
179 const T *
as()
const {
return static_cast<T*
>(
this); }
186 const std::ios::pos_type where(os.tellp());
188 return os.tellp() - where;
196 const char *cur_ptr(to);
197 to +=
itoa(_fnum, to, 10);
255 template<
typename T,
unsigned short field>
267 template<
unsigned short field>
309 _value = that._value;
326 {
return same_base(that) && _value < static_cast<const Field<int, field>&>(that)._value; }
344 const int&
get()
const {
return _value; }
367 std::ostream&
print(std::ostream& os)
const {
return os << _value; }
372 size_t print(
char *to)
const {
return itoa(_value, to, 10); }
378 template<
unsigned short field>
413 _value = that._value;
420 bool operator==(
const char *that)
const { return ::strcmp(_value, that) == 0; }
425 bool operator!=(
const char *that)
const { return ::strcmp(_value, that); }
431 {
return same_base(that) && ::strcmp(
static_cast<const Field<char *, field>&
>(that)._value, _value) == 0; }
437 {
return same_base(that) && ::strcmp(_value,
static_cast<const Field<char *, field>&
>(that)._value) < 0; }
443 {
return same_base(that) && ::strcmp(_value,
static_cast<const Field<char *, field>&
>(that)._value) > 0; }
447 bool is_valid()
const {
return _rlm ? _rlm->is_valid(_value) :
true; }
451 int get_rlm_idx()
const {
return _rlm ? _rlm->get_rlm_idx(_value) : -1; }
455 const char *
get()
const {
return _value; }
464 const char *
set(
const char *from) {
return _value = from; }
478 std::ostream&
print(std::ostream& os)
const {
return os << _value; }
483 size_t print(
char *to)
const { ::strcpy(to, _value); return ::strlen(_value); }
489 template<
unsigned short field>
529 _value = that._value;
543 {
return same_base(that) && _value < static_cast<const Field<f8String, field>&>(that)._value; }
584 std::ostream&
print(std::ostream& os)
const {
return os << _value; }
589 size_t print(
char *to)
const {
return _value.copy(to, _value.size()); }
595 template<
unsigned short field>
647 _value = that._value;
661 {
return same_base(that) && _value < static_cast<const Field<fp_type, field>&>(that)._value; }
706 std::ostream&
print(std::ostream& os)
const {
return os << _value; }
717 template<
unsigned short field>
761 _value = that._value;
775 {
return same_base(that) && _value < static_cast<const Field<char, field>&>(that)._value; }
793 const char&
get()
const {
return _value; }
816 std::ostream&
print(std::ostream& os)
const {
return os << _value; }
821 size_t print(
char *to)
const { *to = _value;
return 1; }
834 to[width] = data % 10 +
'0';
846 const char *bsv(begin);
848 to = (to << 3) + (to << 1) + (*begin++ -
'0');
860 static const int mon_days[] {0,
865 31 + 28 + 31 + 30 + 31,
866 31 + 28 + 31 + 30 + 31 + 30,
867 31 + 28 + 31 + 30 + 31 + 30 + 31,
868 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
869 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
870 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
871 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
872 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31
875 const int tyears(ltm.tm_year ? ltm.tm_year - 70 : 0);
876 int tdays(mon_days[ltm.tm_mon] + (ltm.tm_mday ? ltm.tm_mday - 1 : 0) + tyears * 365 + (tyears + 2) / 4);
877 if (ltm.tm_year && ltm.tm_year % 4 == 0 && ltm.tm_mon < 2)
879 return tdays * 86400 + (ltm.tm_hour + utcdiff) * 3600 + ltm.tm_min * 60 + ltm.tm_sec;
897 const tm result(tickval.
get_tm());
898 const char *start(to);
902 format0(result.tm_year + 1900, to, 4);
904 format0(result.tm_mon + 1, to, 2);
908 format0(result.tm_mday, to, 2);
915 format0(result.tm_hour, to, 2);
940 if (len == 0 || (*ptr ==
'n' && len == 3 && *(ptr + 1) ==
'o' && *(ptr + 2) ==
'w'))
980 if (len == 0 || (*ptr ==
'n' && len == 3 && *(ptr + 1) ==
'o' && *(ptr + 2) ==
'w'))
1001 result += (tms.tm_hour * 3600ULL + tms.tm_min * 60ULL + tms.tm_sec) *
Tickval::billion;
1012 if (len == 0 || (*ptr ==
'n' && len == 3 && *(ptr + 1) ==
'o' && *(ptr + 2) ==
'w'))
1017 tms.tm_year -= 1900;
1032 template<
unsigned short field>
1081 _value = that._value;
1095 {
return same_base(that) && _value < static_cast<const Field<UTCTimestamp, field>&>(that)._value; }
1122 std::ostream&
print(std::ostream& os)
const
1140 template<
unsigned short field>
1184 _value = that._value;
1198 {
return same_base(that) && _value < static_cast<const Field<UTCTimeOnly, field>&>(that)._value; }
1225 std::ostream&
print(std::ostream& os)
const
1243 template<
unsigned short field>
1287 _value = that._value;
1301 {
return same_base(that) && _value < static_cast<const Field<UTCDateOnly, field>&>(that)._value; }
1328 std::ostream&
print(std::ostream& os)
const
1346 template<
unsigned short field>
1390 _value = that._value;
1404 {
return same_base(that) && _value < static_cast<const Field<LocalMktDate, field>&>(that)._value; }
1431 std::ostream&
print(std::ostream& os)
const
1449 template<
unsigned short field>
1494 _value = that._value;
1508 {
return same_base(that) && _value < static_cast<const Field<MonthYear, field>&>(that)._value; }
1535 std::ostream&
print(std::ostream& os)
const
1553 template<
unsigned short field>
1592 _value = that._value;
1606 {
return same_base(that) && _value < static_cast<const Field<TZTimeOnly, field>&>(that)._value; }
1633 std::ostream&
print(std::ostream& os)
const {
return os; }
1638 size_t print(
char *to)
const {
return 0; }
1646 template<
unsigned short field>
1685 _value = that._value;
1699 {
return same_base(that) && _value < static_cast<const Field<TZTimestamp, field>&>(that)._value; }
1726 std::ostream&
print(std::ostream& os)
const {
return os; }
1731 size_t print(
char *to)
const {
return 0; }
1739 template<
unsigned short field>
1774 template<
unsigned short field>
1809 template<
unsigned short field>
1844 template<
unsigned short field>
1879 template<
unsigned short field>
1914 template<
unsigned short field>
1962 _value = that._value;
1976 {
return same_base(that) && _value < static_cast<const Field<Boolean, field>&>(that)._value; }
1986 bool get()
const {
return _value; }
2013 std::ostream&
print(std::ostream& os)
const {
return os << (_value ?
'Y' :
'N'); }
2018 size_t print(
char *to)
const { *to = _value ?
'Y' :
'N';
return 1; }
2050 template<
typename T>
2052 {
return new T{from, db}; }
2060 template<
typename T,
typename R>
2064 ?
new T(from, db) :
new T(db->
get_rlm_val<R>(rv), db);
2071 template<
typename T,
typename... args>
2175 #endif // FIX8_FIELD_HPP_
Field(const f8String &from, const RealmBase *rlm=nullptr)
FieldTrait::FieldType get_underlying_type() const
The FieldType.
Field(const char *from, const RealmBase *rlm=nullptr)
const char & set(const char &from)
Field(const Field &from)
Copy Ctor.
size_t print(char *to) const
bool operator>(const BaseField &that) const
Greater than operator.
const unsigned short Common_GapFillFlag(123)
Field(const Field &from)
Copy Ctor.
bool operator>=(const BaseField &that) const
Greater or equal to operator.
const char Common_MsgByte_SEQUENCE_RESET('4')
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
Field(const unsigned &val, const RealmBase *rlm=nullptr)
Field(const Field &from)
Copy Ctor.
size_t encode(std::ostream &os) const
const char Common_MsgByte_REJECT('3')
std::ostream & _print(std::ostream &os, int idx) const
virtual bool operator>(const BaseField &that) const
Greater than operator.
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
virtual bool operator>(const BaseField &that) const =0
Greater than operator.
const unsigned short Common_TestReqID(112)
Field(const unsigned &val, const RealmBase *rlm=nullptr)
bool operator<(const BaseField &that) const
Less than operator.
const int & operator()() const
Field & operator=(const Field &that)
Assignment operator.
Field(const char *from, const RealmBase *rlm=nullptr)
const f8String Common_MsgType_BUSINESS_REJECT("j")
#define FIX8_DEFAULT_PRECISION
Field(const tm &from, const RealmBase *rlm=nullptr)
const unsigned short Common_RefMsgType(372)
Int2Type idiom. Kudos to Andrei Alexandrescu.
bool operator==(const BaseField &that) const
Equivalence operator.
bool operator>(const BaseField &that) const
Greater than operator.
Field(const f8String &from, const RealmBase *rlm=nullptr)
const unsigned short Common_CheckSum(10)
BaseField *(&) _do(const char *from, const RealmBase *db, const int)
static const ticks million
Partial specialisation for UTCDateOnly field type.
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
virtual bool operator==(const BaseField &that) const =0
Equivalence operator.
size_t modp_dtoa(double value, char *str, int prec)
Convert double to ascii.
std::ostream & print(std::ostream &os) const
const f8String & set(const f8String &from)
const unsigned short Common_DefaultApplVerID(1137)
std::ostream & print(std::ostream &os) const
const f8String Common_MsgType_LOGON("A")
const size_t MAX_MSGTYPE_FIELD_LEN(32)
Field(const f8String &from, const RealmBase *rlm=nullptr)
Field(const char *from, const RealmBase *rlm=nullptr)
void set(const Tickval &from)
const fp_type & set(const fp_type &from)
const char Common_MsgByte_BUSINESS_REJECT('j')
size_t itoa(T value, char *result, int base)
Fast itoa.
const f8String Common_MsgType_SEQUENCE_RESET("4")
Field(const char *from, const RealmBase *rlm=nullptr)
Field & operator=(const Field &that)
Assignment operator.
const int & set_from_raw(const f8String &from)
Partial specialisation for int field type.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
bool same_base(const BaseField &that) const
BaseField Equivalence test.
bool operator==(const BaseField &that) const
Equivalence operator.
size_t print(char *to) const
const char Common_MsgByte_LOGON('A')
Field()
Ctor. Compiler won't supply this method.
const RealmBase * get_realm() const
Field(const char val, const RealmBase *rlm=nullptr)
const unsigned short Common_BusinessRejectReason(380)
bool operator==(const BaseField &that) const
Equivalence operator.
const unsigned short Common_OnBehalfOfCompID(115)
Partial specialisation for MonthYear field type.
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
const unsigned short Common_TargetCompID(56)
const unsigned short Common_Text(58)
const unsigned short Common_HeartBtInt(108)
virtual ~BaseField()
Dtor.
Field(const char &val, const RealmBase *rlm=nullptr)
bool operator==(const BaseField &that) const
Equivalence operator.
bool operator==(const BaseField &that) const
Equivalence operator.
Field(const tm &from, const RealmBase *rlm=nullptr)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
static bool is_char(FieldType ftype)
const Tickval & operator()() const
const char & set_from_raw(const f8String &from)
Field(const f8String &from, const RealmBase *rlm=nullptr)
bool operator<(const BaseField &that) const
Less than operator.
f8String MultipleCharValue
bool operator<(const BaseField &that) const
Less than operator.
Field(const char *from, const RealmBase *rlm=nullptr)
Field(const f8String &from, const RealmBase *rlm=nullptr)
const unsigned short Common_EncryptMethod(98)
bool operator>(const BaseField &that) const
Greater than operator.
virtual int get_rlm_idx() const
virtual bool operator<(const BaseField &that) const
Less than operator.
bool operator==(const BaseField &that) const
Equivalence operator.
Field()
Ctor. Compiler won't supply this method.
Field & operator=(const Field &that)
Assignment operator.
Field(const Field &from)
Copy Ctor.
bool operator<(const BaseField &that) const
Less than operator.
f8String MultipleStringValue
Tickval::ticks date_parse(const char *ptr, size_t len)
bool operator!=(const char *that) const
Inequivalence operator.
size_t parse_decimal(const char *begin, size_t len, int &to)
fp_type fast_atof(const char *p)
Field & operator=(const Field &that)
Assignment operator.
Field(const fp_type &val, const int prec, const RealmBase *rlm=nullptr)
virtual bool operator>(const BaseField &that) const
Greater than operator.
Field(const char *from, const RealmBase *rlm=nullptr)
Field(const fp_type &val, const RealmBase *rlm=nullptr)
Field(const Field &from)
Copy Ctor.
std::ostream & print(std::ostream &os) const
const size_t HEADER_CALC_OFFSET(32)
size_t print(char *to) const
BaseField(unsigned short fnum, const RealmBase *rlm=nullptr)
Partial specialisation for TZTimeOnly field type.
Field(const f8String &from, const RealmBase *rlm=nullptr)
FieldTrait::FieldType get_underlying_type() const
The FieldType.
const f8String Common_MsgType_TEST_REQUEST("1")
const f8String Common_MsgType_HEARTBEAT("0")
Partial specialisation for f8String field type.
Field(const char *from, const RealmBase *rlm=nullptr)
const f8String Common_MsgType_LOGOUT("5")
bool operator>(const BaseField &that) const
Greater than operator.
bool is_valid(const T &what) const
bool operator<(const BaseField &that) const
Less than operator.
Field(const Tickval &val, const RealmBase *rlm=nullptr)
std::ostream & print(std::ostream &os) const
void set(const Tickval &from)
Partial specialisation for unsigned short field type.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
Field(const f8String &from, const RealmBase *rlm=nullptr)
const unsigned short Common_SenderCompID(49)
const unsigned short Common_EndSeqNo(16)
Field & operator=(const Field &that)
Assignment operator.
Domain range/set static metadata base class.
const fp_type & set_from_raw(const f8String &from)
const f8String Common_MsgType_REJECT("3")
const char Common_MsgByte_RESEND_REQUEST('2')
Partial specialisation for Boolean field type.
size_t date_time_format(const Tickval &tickval, char *to, TimeIndicator ind)
size_t print(char *to) const
virtual bool operator<(const BaseField &that) const =0
Less than operator.
bool operator>(const BaseField &that) const
Greater than operator.
Field(const Field &from)
Copy Ctor.
const char * operator()() const
Field & operator=(const Field &that)
Assignment operator.
std::ostream & print(std::ostream &os) const
const Tickval & operator()() const
Field(const Field &from)
Copy Ctor.
Field(const f8String &from, const RealmBase *rlm=nullptr)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
RealmBase(const void *range, RealmType dtype, FieldTrait::FieldType ftype, int sz, const char *const *descriptions)
FieldTrait::FieldType _ftype
Field(const char *from, const RealmBase *rlm=nullptr)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
bool operator==(const BaseField &that) const
Equivalence operator.
size_t print(char *to) const
FieldTrait::FieldType get_underlying_type() const
The FieldType.
Field(const tm &from, const RealmBase *rlm=nullptr)
Field(const Field &from)
Copy Ctor.
Field()
Ctor. Compiler won't supply this method.
static bool is_float(FieldType ftype)
bool operator==(const BaseField &that) const
Equivalence operator.
Field(const char *from, const RealmBase *rlm=nullptr)
static BaseField * _make(const char *from, const RealmBase *db, const int rv)
const char * set(const char *from)
FieldTrait::FieldType get_underlying_type() const
The FieldType.
bool operator==(const BaseField &that) const
Equivalence operator.
bool operator<(const BaseField &that) const
Less than operator.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
size_t print(char *to) const
Tickval::ticks time_parse(const char *ptr, size_t len, bool timeonly=false)
bool operator>(const BaseField &that) const
Greater than operator.
T fast_atoi(const char *str, const char term='\0')
std::ostream & print(std::ostream &os) const
Field(const Field &from)
Copy Ctor.
const unsigned short Common_PossDupFlag(43)
Field(const f8String &from, const RealmBase *rlm=nullptr)
virtual bool operator<(const BaseField &that) const
Less than operator.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
Type2Type idiom. Variadic template version. Kudos to Andrei Alexandrescu.
const Tickval & operator()() const
bool operator>(const BaseField &that) const
Greater than operator.
static const ticks billion
Tickval::ticks date_time_parse(const char *ptr, size_t len)
Field(const f8String &from, const RealmBase *rlm=nullptr)
Partial specialisation for fp_type field type. fp_type is singe or double.
Field(const Field &from)
Copy Ctor.
static const ticks noticks
const unsigned short Common_MsgType(35)
Field(const char *from, const RealmBase *rlm=nullptr)
bool operator==(const char *that) const
Equivalence operator.
size_t print(char *to) const
const T & get_rlm_val(const int idx) const
Field(const Field &from)
Copy Ctor.
Field & operator=(const Field &that)
Assignment operator.
Field(const char *from, const RealmBase *rlm=nullptr)
std::ostream & print(std::ostream &os) const
std::ostream & print(std::ostream &os) const
Partial specialisation for LocalMktDate field type.
void set(const Tickval &from)
bool operator<(const BaseField &that) const
Less than operator.
const Tickval & operator()() const
FieldTrait::FieldType get_underlying_type() const
The FieldType.
const unsigned short Common_MsgSeqNum(34)
const unsigned char default_assignment_separator('=')
default FIX assignment separator (=)
Field(const char *from, const RealmBase *rlm=nullptr)
const unsigned short Common_SendingTime(52)
const char Common_MsgByte_HEARTBEAT('0')
Field & operator=(const Field &that)
Assignment operator.
const unsigned short Common_BodyLength(9)
const unsigned short Common_OrigSendingTime(122)
const char Common_MsgByte_TEST_REQUEST('1')
decltype(f8_time_point::min().time_since_epoch().count()) ticks
size_t print(char *to) const
const unsigned short Common_OnBehalfOfSendingTime(370)
bool operator<(const BaseField &that) const
Less than operator.
void set(const Tickval &from)
Field metadata structures.
const int & set(const int &from)
Field & operator=(const Field &that)
Assignment operator.
Field(const char *from, const RealmBase *rlm=nullptr)
bool set_from_raw(const f8String &from)
const f8String Common_MsgType_RESEND_REQUEST("2")
Field(const Field &from)
Copy Ctor.
Field & operator=(const Field &that)
Assignment operator.
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
bool operator==(const BaseField &that) const
Equivalence operator.
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
std::ostream & print(std::ostream &os) const
bool operator==(const BaseField &that) const
Equivalence operator.
Partial specialisation for TZTimestamp field type.
Field(const Field &from)
Copy Ctor.
void set(const Tickval &from)
bool operator==(const BaseField &that) const
Equivalence operator.
Field template. There will ONLY be partial template specialisations of this template.
const char * set_from_raw(const char *from)
Field(const f8String &from, const RealmBase *rlm=nullptr)
Partial specialisation for UTCTimestamp field type.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
std::ostream & print(std::ostream &os, int idx) const
const unsigned short Common_OnBehalfOfLocationID(144)
static bool is_int(FieldType ftype)
Field(const unsigned &val, const RealmBase *rlm=nullptr)
Field(const char *from, const RealmBase *rlm=nullptr)
Field(const f8String &from, const RealmBase *rlm=nullptr)
virtual bool operator>(const BaseField &that) const
Greater than operator.
const unsigned short _fnum
bool operator<=(const BaseField &that) const
Less or equal to operator.
bool operator==(const BaseField &that) const
Equivalence operator.
void set(const Tickval &from)
Field(const Field &from)
Copy Ctor.
Field(const unsigned &val, const RealmBase *rlm=nullptr)
const Tickval & operator()() const
const unsigned short Common_NewSeqNo(36)
Field(const f8String &from, const RealmBase *rlm=nullptr)
time_t time_to_epoch(const tm <m, int utcdiff=0)
static bool is_string(FieldType ftype)
bool operator<(const BaseField &that) const
Less than operator.
const unsigned char default_field_separator(0x1)
default FIX field separator (^A)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
const unsigned short Common_BeginString(8)
size_t print(char *to) const
Field()
Ctor. Compiler won't supply this method.
Field(unsigned val, const RealmBase *rlm=nullptr)
Partial specialisation for UTCTimeOnly field type.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
bool operator<(const BaseField &that) const
Less than operator.
Partial specialisation for char * field type.
Field()
Ctor. Compiler won't supply this method.
Field & operator=(const Field &that)
Assignment operator.
const fp_type & operator()() const
Field & operator=(const Field &that)
Assignment operator.
The base field class (ABC) for all fields.
FieldTrait::FieldType get_underlying_type() const
The FieldType.
const unsigned short Common_OnBehalfOfSubID(116)
const f8String & set_from_raw(const f8String &from)
const f8String & operator()() const
bool operator>(const BaseField &that) const
Greater than operator.
friend std::ostream & operator<<(std::ostream &os, const BaseField &what)
std::ostream & print(std::ostream &os) const
std::ostream & print(std::ostream &os) const
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
FieldTrait::FieldType get_underlying_type() const
The FieldType.
const Tickval & operator()() const
Field(const f8String &from, const RealmBase *rlm=nullptr)
size_t print(char *to) const
Field(const tm &from, const RealmBase *rlm=nullptr)
size_t print(char *to) const
void set_precision(const int prec)
Field(const tm &from, const RealmBase *rlm=nullptr)
void format0(int data, char *to, int width)
bool operator<(const BaseField &that) const
Less than operator.
const char & operator()() const
static BaseField * _make(const char *from, const RealmBase *db, const int rv)
size_t encode(char *to) const
const unsigned short Common_RefSeqNum(45)
Field(const char *from, const RealmBase *rlm=nullptr)
Base class for all fix messages.
const unsigned short _fnum
std::ostream & print(std::ostream &os) const
size_t print(char *to) const
Field(const f8String &from, const RealmBase *rlm=nullptr)
Field(const char *from, const RealmBase *rlm=nullptr)
const unsigned short Common_ResetSeqNumFlag(141)
const Tickval & operator()() const
bool operator>(const BaseField &that) const
Greater than operator.
std::ostream & print(std::ostream &os) const
Field & operator=(const Field &that)
Assignment operator.
Field(const f8String &from, const RealmBase *rlm=nullptr)
int get_rlm_idx(const T &what) const
const unsigned short Common_BeginSeqNo(7)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
size_t print(char *to) const
Inst(Type2Type< T, args...>)
Field(const int val, const RealmBase *rlm=nullptr)
static unsigned short get_field_id()
Get the FIX fieldID (tag number).
void set(const Tickval &from)
Field(const Field &from)
Copy Ctor.
Field & operator=(const Field &)=delete
virtual FieldTrait::FieldType get_underlying_type() const =0
bool set(const bool from)
Field(const f8String &from, const RealmBase *rlm=nullptr)
unsigned short get_tag() const
Field(const char *from, const RealmBase *rlm=nullptr)
virtual std::ostream & print(std::ostream &os) const =0
const char Common_MsgByte_LOGOUT('5')
virtual BaseField * copy()=0
bool operator>(const BaseField &that) const
Greater than operator.
Field(const char *from, const RealmBase *rlm=nullptr)
const char *const * _descriptions
bool operator!=(const BaseField &that) const
Inequivalence operator.
Field(const Field &from)
Copy Ctor.