ConfigFile.h

Go to the documentation of this file.
00001 // Contents: Definition of ConfigFile class
00002 //
00003 // Principal Author:   Alexei Miasnikov
00004 // Copyright (C) 2005
00005 //
00006 // Status: in progress
00007 //
00008 // Revision History:
00009 //
00010 
00011 
00012 #ifndef _WSET_CONFIG_H_
00013 #define _WSET_CONFIG_H_
00014 
00015 #include <string.h>
00016 #include <sstream>
00017 #include <iostream>
00018 #include <map>
00019 #include <stdlib.h>
00020 
00021 using namespace std;
00022 
00024 struct ltstr
00025 {
00026   bool operator()(const string& s1, const string& s2) const
00027   {
00028     return strcmp(s1.c_str(), s2.c_str()) < 0;
00029   }
00030 };
00031 
00032 
00034 
00038 class Value
00039 {
00040 public:
00042   Value() {}
00044 
00047   Value( const char* v) : theValue(v) { }       
00049 
00052   Value( int n ) {
00053     stringstream s;
00054     s << n << '\0' << flush;
00055     theValue = string(s.str());
00056   }
00057   
00059 
00062   operator int( ) const { return atoi(theValue.c_str()); }
00064 
00067   operator double( ) const { return atof(theValue.c_str()); }
00069 
00072   operator string( ) const { return theValue; }
00074   friend istream& operator >> (istream& in, Value& v){
00075     in >> v.theValue;
00076     return in;
00077   }
00078   
00079 private:
00080   string theValue;
00081 };
00082 
00083 
00085 typedef map<string, Value, ltstr> ParameterType;
00086 
00087 
00088 //------------------------------ ConfigFile ----------------------------------//
00089 
00090 
00092 
00111 class ConfigFile
00112 {
00113   
00114 public:
00115   
00117   //                                                                     //
00118   // Constructors:                                                       //
00119   //                                                                     //
00121   
00123   ConfigFile();
00125 
00130   ConfigFile(const string& f_name);
00131   
00132   // copy constructor supplied by compiler.
00133   // destructor supplied by compiler.
00134   
00135   
00137   //                                                                     //
00138   // Accessors/Modifiers:                                                          //
00139   //                                                                     //
00141   
00143 
00150   void setVariable( const char* p_name, const Value& p_value );
00151   // used by readFrom() to set variables
00152   
00153   
00155 
00164   const Value& getValue(const char* p_name);
00165   // returns value of the parameter
00166 
00168   //                                                                     //
00169   // OI:                                                                 //
00170   //                                                                     //
00172   
00173   // assignment operator supplied by compiler
00174 
00176 
00179   friend ostream& operator << ( ostream& ostr, const ConfigFile& C )
00180   {
00181     C.printOn(ostr);
00182     return ostr;
00183   }
00184     
00185 
00186 private:
00187 
00189   //                                                                     //
00190   // Private functions:                                                  //
00191   //                                                                     //
00193 
00194   void readFrom( istream& istr );
00195 
00196   void printOn( ostream& ostr ) const;
00197 
00198   void rtrim(char* ch);
00199   void ltrim(char* ch);
00200   void trim(char* ch);
00201 
00203   //                                                                     //
00204   // Data members:                                                       //
00205   //                                                                     //
00207 
00208   ParameterType parameters;
00209 
00210   
00211 };
00212 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Mon Sep 26 18:43:45 2011 for CRyptography And Groups (CRAG) by  doxygen 1.6.1