Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
FIX::FieldBase Class Reference

Base representation of all Field classes. More...

#include <Field.h>

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

Classes

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

Public Member Functions

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

Private Member Functions

 FieldBase (int field, 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. More...
 
void calculate () const
 
void encodeTo (std::string &result) const
 Serializes string representation of the Field to input string. More...
 

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. More...
 
static field_metrics calculateMetrics (const std::string &field)
 

Private Attributes

int m_field
 
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 45 of file Field.h.

Constructor & Destructor Documentation

◆ FieldBase() [1/2]

FIX::FieldBase::FieldBase ( int  field,
std::string::const_iterator  valueStart,
std::string::const_iterator  valueEnd,
std::string::const_iterator  tagStart,
std::string::const_iterator  tagEnd 
)
inlineprivate

Constructor which also calculates field metrics.

Definition at line 76 of file Field.h.

81  : m_field( field )
82  , m_string( valueStart, valueEnd )
83  , m_metrics( calculateMetrics( tagStart, tagEnd ) )
84  {}
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:173
std::string m_string
Definition: Field.h:190
int m_field
Definition: Field.h:189
field_metrics m_metrics
Definition: Field.h:192

◆ FieldBase() [2/2]

FIX::FieldBase::FieldBase ( int  field,
const std::string &  string 
)
inline

Definition at line 87 of file Field.h.

88  : m_field( field ), m_string(string), m_metrics( no_metrics() )
89  {}
std::string m_string
Definition: Field.h:190
int m_field
Definition: Field.h:189
field_metrics m_metrics
Definition: Field.h:192
static field_metrics no_metrics()
Definition: Field.h:167

◆ ~FieldBase()

virtual FIX::FieldBase::~FieldBase ( )
inlinevirtual

Definition at line 91 of file Field.h.

91 {}

Member Function Documentation

◆ calculate()

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

Definition at line 144 of file Field.h.

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

Referenced by getLength(), and getTotal().

145  {
146  if( m_metrics.isValid() ) return;
147 
149  }
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:173
const std::string & getFixString() const
Get the string representation of the Field (i.e.) 55=MSFT[SOH].
Definition: Field.h:116
field_metrics m_metrics
Definition: Field.h:192
bool isValid() const
Definition: Field.h:64

◆ calculateMetrics() [1/2]

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

Calculate metrics for any input string.

Definition at line 173 of file Field.h.

References FIX::FieldBase::field_metrics::field_metrics().

Referenced by calculate(), and calculateMetrics().

176  {
177  int checksum = 0;
178  for ( std::string::const_iterator str = start; str != end; ++str )
179  checksum += (unsigned char)( *str );
180 
181  return field_metrics( std::distance( start, end ), checksum );
182  }

◆ calculateMetrics() [2/2]

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

Definition at line 184 of file Field.h.

References calculateMetrics().

185  {
186  return calculateMetrics( field.begin(), field.end() );
187  }
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:173

◆ encodeTo()

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

Serializes string representation of the Field to input string.

Definition at line 152 of file Field.h.

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

Referenced by getFixString().

153  {
154  size_t tagLength = FIX::number_of_symbols_in( m_field ) + 1;
155  size_t totalLength = tagLength + m_string.length() + 1;
156 
157  result.resize( totalLength );
158 
159  char * buf = (char*)result.c_str();
160  FIX::integer_to_string( buf, tagLength, m_field );
161 
162  buf[tagLength - 1] = '=';
163  memcpy( buf + tagLength, m_string.data(), m_string.length() );
164  buf[totalLength - 1] = '\001';
165  }
int number_of_symbols_in(const signed_int value)
char * integer_to_string(char *buf, const size_t len, signed_int t)
std::string m_string
Definition: Field.h:190
int m_field
Definition: Field.h:189

◆ getField()

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

◆ getFixString()

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

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

Definition at line 116 of file Field.h.

References encodeTo(), and m_data.

Referenced by calculate().

117  {
118  if( m_data.empty() )
119  encodeTo( m_data );
120 
121  return m_data;
122  }
void encodeTo(std::string &result) const
Serializes string representation of the Field to input string.
Definition: Field.h:152
std::string m_data
Definition: Field.h:191

◆ getLength()

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

Get the length of the fields string representation.

Definition at line 125 of file Field.h.

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

126  {
127  calculate();
128  return m_metrics.getLength();
129  }
size_t getLength() const
Definition: Field.h:58
void calculate() const
Definition: Field.h:144
field_metrics m_metrics
Definition: Field.h:192

◆ getString()

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

◆ getTotal()

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

Get the total value the fields characters added together.

Definition at line 132 of file Field.h.

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

133  {
134  calculate();
135  return m_metrics.getCheckSum();
136  }
void calculate() const
Definition: Field.h:144
field_metrics m_metrics
Definition: Field.h:192
int getCheckSum() const
Definition: Field.h:61

◆ no_metrics()

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

Definition at line 167 of file Field.h.

References FIX::FieldBase::field_metrics::field_metrics().

Referenced by setField(), and setString().

168  {
169  return field_metrics( 0, 0 );
170  }

◆ operator<()

bool FIX::FieldBase::operator< ( const FieldBase field) const
inline

Compares fields based on their tag numbers.

Definition at line 139 of file Field.h.

References m_field.

Referenced by FIX::StringField::operator>=().

140  { return m_field < field.m_field; }
int m_field
Definition: Field.h:189

◆ setField()

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

Definition at line 93 of file Field.h.

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

94  {
95  m_field = field;
97  m_data.clear();
98  }
int m_field
Definition: Field.h:189
field_metrics m_metrics
Definition: Field.h:192
static field_metrics no_metrics()
Definition: Field.h:167
std::string m_data
Definition: Field.h:191

◆ setString()

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

Friends And Related Function Documentation

◆ Message

friend class Message
friend

Definition at line 73 of file Field.h.

Member Data Documentation

◆ m_data

std::string FIX::FieldBase::m_data
mutableprivate

Definition at line 191 of file Field.h.

Referenced by getFixString(), setField(), and setString().

◆ m_field

int FIX::FieldBase::m_field
private

Definition at line 189 of file Field.h.

Referenced by encodeTo(), getField(), operator<(), and setField().

◆ m_metrics

field_metrics FIX::FieldBase::m_metrics
mutableprivate

Definition at line 192 of file Field.h.

Referenced by calculate(), getLength(), getTotal(), setField(), and setString().

◆ m_string

std::string FIX::FieldBase::m_string
private

Definition at line 190 of file Field.h.

Referenced by encodeTo(), getString(), and setString().


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

Generated on Thu Sep 5 2019 11:07:58 for QuickFIX by doxygen 1.8.13 written by Dimitri van Heesch, © 1997-2001