![]() |
![]() |
|
Index
Source Files
Annotated Class List
Alphabetical Class List
Class Hierarchy
Graphical Class Hierarchy
|
||
![]() |
![]() |
#include <DataDictionary.h>
Public Member Functions | |
| DataDictionary () | |
| DataDictionary (const DataDictionary ©) | |
| DataDictionary (std::istream &stream) throw ( ConfigError ) | |
| DataDictionary (const std::string &url) throw ( ConfigError ) | |
| virtual | ~DataDictionary () |
| void | readFromURL (const std::string &url) throw ( ConfigError ) |
| void | readFromDocument (DOMDocumentPtr pDoc) throw ( ConfigError ) |
| void | readFromStream (std::istream &stream) throw ( ConfigError ) |
| int * | getOrderedFields () const |
| void | setVersion (const std::string &beginString) |
| std::string | getVersion () const |
| void | addField (int field) |
| void | addFieldName (int field, const std::string &name) |
| bool | getFieldName (int field, std::string &name) const |
| bool | getFieldTag (std::string name, int &field) const |
| void | addValueName (int field, const std::string &value, const std::string &name) |
| bool | getValueName (int field, const std::string &value, std::string &name) const |
| bool | isField (int field) const |
| void | addMsgType (const std::string &msgType) |
| bool | isMsgType (const std::string &msgType) const |
| void | addMsgField (const std::string &msgType, int field) |
| bool | isMsgField (const std::string &msgType, int field) const |
| void | addHeaderField (int field, bool required) |
| bool | isHeaderField (int field) const |
| void | addTrailerField (int field, bool required) |
| bool | isTrailerField (int field) const |
| void | addFieldType (int field, TYPE::Type type) |
| bool | getFieldType (int field, TYPE::Type &type) const |
| void | addRequiredField (const std::string &msgType, int field) |
| bool | isRequiredField (const std::string &msgType, int field) const |
| void | addFieldValue (int field, const std::string &value) |
| bool | hasFieldValue (int field) const |
| bool | isFieldValue (int field, const std::string &value) const |
| void | addGroup (const std::string &msg, int field, int delim, const DataDictionary &dataDictionary) |
| bool | isGroup (const std::string &msg, int field) const |
| bool | getGroup (const std::string &msg, int field, int &delim, const DataDictionary *&pDataDictionary) const |
| bool | isDataField (int field) const |
| bool | isMultipleValueStringField (int field) const |
| void | checkFieldsOutOfOrder (bool value) |
| void | checkFieldsHaveValues (bool value) |
| void | checkUserDefinedFields (bool value) |
| void | validate (const Message &message) throw ( std::exception ) |
| Validate a message. | |
| DataDictionary & | operator= (const DataDictionary &rhs) |
Private Types | |
| typedef std::set< int > | MsgFields |
| typedef std::map< std::string, MsgFields > | MsgTypeToField |
| typedef std::set< std::string > | MsgTypes |
| typedef std::set< int > | Fields |
| typedef std::map< int, bool > | NonBodyFields |
| typedef std::vector< int > | OrderedFields |
| typedef int * | OrderedFieldsArray |
| typedef std::map< int, TYPE::Type > | FieldTypes |
| typedef std::set< std::string > | Values |
| typedef std::map< int, Values > | FieldToValue |
| typedef std::map< int, std::string > | FieldToName |
| typedef std::map< std::string, int > | NameToField |
| typedef std::map< std::pair< int, std::string >, std::string > | ValueToName |
| typedef std::map< std::pair< std::string, int >, std::pair< int, DataDictionary * > > | FieldToGroup |
Private Member Functions | |
| void | iterate (const FieldMap &map, const MsgType &msgType) |
| Iterate through fields while applying checks. | |
| void | checkMsgType (const MsgType &msgType) const |
| Check if message type is defined in spec. | |
| bool | shouldCheckTag (const FieldBase &field) const |
| If we need to check for the tag in the dictionary. | |
| void | checkValidTagNumber (const FieldBase &field) const throw ( InvalidTagNumber ) |
| Check if field tag number is defined in spec. | |
| void | checkValidFormat (const FieldBase &field) const throw ( IncorrectDataFormat ) |
| void | checkValue (const FieldBase &field) const throw ( IncorrectTagValue ) |
| void | checkHasValue (const FieldBase &field) const throw ( NoTagValue ) |
| Check if a field has a value. | |
| void | checkIsInMessage (const FieldBase &field, const MsgType &msgType) const throw ( TagNotDefinedForMessage ) |
| Check if a field is in this message type. | |
| void | checkGroupCount (const FieldBase &field, const FieldMap &fieldMap, const MsgType &msgType) const throw ( RepeatingGroupCountMismatch ) |
| Check if group count matches number of groups in. | |
| void | checkHasRequired (const FieldMap &header, const FieldMap &body, const FieldMap &trailer, const MsgType &msgType) const throw ( RequiredTagMissing ) |
| Check if a message has all required fields. | |
| void | readMSXMLDOM (const std::string &) |
| Read XML file using MSXML. | |
| void | readMSXML (const std::string &) |
| void | readLibXml (const std::string &) |
| Read XML file using libXML. | |
| int | lookupXMLFieldNumber (DOMDocument *, DOMNode *) const |
| int | lookupXMLFieldNumber (DOMDocument *, const std::string &name) const |
| int | addXMLComponentFields (DOMDocument *, DOMNode *, const std::string &msgtype, DataDictionary &, bool) |
| void | addXMLGroup (DOMDocument *, DOMNode *, const std::string &msgtype, DataDictionary &, bool) |
| TYPE::Type | XMLTypeToType (const std::string &xmlType) const |
Private Attributes | |
| bool | m_hasVersion |
| bool | m_checkFieldsOutOfOrder |
| bool | m_checkFieldsHaveValues |
| bool | m_checkUserDefinedFields |
| BeginString | m_beginString |
| MsgTypeToField | m_messageFields |
| MsgTypeToField | m_requiredFields |
| MsgTypes | m_messages |
| Fields | m_fields |
| OrderedFields | m_orderedFields |
| OrderedFieldsArray | m_orderedFieldsArray |
| NonBodyFields | m_headerFields |
| NonBodyFields | m_trailerFields |
| FieldTypes | m_fieldTypes |
| FieldToValue | m_fieldValues |
| FieldToName | m_fieldNames |
| NameToField | m_names |
| ValueToName | m_valueNames |
| FieldToGroup | m_groups |
Generally loaded from an XML document. The DataDictionary is also responsible for validation beyond the basic structure of a message.
Definition at line 49 of file DataDictionary.h.
|
|
Definition at line 54 of file DataDictionary.h. |
|
|
Definition at line 66 of file DataDictionary.h. |
|
|
Definition at line 61 of file DataDictionary.h. |
|
|
Definition at line 60 of file DataDictionary.h. |
|
|
Definition at line 58 of file DataDictionary.h. |
|
|
Definition at line 51 of file DataDictionary.h. Referenced by checkHasRequired(). |
|
|
Definition at line 53 of file DataDictionary.h. |
|
|
Definition at line 52 of file DataDictionary.h. |
|
|
Definition at line 62 of file DataDictionary.h. |
|
|
Definition at line 55 of file DataDictionary.h. |
|
|
Definition at line 56 of file DataDictionary.h. |
|
|
Definition at line 57 of file DataDictionary.h. |
|
|
Definition at line 59 of file DataDictionary.h. |
|
|
Definition at line 64 of file DataDictionary.h. |
|
|
Definition at line 48 of file DataDictionary.cpp.
00049 : m_hasVersion( false ), m_checkFieldsOutOfOrder( true ), 00050 m_checkFieldsHaveValues( true ), m_checkUserDefinedFields( true ), 00051 m_orderedFieldsArray(0) {} |
|
|
Definition at line 71 of file DataDictionary.cpp.
00072 {
00073 *this = copy;
00074 }
|
|
|
Definition at line 53 of file DataDictionary.cpp.
00055 : m_hasVersion( false ), m_checkFieldsOutOfOrder( true ), 00056 m_checkFieldsHaveValues( true ), m_checkUserDefinedFields( true ), 00057 m_orderedFieldsArray(0) 00058 { 00059 readFromStream( stream ); 00060 } |
|
|
Definition at line 62 of file DataDictionary.cpp.
00064 : m_hasVersion( false ), m_checkFieldsOutOfOrder( true ), 00065 m_checkFieldsHaveValues( true ), m_checkUserDefinedFields( true ), 00066 m_orderedFieldsArray(0) 00067 { 00068 readFromURL( url ); 00069 } |
|
|
Definition at line 76 of file DataDictionary.cpp. References m_groups, and m_orderedFieldsArray.
00077 {
00078 FieldToGroup::iterator i;
00079 for ( i = m_groups.begin(); i != m_groups.end(); ++i )
00080 delete i->second.second;
00081 if( m_orderedFieldsArray )
00082 delete [] m_orderedFieldsArray;
00083 }
|
|
|
Definition at line 92 of file DataDictionary.h. References m_fields, and m_orderedFields. Referenced by addXMLComponentFields(), and addXMLGroup().
00093 {
00094 m_fields.insert( field );
00095 m_orderedFields.push_back( field );
00096 }
|
|
||||||||||||
|
Definition at line 98 of file DataDictionary.h. References m_fieldNames, and m_names.
00099 {
00100 if( m_names.insert( std::make_pair(name, field) ).second == false )
00101 throw ConfigError( "Field named " + name + " defined multiple times" );
00102 m_fieldNames[field] = name;
00103 }
|
|
||||||||||||
|
Definition at line 181 of file DataDictionary.h. References m_fieldTypes.
00182 {
00183 m_fieldTypes[ field ] = type;
00184 }
|
|
||||||||||||
|
Definition at line 206 of file DataDictionary.h. References m_fieldValues.
00207 {
00208 m_fieldValues[ field ].insert( value );
00209 }
|
|
||||||||||||||||||||
|
Definition at line 240 of file DataDictionary.h. References getVersion(), m_groups, and setVersion(). Referenced by addXMLGroup(), and operator=().
00242 {
00243 DataDictionary * pDD = new DataDictionary;
00244 *pDD = dataDictionary;
00245 pDD->setVersion( getVersion() );
00246 m_groups[ std::make_pair( msg, field ) ] = std::make_pair( delim, pDD );
00247 }
|
|
||||||||||||
|
Definition at line 161 of file DataDictionary.h. References m_headerFields.
00162 {
00163 m_headerFields[ field ] = required;
00164 }
|
|
||||||||||||
|
Definition at line 149 of file DataDictionary.h. References m_messageFields. Referenced by addXMLComponentFields().
00150 {
00151 m_messageFields[ msgType ].insert( field );
00152 }
|
|
|
Definition at line 139 of file DataDictionary.h. References m_messages.
00140 {
00141 m_messages.insert( msgType );
00142 }
|
|
||||||||||||
|
Definition at line 194 of file DataDictionary.h. References m_requiredFields. Referenced by addXMLComponentFields(), and addXMLGroup().
00195 {
00196 m_requiredFields[ msgType ].insert( field );
00197 }
|
|
||||||||||||
|
Definition at line 171 of file DataDictionary.h. References m_trailerFields.
00172 {
00173 m_trailerFields[ field ] = required;
00174 }
|
|
||||||||||||||||
|
Definition at line 121 of file DataDictionary.h. References m_valueNames.
00122 {
00123 m_valueNames[std::make_pair(field, value)] = name;
00124 }
|
|
||||||||||||||||||||||||
|
Definition at line 469 of file DataDictionary.cpp. References addField(), addMsgField(), addRequiredField(), addXMLGroup(), FIX::DOMAttributesPtr, FIX::DOMNodePtr, FIX::DOMNode::getAttributes(), FIX::DOMDocument::getNode(), lookupXMLFieldNumber(), QF_STACK_POP, QF_STACK_PUSH, and RESET_AUTO_PTR. Referenced by addXMLGroup().
00473 { QF_STACK_PUSH(DataDictionary::addXMLComponentFields)
00474
00475 int firstField = 0;
00476
00477 DOMAttributesPtr attrs = pNode->getAttributes();
00478 std::string name;
00479 if(!attrs->get("name", name))
00480 throw ConfigError("No name given to component");
00481
00482 DOMNodePtr pComponentNode =
00483 pDoc->getNode("/fix/components/component[@name='" + name + "']");
00484 if(pComponentNode.get() == 0)
00485 throw ConfigError("Component not found");
00486
00487 DOMNodePtr pComponentFieldNode = pComponentNode->getFirstChildNode();
00488 while(pComponentFieldNode.get())
00489 {
00490 if(pComponentFieldNode->getName() == "field"
00491 || pComponentFieldNode->getName() == "group")
00492 {
00493 DOMAttributesPtr attrs = pComponentFieldNode->getAttributes();
00494 std::string name;
00495 if(!attrs->get("name", name))
00496 throw ConfigError("No name given to field");
00497 int field = lookupXMLFieldNumber(pDoc, name);
00498 if( firstField == 0 ) firstField = field;
00499
00500 std::string required;
00501 if(attrs->get("required", required)
00502 && (required == "Y" || required =="y")
00503 && componentRequired)
00504 {
00505 addRequiredField(msgtype, field);
00506 }
00507
00508 DD.addField(field);
00509 DD.addMsgField(msgtype, field);
00510 }
00511 if(pComponentFieldNode->getName() == "group")
00512 {
00513 DOMAttributesPtr attrs = pComponentFieldNode->getAttributes();
00514 std::string required;
00515 attrs->get("required", required);
00516 bool isRequired = (required == "Y" || required == "y");
00517 addXMLGroup(pDoc, pComponentFieldNode.get(), msgtype, DD, isRequired);
00518 }
00519 RESET_AUTO_PTR(pComponentFieldNode,
00520 pComponentFieldNode->getNextSiblingNode());
00521 }
00522 return firstField;
00523
00524 QF_STACK_POP
00525 }
|
|
||||||||||||||||||||||||
|
Definition at line 527 of file DataDictionary.cpp. References addField(), addGroup(), addRequiredField(), addXMLComponentFields(), FIX::DOMAttributesPtr, FIX::DOMNodePtr, FIX::DOMNode::getAttributes(), FIX::DOMNode::getFirstChildNode(), lookupXMLFieldNumber(), QF_STACK_POP, QF_STACK_PUSH, and RESET_AUTO_PTR. Referenced by addXMLComponentFields().
00530 { QF_STACK_PUSH(DataDictionary::addXMLGroup)
00531
00532 DOMAttributesPtr attrs = pNode->getAttributes();
00533 std::string name;
00534 if(!attrs->get("name", name))
00535 throw ConfigError("No name given to group");
00536 int group = lookupXMLFieldNumber( pDoc, name );
00537 int delim = 0;
00538 int field = 0;
00539 DataDictionary groupDD;
00540 DOMNodePtr node = pNode->getFirstChildNode();
00541 while(node.get())
00542 {
00543 if( node->getName() == "field" )
00544 {
00545 field = lookupXMLFieldNumber( pDoc, node.get() );
00546 groupDD.addField( field );
00547
00548 DOMAttributesPtr attrs = node->getAttributes();
00549 std::string required;
00550 if( attrs->get("required", required)
00551 && ( required == "Y" || required =="y" )
00552 && groupRequired )
00553 {
00554 groupDD.addRequiredField(msgtype, field);
00555 }
00556 }
00557 else if( node->getName() == "component" )
00558 {
00559 field = addXMLComponentFields( pDoc, node.get(), msgtype, groupDD, false );
00560 }
00561 else if( node->getName() == "group" )
00562 {
00563 field = lookupXMLFieldNumber( pDoc, node.get() );
00564 groupDD.addField( field );
00565 DOMAttributesPtr attrs = node->getAttributes();
00566 std::string required;
00567 if( attrs->get("required", required )
00568 && ( required == "Y" || required =="y" )
00569 && groupRequired)
00570 {
00571 groupDD.addRequiredField(msgtype, field);
00572 }
00573 bool isRequired = false;
00574 if( attrs->get("required", required) )
00575 isRequired = (required == "Y" || required == "y");
00576 addXMLGroup( pDoc, node.get(), msgtype, groupDD, isRequired );
00577 }
00578 if( delim == 0 ) delim = field;
00579 RESET_AUTO_PTR(node, node->getNextSiblingNode());
00580 }
00581
00582 if( delim ) DD.addGroup( msgtype, group, delim, groupDD );
00583
00584 QF_STACK_POP
00585 }
|
|
|
Definition at line 280 of file DataDictionary.h. References m_checkFieldsHaveValues. Referenced by FIX::SessionFactory::create().
00281 { m_checkFieldsHaveValues = value; }
|
|
|
Definition at line 278 of file DataDictionary.h. References m_checkFieldsOutOfOrder. Referenced by FIX::SessionFactory::create().
00279 { m_checkFieldsOutOfOrder = value; }
|
|
||||||||||||||||
|
Check if group count matches number of groups in.
Definition at line 410 of file DataDictionary.h. References isGroup(). Referenced by iterate().
00412 {
00413 int fieldNum = field.getField();
00414 if( isGroup(msgType, fieldNum) )
00415 {
00416 if( fieldMap.groupCount(fieldNum)
00417 != IntConvertor::convert(field.getString()) )
00418 throw RepeatingGroupCountMismatch(fieldNum);
00419 }
00420 }
|
|
||||||||||||||||||||
|
Check if a message has all required fields.
Definition at line 424 of file DataDictionary.h. References FIX::FieldMap::g_iterator, getGroup(), m_headerFields, m_requiredFields, m_trailerFields, and MsgFields.
00427 {
00428 NonBodyFields::const_iterator iNBF;
00429 for( iNBF = m_headerFields.begin(); iNBF != m_headerFields.end(); ++iNBF )
00430 {
00431 if( iNBF->second == true && !header.isSetField(iNBF->first) )
00432 throw RequiredTagMissing( iNBF->first );
00433 }
00434
00435 for( iNBF = m_trailerFields.begin(); iNBF != m_trailerFields.end(); ++iNBF )
00436 {
00437 if( iNBF->second == true && !trailer.isSetField(iNBF->first) )
00438 throw RequiredTagMissing( iNBF->first );
00439 }
00440
00441 MsgTypeToField::const_iterator iM
00442 = m_requiredFields.find( msgType.getValue() );
00443 if ( iM == m_requiredFields.end() ) return ;
00444
00445 const MsgFields& fields = iM->second;
00446 MsgFields::const_iterator iF;
00447 for( iF = fields.begin(); iF != fields.end(); ++iF )
00448 {
00449 if( !body.isSetField(*iF) )
00450 throw RequiredTagMissing( *iF );
00451 }
00452
00453 FieldMap::g_iterator groups;
00454 for( groups = body.g_begin(); groups != body.g_end(); ++groups )
00455 {
00456 int delim;
00457 const DataDictionary* DD = 0;
00458 int field = groups->first;
00459 if( getGroup( msgType.getValue(), field, delim, DD ) )
00460 {
00461 std::vector<FieldMap*>::const_iterator group;
00462 for( group = groups->second.begin(); group != groups->second.end(); ++group )
00463 DD->checkHasRequired( **group, **group, **group, msgType );
00464 }
00465 }
00466 }
|
|
|
Check if a field has a value.
Definition at line 392 of file DataDictionary.h. References m_checkFieldsHaveValues. Referenced by iterate().
00394 {
00395 if ( m_checkFieldsHaveValues && !field.getString().length() )
00396 throw NoTagValue( field.getField() );
00397 }
|
|
||||||||||||
|
Check if a field is in this message type.
Definition at line 401 of file DataDictionary.h. References isMsgField(). Referenced by iterate().
00403 {
00404 if ( !isMsgField( msgType, field.getField() ) )
00405 throw TagNotDefinedForMessage( field.getField() );
00406 }
|
|
|
Check if message type is defined in spec.
Definition at line 294 of file DataDictionary.h. References isMsgType().
00295 {
00296 if ( !isMsgType( msgType.getValue() ) )
00297 throw InvalidMessageType();
00298 }
|
|
|
Definition at line 282 of file DataDictionary.h. References m_checkUserDefinedFields. Referenced by FIX::SessionFactory::create().
00283 { m_checkUserDefinedFields = value; }
|
|
|
Definition at line 317 of file DataDictionary.h. References getFieldType(). Referenced by iterate().
00319 {
00320 try
00321 {
00322 TYPE::Type type = TYPE::Unknown;
00323 getFieldType( field.getField(), type );
00324 switch ( type )
00325 {
00326 case TYPE::String:
00327 STRING_CONVERTOR::convert( field.getString() ); break;
00328 case TYPE::Char:
00329 CHAR_CONVERTOR::convert( field.getString() ); break;
00330 case TYPE::Price:
00331 PRICE_CONVERTOR::convert( field.getString() ); break;
00332 case TYPE::Int:
00333 INT_CONVERTOR::convert( field.getString() ); break;
00334 case TYPE::Amt:
00335 AMT_CONVERTOR::convert( field.getString() ); break;
00336 case TYPE::Qty:
00337 QTY_CONVERTOR::convert( field.getString() ); break;
00338 case TYPE::Currency:
00339 CURRENCY_CONVERTOR::convert( field.getString() ); break;
00340 case TYPE::MultipleValueString:
00341 MULTIPLEVALUESTRING_CONVERTOR::convert( field.getString() ); break;
00342 case TYPE::Exchange:
00343 EXCHANGE_CONVERTOR::convert( field.getString() ); break;
00344 case TYPE::UtcTimeStamp:
00345 UTCTIMESTAMP_CONVERTOR::convert( field.getString() ); break;
00346 case TYPE::Boolean:
00347 BOOLEAN_CONVERTOR::convert( field.getString() ); break;
00348 case TYPE::LocalMktDate:
00349 LOCALMKTDATE_CONVERTOR::convert( field.getString() ); break;
00350 case TYPE::Data:
00351 DATA_CONVERTOR::convert( field.getString() ); break;
00352 case TYPE::Float:
00353 FLOAT_CONVERTOR::convert( field.getString() ); break;
00354 case TYPE::PriceOffset:
00355 PRICEOFFSET_CONVERTOR::convert( field.getString() ); break;
00356 case TYPE::MonthYear:
00357 MONTHYEAR_CONVERTOR::convert( field.getString() ); break;
00358 case TYPE::DayOfMonth:
00359 DAYOFMONTH_CONVERTOR::convert( field.getString() ); break;
00360 case TYPE::UtcDate:
00361 UTCDATE_CONVERTOR::convert( field.getString() ); break;
00362 case TYPE::UtcTimeOnly:
00363 UTCTIMEONLY_CONVERTOR::convert( field.getString() ); break;
00364 case TYPE::NumInGroup:
00365 NUMINGROUP_CONVERTOR::convert( field.getString() ); break;
00366 case TYPE::Percentage:
00367 PERCENTAGE_CONVERTOR::convert( field.getString() ); break;
00368 case TYPE::SeqNum:
00369 SEQNUM_CONVERTOR::convert( field.getString() ); break;
00370 case TYPE::Length:
00371 LENGTH_CONVERTOR::convert( field.getString() ); break;
00372 case TYPE::Country:
00373 COUNTRY_CONVERTOR::convert( field.getString() ); break;
00374 case TYPE::Unknown: break;
00375 }
00376 }
00377 catch ( FieldConvertError& )
00378 { throw IncorrectDataFormat( field.getField() ); }
00379 }
|
|
|
Check if field tag number is defined in spec.
Definition at line 310 of file DataDictionary.h. References m_fields. Referenced by iterate().
|
|
|
Definition at line 381 of file DataDictionary.h. References hasFieldValue(), and isFieldValue(). Referenced by iterate().
00383 {
00384 if ( !hasFieldValue( field.getField() ) ) return ;
00385
00386 const std::string& value = field.getString();
00387 if ( !isFieldValue( field.getField(), value ) )
00388 throw IncorrectTagValue( field.getField() );
00389 }
|
|
||||||||||||
|
Definition at line 105 of file DataDictionary.h. References m_fieldNames.
00106 {
00107 FieldToName::const_iterator i = m_fieldNames.find( field );
00108 if(i == m_fieldNames.end()) return false;
00109 name = i->second;
00110 return true;
00111 }
|
|
||||||||||||
|
Definition at line 113 of file DataDictionary.h. References m_names.
|
|
||||||||||||
|
Definition at line 186 of file DataDictionary.h. References m_fieldTypes. Referenced by checkValidFormat().
00187 {
00188 FieldTypes::const_iterator i = m_fieldTypes.find( field );
00189 if ( i == m_fieldTypes.end() ) return false;
00190 type = i->second;
00191 return true;
00192 }
|
|
||||||||||||||||||||
|
Definition at line 254 of file DataDictionary.h. References m_groups. Referenced by checkHasRequired(), and FIX::Message::setGroup().
|
|
|
Definition at line 430 of file DataDictionary.cpp. References m_orderedFields, m_orderedFieldsArray, QF_STACK_POP, and QF_STACK_PUSH. Referenced by FIX::Message::setGroup().
00431 { QF_STACK_PUSH(DataDictionary::getOrderedFields)
00432
00433 if( m_orderedFieldsArray ) return m_orderedFieldsArray;
00434 m_orderedFieldsArray = new int[m_orderedFields.size() + 1];
00435
00436 int* i = m_orderedFieldsArray;
00437 OrderedFields::const_iterator iter;
00438 for( iter = m_orderedFields.begin(); iter != m_orderedFields.end(); *(i++) = *(iter++) ) {}
00439 *i = 0;
00440 return m_orderedFieldsArray;
00441
00442 QF_STACK_POP
00443 }
|
|
||||||||||||||||
|
Definition at line 126 of file DataDictionary.h. References m_valueNames.
00127 {
00128 ValueToName::const_iterator i = m_valueNames.find( std::make_pair(field, value) );
00129 if(i == m_valueNames.end()) return false;
00130 name = i->second;
00131 return true;
00132 }
|
|
|
Definition at line 87 of file DataDictionary.h. References m_beginString. Referenced by addGroup().
00088 {
00089 return m_beginString;
00090 }
|
|
|
Definition at line 211 of file DataDictionary.h. References m_fieldValues. Referenced by checkValue().
00212 {
00213 FieldToValue::const_iterator i = m_fieldValues.find( field );
00214 return i != m_fieldValues.end();
00215 }
|
|
|
Definition at line 266 of file DataDictionary.h. References m_fieldTypes.
00267 {
00268 FieldTypes::const_iterator i = m_fieldTypes.find( field );
00269 return i != m_fieldTypes.end() && i->second == TYPE::Data;
00270 }
|
|
|
Definition at line 134 of file DataDictionary.h. References m_fields. Referenced by FIX::Message::setGroup().
|
|
||||||||||||
|
Definition at line 217 of file DataDictionary.h. References isMultipleValueStringField(), and m_fieldValues. Referenced by checkValue().
00218 {
00219 FieldToValue::const_iterator i = m_fieldValues.find( field );
00220 if ( i == m_fieldValues.end() )
00221 |