FIX::FieldBase Class Reference

Base representation of all Field classes. More...

`#include <Field.h>`

Inheritance diagram for FIX::FieldBase:
[legend]
Collaboration diagram for FIX::FieldBase:
[legend]

## Classes

class | field_metrics
| Class used to store field metrics like total length and checksum. More...

## Public Member Functions

| FieldBase (int tag, const std::string &string)
virtual | ~FieldBase ()
| FieldBase (const FieldBase &rhs)
FieldBase & | operator= (const FieldBase &rhs)
void | swap (FieldBase &rhs)
void | setTag (int tag)
void | setField (int field)
void | setString (const std::string &string)
int | getTag () const
| Get the fields integer tag.
int | getField () const
const std::string & | getString () const
| Get the string representation of the fields value.
const std::string & | getFixString () const
| Get the string representation of the Field (i.e.) 55=MSFT[SOH].
size_t | getLength () const
| Get the length of the fields string representation.
int | getTotal () const
| Get the total value the fields characters added together.
bool | operator< (const FieldBase &field) const
| Compares fields based on their tag numbers.

## Private Member Functions

| FieldBase (int tag, std::string::const_iterator valueStart, std::string::const_iterator valueEnd, std::string::const_iterator tagStart, std::string::const_iterator tagEnd)
| Constructor which also calculates field metrics.
void | calculate () const
void | encodeTo (std::string &result) const
| Serializes string representation of the Field to input string.

## Static Private Member Functions

static field_metrics | no_metrics ()
static field_metrics | calculateMetrics (std::string::const_iterator const start, std::string::const_iterator const end)
| Calculate metrics for any input string.
static field_metrics | calculateMetrics (const std::string &field)

## Private Attributes

int | m_tag
std::string | m_string
std::string | m_data
field_metrics | m_metrics

## Friends

class | Message

## Detailed Description

Base representation of all Field classes.

This base class is the lowest common denominator of all fields. It keeps all fields in its most generic string representation with its integer tag.

Definition at line 49 of file Field.h.

## Constructor & Destructor Documentation

## FieldBase() [1/3]

FIX::FieldBase::FieldBase | ( | int | tag,
|  | std::string::const_iterator | valueStart,
|  | std::string::const_iterator | valueEnd,
|  | std::string::const_iterator | tagStart,
|  | std::string::const_iterator | tagEnd
| ) |  |

inline private

Constructor which also calculates field metrics.

Definition at line 80 of file Field.h.

: m_tag( tag )
, m_string( valueStart, valueEnd )
, m_metrics( calculateMetrics( tagStart, tagEnd ) )
{}
FIX::FieldBase::m_metrics
field_metrics m_metrics
Definition Field.h:238
FIX::FieldBase::calculateMetrics
static field_metrics calculateMetrics(std::string::const_iterator const start, std::string::const_iterator const end)
Calculate metrics for any input string.
Definition Field.h:213
FIX::FieldBase::m_string
std::string m_string
Definition Field.h:236
FIX::FieldBase::m_tag
int m_tag
Definition Field.h:235

## FieldBase() [2/3]

FIX::FieldBase::FieldBase | ( | int | tag,
|  | const std::string & | string
| ) |  |

inline

Definition at line 91 of file Field.h.

: m_tag( tag ), m_string(string), m_metrics( no_metrics() )
{}
FIX::FieldBase::no_metrics
static field_metrics no_metrics()
Definition Field.h:207

## ~FieldBase()

virtual FIX::FieldBase::~FieldBase | ( |  | ) |

inline virtual

Definition at line 95 of file Field.h.

{}

## FieldBase() [3/3]

FIX::FieldBase::FieldBase | ( | const FieldBase & | rhs | ) |

inline

Definition at line 97 of file Field.h.

: m_tag( rhs.getTag() )
, m_string( rhs.m_string )
, m_metrics( rhs.m_metrics )
{
}

## Member Function Documentation

## calculate()

void FIX::FieldBase::calculate | ( |  | ) | const

inline private

Definition at line 184 of file Field.h.

{
if( m_metrics.isValid() ) return;
m_metrics = calculateMetrics( getFixString() );
}
FIX::FieldBase::field_metrics::isValid
bool isValid() const
Definition Field.h:68
FIX::FieldBase::getFixString
const std::string & getFixString() const
Get the string representation of the Field (i.e.) 55=MSFT[SOH].
Definition Field.h:156

References calculateMetrics(), getFixString(), FIX::FieldBase::field_metrics::isValid(), and m_metrics.

Referenced by getLength(), and getTotal().

## calculateMetrics() [1/2]

static field_metrics FIX::FieldBase::calculateMetrics | ( | const std::string & | field | ) |

inline static private

Definition at line 230 of file Field.h.

{
return calculateMetrics( field.begin(), field.end() );
}

References calculateMetrics().

## calculateMetrics() [2/2]

static field_metrics FIX::FieldBase::calculateMetrics | ( | std::string::const_iterator const | start,
|  | std::string::const_iterator const | end
| ) |  |

inline static private

Calculate metrics for any input string.

Definition at line 213 of file Field.h.

{
int checksum = 0;
for ( std::string::const_iterator str = start; str != end; ++str )
checksum += (unsigned char)( *str );
#if defined(__SUNPRO_CC)
std::ptrdiff_t d;
std::distance(start, end, d);
return field_metrics( d, checksum );
#else
return field_metrics( std::distance( start, end ), checksum );
#endif
}

Referenced by calculate(), and calculateMetrics().

## encodeTo()

void FIX::FieldBase::encodeTo | ( | std::string & | result | ) | const

inline private

Serializes string representation of the Field to input string.

Definition at line 192 of file Field.h.

{
size_t tagLength = FIX::number_of_symbols_in( m_tag );
size_t totalLength = tagLength + m_string.length() + 2;
result.resize( totalLength );
char * buf = (char*)result.c_str();
FIX::integer_to_string( buf, tagLength, m_tag );
buf[tagLength] = '=';
memcpy( buf + tagLength + 1, m_string.data(), m_string.length() );
buf[totalLength - 1] = '\001';
}
FIX::integer_to_string
char * integer_to_string(char *buf, const size_t len, signed_int t)
Definition FieldConvertors.h:99
FIX::number_of_symbols_in
int number_of_symbols_in(const signed_int value)
Definition FieldConvertors.h:51

References FIX::integer_to_string(), m_string, m_tag, and FIX::number_of_symbols_in().

Referenced by getFixString().

## getField()

int FIX::FieldBase::getField | ( |  | ) | const

inline

Deprecated:
  Use getTag

Definition at line 148 of file Field.h.

{ return getTag(); }
FIX::FieldBase::getTag
int getTag() const
Get the fields integer tag.
Definition Field.h:144

References getTag().

Referenced by FIX::Session::nextResendRequest().

## getFixString()

const std::string & FIX::FieldBase::getFixString | ( |  | ) | const

inline

Get the string representation of the Field (i.e.) 55=MSFT[SOH].

Definition at line 156 of file Field.h.

{
if( m_data.empty() )
encodeTo( m_data );
return m_data;
}
FIX::FieldBase::encodeTo
void encodeTo(std::string &result) const
Serializes string representation of the Field to input string.
Definition Field.h:192
FIX::FieldBase::m_data
std::string m_data
Definition Field.h:237

References encodeTo(), and m_data.

Referenced by calculate().

## getLength()

size_t FIX::FieldBase::getLength | ( |  | ) | const

inline

Get the length of the fields string representation.

Definition at line 165 of file Field.h.

{
calculate();
return m_metrics.getLength();
}
FIX::FieldBase::field_metrics::getLength
size_t getLength() const
Definition Field.h:62
FIX::FieldBase::calculate
void calculate() const
Definition Field.h:184

References calculate(), FIX::FieldBase::field_metrics::getLength(), and m_metrics.

## getString()

const std::string & FIX::FieldBase::getString | ( |  | ) | const

inline

Get the string representation of the fields value.

Definition at line 152 of file Field.h.

{ return m_string; }

References m_string.

Referenced by FIX::Message::extractField(), FIX::FieldMap::getField(), FIX::StringField::getValue(), FIX::CharField::getValue(), FIX::DoubleField::getValue(), FIX::IntField::getValue(), FIX::BoolField::getValue(), FIX::UtcTimeStampField::getValue(), FIX::UtcDateField::getValue(), FIX::UtcTimeOnlyField::getValue(), FIX::CheckSumField::getValue(), FIX::StringField::operator const std::string &(), FIX::StringField::operator!=(), FIX::StringField::operator<(), FIX::StringField::operator<=(), FIX::StringField::operator==(), FIX::StringField::operator>(), FIX::StringField::operator>=(), FIX::FieldMap::setField(), and FIX::Message::setString().

## getTag()

int FIX::FieldBase::getTag | ( |  | ) | const

inline

Get the fields integer tag.

Definition at line 144 of file Field.h.

{ return m_tag; }

References m_tag.

Referenced by FIX::FieldMap::addField(), FIX::FieldMap::findPositionFor(), getField(), FIX::FieldMap::getFieldIfSet(), FIX::CharField::getValue(), FIX::DoubleField::getValue(), FIX::IntField::getValue(), FIX::BoolField::getValue(), FIX::UtcTimeStampField::getValue(), FIX::UtcDateField::getValue(), FIX::UtcTimeOnlyField::getValue(), FIX::CheckSumField::getValue(), FIX::Message::isHeaderField(), FIX::FieldMap::isSetField(), FIX::Message::isTrailerField(), FIX::DataDictionary::iterate(), FIX::FieldMap::finder::operator()(), FIX::FieldMap::sorter::operator()(), FIX::FieldMap::sorter::operator()(), FIX::FieldMap::sorter::operator()(), operator=(), FIX::FieldMap::setField(), FIX::Message::setGroup(), FIX::Message::setString(), FIX::Message::setStringHeader(), and FIX::DataDictionary::shouldCheckTag().

## getTotal()

int FIX::FieldBase::getTotal | ( |  | ) | const

inline

Get the total value the fields characters added together.

Definition at line 172 of file Field.h.

{
calculate();
return m_metrics.getCheckSum();
}
FIX::FieldBase::field_metrics::getCheckSum
int getCheckSum() const
Definition Field.h:65

References calculate(), FIX::FieldBase::field_metrics::getCheckSum(), and m_metrics.

## no_metrics()

static field_metrics FIX::FieldBase::no_metrics | ( |  | ) |

inline static private

Definition at line 207 of file Field.h.

{
return field_metrics( 0, 0 );
}

Referenced by setString(), and setTag().

## operator<()

bool FIX::FieldBase::operator< | ( | const FieldBase & | field | ) | const

inline

Compares fields based on their tag numbers.

Definition at line 179 of file Field.h.

{ return m_tag < field.m_tag; }

References m_tag.

## operator=()

FieldBase & FIX::FieldBase::operator= | ( | const FieldBase & | rhs | ) |

inline

Definition at line 105 of file Field.h.

{
m_tag = rhs.getTag();
m_string = rhs.m_string;
m_metrics = rhs.m_metrics;
m_data.clear();
return *this;
}

References getTag(), m_data, m_metrics, m_string, and m_tag.

## setField()

void FIX::FieldBase::setField | ( | int | field | ) |

inline

Deprecated:
  Use setTag

Definition at line 131 of file Field.h.

{
setTag( field );
}
FIX::FieldBase::setTag
void setTag(int tag)
Definition Field.h:123

References setTag().

Referenced by FIX::Session::generateHeartbeat().

## setString()

void FIX::FieldBase::setString | ( | const std::string & | string | ) |

inline

Definition at line 136 of file Field.h.

{
m_string = string;
m_metrics = no_metrics();
m_data.clear();
}

References m_data, m_metrics, m_string, and no_metrics().

Referenced by FIX::BoolField::setValue(), FIX::CharField::setValue(), FIX::StringField::setValue(), FIX::UtcDateField::setValue(), FIX::UtcTimeOnlyField::setValue(), FIX::UtcTimeStampField::setValue(), FIX::DoubleField::setValue(), FIX::IntField::setValue(), and FIX::CheckSumField::setValue().

## setTag()

void FIX::FieldBase::setTag | ( | int | tag | ) |

inline

Definition at line 123 of file Field.h.

{
m_tag = tag;
m_metrics = no_metrics();
m_data.clear();
}

References m_data, m_metrics, m_tag, and no_metrics().

Referenced by setField().

## swap()

void FIX::FieldBase::swap | ( | FieldBase & | rhs | ) |

inline

Definition at line 115 of file Field.h.

{
std::swap( m_tag, rhs.m_tag );
std::swap( m_metrics, rhs.m_metrics );
m_string.swap( rhs.m_string );
m_data.swap( rhs.m_data );
}

References m_data, m_metrics, m_string, and m_tag.

Referenced by FIX::swap().

## Friends And Related Symbol Documentation

## Message

friend class Message

friend

Definition at line 77 of file Field.h.

## Member Data Documentation

## m_data

std::string FIX::FieldBase::m_data

mutable private

Definition at line 237 of file Field.h.

Referenced by getFixString(), operator=(), setString(), setTag(), and swap().

## m_metrics

field_metrics FIX::FieldBase::m_metrics

mutable private

Definition at line 238 of file Field.h.

Referenced by calculate(), getLength(), getTotal(), operator=(), setString(), setTag(), and swap().

## m_string

std::string FIX::FieldBase::m_string

private

Definition at line 236 of file Field.h.

Referenced by encodeTo(), getString(), operator=(), setString(), and swap().

## m_tag

int FIX::FieldBase::m_tag

private

Definition at line 235 of file Field.h.

Referenced by encodeTo(), getTag(), operator<(), operator=(), setTag(), and swap().

The documentation for this class was generated from the following file:

- Field.h