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

FIX::Dictionary Class Reference

For storage and retrieval of key/value pairs. More...

#include <Dictionary.h>

List of all members.

Public Types

typedef std::map< std::string,
std::string > 
Data
typedef Data::const_iterator iterator
typedef iterator const_iterator

Public Member Functions

 Dictionary (const std::string &name)
 Dictionary ()
virtual ~Dictionary ()
std::string getName () const
 Get the name of the dictionary.
int size () const
 Return the number of key/value pairs.
std::string getString (const std::string &, bool capitalize=false) const throw ( ConfigError, FieldConvertError )
 Get a value as a string.
long getLong (const std::string &) const throw ( ConfigError, FieldConvertError )
 Get a value as a long.
double getDouble (const std::string &) const throw ( ConfigError, FieldConvertError )
 Get a value as a double.
bool getBool (const std::string &) const throw ( ConfigError, FieldConvertError )
 Get a value as a bool.
int getDay (const std::string &) const throw ( ConfigError, FieldConvertError )
 Get a value as a day of week.
void setString (const std::string &, const std::string &)
 Set a value from a string.
void setLong (const std::string &, long)
 Set a value from a long.
void setDouble (const std::string &, double)
 Set a value from a double.
void setBool (const std::string &, bool)
 Set a value from a bool.
void setDay (const std::string &, int)
 Set a value from a day.
bool has (const std::string &) const
 Check if the dictionary contains a value for key.
void merge (const Dictionary &)
 Merge two dictionaries.
iterator begin () const
iterator end () const

Private Attributes

Data m_data
std::string m_name

Detailed Description

For storage and retrieval of key/value pairs.

Definition at line 36 of file Dictionary.h.


Member Typedef Documentation

Definition at line 45 of file Dictionary.h.

typedef std::map< std::string, std::string > FIX::Dictionary::Data

Definition at line 43 of file Dictionary.h.

typedef Data::const_iterator FIX::Dictionary::iterator

Definition at line 44 of file Dictionary.h.


Constructor & Destructor Documentation

FIX::Dictionary::Dictionary ( const std::string &  name  )  [inline]

Definition at line 39 of file Dictionary.h.

00039 : m_name( name ) {}

FIX::Dictionary::Dictionary (  )  [inline]

Definition at line 40 of file Dictionary.h.

00040 {}

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

Definition at line 41 of file Dictionary.h.

00041 {}


Member Function Documentation

iterator FIX::Dictionary::begin (  )  const [inline]

Definition at line 84 of file Dictionary.h.

References m_data.

00084 { return m_data.begin(); }

iterator FIX::Dictionary::end (  )  const [inline]

Definition at line 85 of file Dictionary.h.

References m_data.

00085 { return m_data.end(); }

bool FIX::Dictionary::getBool ( const std::string &  key  )  const throw ( ConfigError, FieldConvertError )

Get a value as a bool.

Definition at line 85 of file Dictionary.cpp.

References FIX::BoolConvertor::convert(), QF_STACK_POP, QF_STACK_PUSH, and FIX::string_toUpper().

Referenced by FIX::ScreenLogFactory::init(), FIX::ThreadedSocketAcceptor::onConfigure(), and FIX::SocketAcceptor::onConfigure().

00087 { QF_STACK_PUSH(Dictionary::getBool)
00088 
00089   Data::const_iterator i = m_data.find( string_toUpper(key) );
00090   if ( i == m_data.end() ) throw ConfigError( key + " not defined" );
00091   try
00092   {
00093     return BoolConvertor::convert( i->second );
00094   }
00095   catch ( FieldConvertError& )
00096   {
00097     throw ConfigError( "Illegal value " + i->second + " for " + key );
00098   }
00099 
00100   QF_STACK_POP
00101 }

int FIX::Dictionary::getDay ( const std::string &  key  )  const throw ( ConfigError, FieldConvertError )

Get a value as a day of week.

Definition at line 103 of file Dictionary.cpp.

References QF_STACK_POP, QF_STACK_PUSH, and FIX::string_toUpper().

00105 { QF_STACK_PUSH(Dictionary::getDay)
00106 
00107   Data::const_iterator i = m_data.find( string_toUpper(key) );
00108   if ( i == m_data.end() ) throw ConfigError( key + " not defined" );
00109   try
00110   {
00111     std::string value = i->second;
00112     if( value.size() < 2 ) throw FieldConvertError(0);
00113     std::string abbr = value.substr(0, 2);
00114     std::transform( abbr.begin(), abbr.end(), abbr.begin(), tolower );
00115     if( abbr == "su" ) return 1;
00116     if( abbr == "mo" ) return 2;
00117     if( abbr == "tu" ) return 3;
00118     if( abbr == "we" ) return 4;
00119     if( abbr == "th" ) return 5;
00120     if( abbr == "fr" ) return 6;
00121     if( abbr == "sa" ) return 7;
00122     if( value.size() < 2 ) throw FieldConvertError(0);
00123   }
00124   catch ( FieldConvertError& )
00125   {
00126     throw ConfigError( "Illegal value " + i->second + " for " + key );
00127   }
00128   return -1;
00129 
00130   QF_STACK_POP
00131 }

double FIX::Dictionary::getDouble ( const std::string &  key  )  const throw ( ConfigError, FieldConvertError )

Get a value as a double.

Definition at line 67 of file Dictionary.cpp.

References FIX::DoubleConvertor::convert(), QF_STACK_POP, QF_STACK_PUSH, and FIX::string_toUpper().

00069 { QF_STACK_PUSH(Dictionary::getDouble)
00070 
00071   Data::const_iterator i = m_data.find( string_toUpper(key) );
00072   if ( i == m_data.end() ) throw ConfigError( key + " not defined" );
00073   try
00074   {
00075     return DoubleConvertor::convert( i->second );
00076   }
00077   catch ( FieldConvertError& )
00078   {
00079     throw ConfigError( "Illegal value " + i->second + " for " + key );
00080   }
00081 
00082   QF_STACK_POP
00083 }

long FIX::Dictionary::getLong ( const std::string &  key  )  const throw ( ConfigError, FieldConvertError )

Get a value as a long.

Definition at line 49 of file Dictionary.cpp.

References FIX::IntConvertor::convert(), QF_STACK_POP, QF_STACK_PUSH, and FIX::string_toUpper().

Referenced by FIX::ThreadedSocketInitiator::getHost(), FIX::SocketInitiator::getHost(), FIX::ThreadedSocketAcceptor::onConfigure(), FIX::SocketAcceptor::onConfigure(), FIX::ThreadedSocketAcceptor::onInitialize(), and FIX::SocketAcceptor::onInitialize().

00051 { QF_STACK_PUSH(Dictionary::getLong)
00052 
00053   Data::const_iterator i = m_data.find( string_toUpper(key) );
00054   if ( i == m_data.end() ) throw ConfigError( key + " not defined" );
00055   try
00056   {
00057     return IntConvertor::convert( i->second );
00058   }
00059   catch ( FieldConvertError& )
00060   {
00061     throw ConfigError( "Illegal value " + i->second + " for " + key );
00062   }
00063 
00064   QF_STACK_POP
00065 }

std::string FIX::Dictionary::getName (  )  const [inline]

Get the name of the dictionary.

Definition at line 48 of file Dictionary.h.

References m_name.

00048 { return m_name; }

std::string FIX::Dictionary::getString ( const std::string &  key,
bool  capitalize = false 
) const throw ( ConfigError, FieldConvertError )

Get a value as a string.

Definition at line 33 of file Dictionary.cpp.

References QF_STACK_POP, QF_STACK_PUSH, and FIX::string_toUpper().

Referenced by FIX::FileStoreFactory::create(), FIX::FileLogFactory::create(), FIX::ThreadedSocketInitiator::getHost(), FIX::SocketInitiator::getHost(), FIX::Initiator::initialize(), and FIX::Acceptor::initialize().

00035 { QF_STACK_PUSH(Dictionary::getString)
00036 
00037   Data::const_iterator i = m_data.find( string_toUpper(key) );
00038   if ( i == m_data.end() ) throw ConfigError( key + " not defined" );
00039 
00040   std::string result = i->second;
00041   if( capitalize )
00042      std::transform(result.begin(), result.end(), result.begin(), toupper);
00043 
00044   return result;
00045 
00046   QF_STACK_POP
00047 }

bool FIX::Dictionary::has ( const std::string &  key  )  const
void FIX::Dictionary::merge ( const Dictionary toMerge  ) 

Merge two dictionaries.

Definition at line 187 of file Dictionary.cpp.

References m_data, QF_STACK_POP, and QF_STACK_PUSH.

00188 { QF_STACK_PUSH(Dictionary::merge)
00189 
00190   Data::const_iterator i = toMerge.m_data.begin();
00191   for ( ; i != toMerge.m_data.end(); ++i )
00192     if ( m_data.find( i->first ) == m_data.end() )
00193       m_data[ i->first ] = i->second;
00194 
00195   QF_STACK_POP
00196 }

void FIX::Dictionary::setBool ( const std::string &  key,
bool  value 
)

Set a value from a bool.

Definition at line 151 of file Dictionary.cpp.

References FIX::BoolConvertor::convert(), m_data, QF_STACK_POP, QF_STACK_PUSH, FIX::string_strip(), and FIX::string_toUpper().

00152 { QF_STACK_PUSH(Dictionary::setBool)
00153   m_data[ string_strip(string_toUpper(key)) ] = BoolConvertor::convert( value );
00154   QF_STACK_POP
00155 }

void FIX::Dictionary::setDay ( const std::string &  key,
int  value 
)

Set a value from a day.

Definition at line 157 of file Dictionary.cpp.

References QF_STACK_POP, QF_STACK_PUSH, and setString().

00158 { QF_STACK_PUSH(Dictionary::setDay)
00159   
00160     switch( value )
00161     {
00162     case 1:
00163       setString( key, "SU" ); break;
00164     case 2:
00165       setString( key, "MO" ); break;
00166     case 3:
00167       setString( key, "TU" ); break;
00168     case 4:
00169       setString( key, "WE" ); break;
00170     case 5:
00171       setString( key, "TH" ); break;
00172     case 6:
00173       setString( key, "FR" ); break;
00174     case 7:
00175       setString( key, "SA" ); break;
00176     }
00177 
00178   QF_STACK_POP
00179 }

void FIX::Dictionary::setDouble ( const std::string &  key,
double  value 
)

Set a value from a double.

Definition at line 145 of file Dictionary.cpp.

References FIX::DoubleConvertor::convert(), m_data, QF_STACK_POP, QF_STACK_PUSH, FIX::string_strip(), and FIX::string_toUpper().

00146 { QF_STACK_PUSH(Dictionary::setDouble)
00147   m_data[ string_strip(string_toUpper(key)) ] = DoubleConvertor::convert( value );
00148   QF_STACK_POP
00149 }

void FIX::Dictionary::setLong ( const std::string &  key,
long  value 
)

Set a value from a long.

Definition at line 139 of file Dictionary.cpp.

References FIX::IntConvertor::convert(), m_data, QF_STACK_POP, QF_STACK_PUSH, setString(), FIX::string_strip(), and FIX::string_toUpper().

00140 { QF_STACK_PUSH(Dictionary::setString)
00141   m_data[ string_strip(string_toUpper(key)) ] = IntConvertor::convert( value );
00142   QF_STACK_POP
00143 }

void FIX::Dictionary::setString ( const std::string &  key,
const std::string &  value 
)

Set a value from a string.

Definition at line 133 of file Dictionary.cpp.

References m_data, QF_STACK_POP, QF_STACK_PUSH, FIX::string_strip(), and FIX::string_toUpper().

Referenced by setDay(), and setLong().

int FIX::Dictionary::size (  )  const [inline]

Return the number of key/value pairs.

Definition at line 50 of file Dictionary.h.

References m_data.

00050 { return m_data.size(); }


Member Data Documentation

Definition at line 88 of file Dictionary.h.

Referenced by begin(), end(), has(), merge(), setBool(), setDouble(), setLong(), setString(), and size().

std::string FIX::Dictionary::m_name [private]

Definition at line 89 of file Dictionary.h.

Referenced by getName().


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

Generated on Mon Apr 5 20:59:58 2010 for QuickFIX by doxygen 1.6.1 written by Dimitri van Heesch, © 1997-2001