Index  Source Files  Annotated Class List  Alphabetical Class List  Class Hierarchy  Graphical Class Hierarchy 

FIX::FieldBase Class Reference

Base representation of all Field classes. More...

#include <Field.h>

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

List of all members.

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 & getValue () 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 thier tag numbers.

Private Member Functions

void calculate () const

Private Attributes

int m_field
std::string m_string
std::string m_data
int m_length
int m_total
bool m_calculated

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,
const std::string &  string 
) [inline]

Definition at line 49 of file Field.h.

00050     : m_field( field ), m_string(string), m_length( 0 ), m_total( 0 ),
00051       m_calculated( false )
00052   {}

virtual FIX::FieldBase::~FieldBase (  )  [inline, virtual]

Definition at line 54 of file Field.h.

00054 {}


Member Function Documentation

void FIX::FieldBase::calculate (  )  const [inline, private]

Definition at line 102 of file Field.h.

References FIX::IntConvertor::convert(), m_calculated, m_data, m_field, m_length, m_string, m_total, and STRING_SPRINTF.

Referenced by getLength(), getTotal(), and getValue().

00103   {
00104     if( m_calculated ) return;
00105 
00106     char buf[64];
00107 
00108     if( 13 + m_string.length() < sizeof(buf) )
00109     {
00110       int tagLength = STRING_SPRINTF( buf, "%d=", m_field );
00111       m_length = tagLength + m_string.length() + 1;
00112       memcpy( buf + tagLength, m_string.data(), m_string.length() );
00113       buf[m_length - 1] = '\001';
00114       m_data.assign( buf, m_length );
00115     }
00116     else
00117     {
00118       m_data = IntConvertor::convert(m_field) + "=" + m_string + "\001";
00119       m_length = m_data.length();
00120     }
00121 
00122     const unsigned char* iter =
00123       reinterpret_cast<const unsigned char*>( m_data.c_str() );
00124     m_total = std::accumulate( iter, iter + m_length, 0 );
00125 
00126     m_calculated = true;
00127   }

int FIX::FieldBase::getField (  )  const [inline]
int FIX::FieldBase::getLength (  )  const [inline]

Get the length of the fields string representation.

Definition at line 84 of file Field.h.

References calculate(), and m_length.

00085   {
00086     calculate();
00087     return m_length;
00088   }

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 91 of file Field.h.

References calculate(), and m_total.

00092   {
00093     calculate();
00094     return m_total;
00095   }

const std::string& FIX::FieldBase::getValue (  )  const [inline]

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

Reimplemented in FIX::StringField, FIX::CharField, FIX::DoubleField, FIX::IntField, FIX::BoolField, FIX::UtcTimeStampField, FIX::UtcDateField, FIX::UtcTimeOnlyField, and FIX::CheckSumField.

Definition at line 77 of file Field.h.

References calculate(), and m_data.

00078   {
00079     calculate();
00080     return m_data;
00081   }

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

Compares fields based on thier tag numbers.

Reimplemented in FIX::StringField, FIX::UtcTimeStampField, FIX::UtcDateField, and FIX::UtcTimeOnlyField.

Definition at line 98 of file Field.h.

References m_field.

00099     { return m_field < field.m_field; }

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

Definition at line 56 of file Field.h.

References m_calculated, and m_field.

00057   {
00058     m_field = field;
00059     m_calculated = false;
00060   }

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

Definition at line 62 of file Field.h.

References m_calculated, and m_string.

Referenced by FIX::StringField::setValue().

00063   {
00064     m_string = string;
00065     m_calculated = false;
00066   }


Friends And Related Function Documentation

friend class Message [friend]

Definition at line 47 of file Field.h.


Member Data Documentation

bool FIX::FieldBase::m_calculated [mutable, private]

Definition at line 134 of file Field.h.

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

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

Definition at line 131 of file Field.h.

Referenced by calculate(), and getValue().

int FIX::FieldBase::m_field [private]

Definition at line 129 of file Field.h.

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

int FIX::FieldBase::m_length [mutable, private]

Definition at line 132 of file Field.h.

Referenced by calculate(), and getLength().

std::string FIX::FieldBase::m_string [private]

Definition at line 130 of file Field.h.

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

int FIX::FieldBase::m_total [mutable, private]

Definition at line 133 of file Field.h.

Referenced by calculate(), and getTotal().


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

Generated on Mon Apr 5 21:00:03 2010 for QuickFIX by doxygen 1.6.1 written by Dimitri van Heesch, © 1997-2001