FIX::FieldBase Class Reference

Base representation of all Field classes. More...

#include <Field.h>

Inheritance diagram for FIX::FieldBase:
Collaboration diagram for FIX::FieldBase:

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)
FieldBaseoperator= (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 )
inlineprivate

◆ FieldBase() [2/3]

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

Definition at line 91 of file Field.h.

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

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

◆ ~FieldBase()

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

Definition at line 95 of file Field.h.

95{}

◆ FieldBase() [3/3]

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

Definition at line 97 of file Field.h.

98 : m_tag( rhs.getTag() )
99 , m_string( rhs.m_string )
100 , m_metrics( rhs.m_metrics )
101 {
102
103 }

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

Member Function Documentation

◆ calculate()

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

Definition at line 184 of file Field.h.

185 {
186 if( m_metrics.isValid() ) return;
187
189 }
const std::string & getFixString() const
Get the string representation of the Field (i.e.) 55=MSFT[SOH].
Definition Field.h:156

References calculateMetrics(), getFixString(), and m_metrics.

Referenced by getLength(), and getTotal().

◆ calculateMetrics() [1/2]

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

Definition at line 230 of file Field.h.

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

References calculateMetrics().

◆ calculateMetrics() [2/2]

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

216 {
217 int checksum = 0;
218 for ( std::string::const_iterator str = start; str != end; ++str )
219 checksum += (unsigned char)( *str );
220
221#if defined(__SUNPRO_CC)
222 std::ptrdiff_t d;
223 std::distance(start, end, d);
224 return field_metrics( d, checksum );
225#else
226 return field_metrics( std::distance( start, end ), checksum );
227#endif
228 }
Class used to store field metrics like total length and checksum.
Definition Field.h:54

Referenced by calculate(), calculateMetrics(), and FieldBase().

◆ encodeTo()

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

Serializes string representation of the Field to input string.

Definition at line 192 of file Field.h.

193 {
194 size_t tagLength = FIX::number_of_symbols_in( m_tag );
195 size_t totalLength = tagLength + m_string.length() + 2;
196
197 result.resize( totalLength );
198
199 char * buf = (char*)result.c_str();
200 FIX::integer_to_string( buf, tagLength, m_tag );
201
202 buf[tagLength] = '=';
203 memcpy( buf + tagLength + 1, m_string.data(), m_string.length() );
204 buf[totalLength - 1] = '\001';
205 }
char * integer_to_string(char *buf, const size_t len, signed_int t)
int number_of_symbols_in(const signed_int value)

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.

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

References getTag().

◆ 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.

157 {
158 if( m_data.empty() )
159 encodeTo( m_data );
160
161 return m_data;
162 }
void encodeTo(std::string &result) const
Serializes string representation of the Field to input string.
Definition Field.h:192
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.

166 {
167 calculate();
168 return m_metrics.getLength();
169 }
void calculate() const
Definition Field.h:184

References calculate(), and m_metrics.

◆ getString()

◆ getTag()

◆ getTotal()

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

Get the total value the fields characters added together.

Definition at line 172 of file Field.h.

173 {
174 calculate();
175 return m_metrics.getCheckSum();
176 }

References calculate(), and m_metrics.

◆ no_metrics()

field_metrics FIX::FieldBase::no_metrics ( )
inlinestaticprivate

Definition at line 207 of file Field.h.

208 {
209 return field_metrics( 0, 0 );
210 }

Referenced by FieldBase(), 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.

180 { return m_tag < field.m_tag; }

References FieldBase(), and m_tag.

◆ operator=()

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

Definition at line 105 of file Field.h.

106 {
107 m_tag = rhs.getTag();
108 m_string = rhs.m_string;
109 m_metrics = rhs.m_metrics;
110 m_data.clear();
111
112 return *this;
113 }

References FieldBase(), 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.

132 {
133 setTag( field );
134 }
void setTag(int tag)
Definition Field.h:123

References setTag().

◆ setString()

◆ setTag()

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

Definition at line 123 of file Field.h.

124 {
125 m_tag = tag;
127 m_data.clear();
128 }

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.

116 {
117 std::swap( m_tag, rhs.m_tag );
118 std::swap( m_metrics, rhs.m_metrics );
119 m_string.swap( rhs.m_string );
120 m_data.swap( rhs.m_data );
121 }

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

Referenced by FIX::swap().

◆ Message

friend class Message
friend

Definition at line 77 of file Field.h.

References Message.

Referenced by Message.

Member Data Documentation

◆ m_data

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

Definition at line 237 of file Field.h.

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

◆ m_metrics

field_metrics FIX::FieldBase::m_metrics
mutableprivate

◆ m_string

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

Definition at line 236 of file Field.h.

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

◆ m_tag

int FIX::FieldBase::m_tag
private

Definition at line 235 of file Field.h.

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


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

Generated on for QuickFIX by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2001