Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
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]

List of all members.

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.
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].
int 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 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.
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_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

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 
) [inline, private]

Constructor which also calculates field metrics.

Definition at line 76 of file Field.h.

    : m_field( field )
    , m_string( valueStart, valueEnd )
    , m_metrics( calculateMetrics( tagStart, tagEnd ) )
  {}
FIX::FieldBase::FieldBase ( int  field,
const std::string &  string 
) [inline]

Definition at line 87 of file Field.h.

    : m_field( field ), m_string(string), m_metrics( no_metrics() )
  {}
virtual FIX::FieldBase::~FieldBase ( ) [inline, virtual]

Definition at line 91 of file Field.h.

{}

Member Function Documentation

void FIX::FieldBase::calculate ( ) const [inline, private]
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 173 of file Field.h.

Referenced by calculate(), and calculateMetrics().

  {
    int checksum = 0;
    for ( std::string::const_iterator str = start; str != end; ++str )
      checksum += (unsigned char)( *str );

    return field_metrics( std::distance( start, end ), checksum );
  }
static field_metrics FIX::FieldBase::calculateMetrics ( const std::string &  field) [inline, static, private]

Definition at line 184 of file Field.h.

References calculateMetrics().

  {
    return calculateMetrics( field.begin(), field.end() );
  }
void FIX::FieldBase::encodeTo ( std::string &  result) const [inline, private]

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().

  {
    int tagLength = FIX::number_of_symbols_in( m_field ) + 1;
    int totalLength = tagLength + m_string.length() + 1;

    result.resize( totalLength );

    char * buf = (char*)result.c_str();
    FIX::integer_to_string( buf, tagLength, m_field );

    buf[tagLength - 1] = '=';
    memcpy( buf + tagLength, m_string.data(), m_string.length() );
    buf[totalLength - 1] = '\001';
  }
int FIX::FieldBase::getField ( ) const [inline]
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().

  {
    if( m_data.empty() )
      encodeTo( m_data );

    return m_data;
  }
int 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.

  {
    calculate();
    return m_metrics.getLength();
  }
const std::string& FIX::FieldBase::getString ( ) const [inline]
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.

  {
    calculate();
    return m_metrics.getCheckSum();
  }
static field_metrics FIX::FieldBase::no_metrics ( ) [inline, static, private]

Definition at line 167 of file Field.h.

Referenced by setField(), and setString().

  {
    return field_metrics( 0, 0 );
  }
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.

  { return m_field < field.m_field; }
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().

  {
    m_field = field;
    m_metrics = no_metrics();
    m_data.clear();
  }
void FIX::FieldBase::setString ( const std::string &  string) [inline]

Friends And Related Function Documentation

friend class Message [friend]

Definition at line 73 of file Field.h.


Member Data Documentation

std::string FIX::FieldBase::m_data [mutable, private]

Definition at line 191 of file Field.h.

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

int FIX::FieldBase::m_field [private]

Definition at line 189 of file Field.h.

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

Definition at line 192 of file Field.h.

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

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 Mon Jun 23 2014 23:49:39 for QuickFIX by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001