00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef BESKeys_h_
00034 #define BESKeys_h_ 1
00035
00036 #include <fstream>
00037 #include <map>
00038 #include <vector>
00039 #include <string>
00040
00041 using std::string ;
00042 using std::map ;
00043 using std::vector ;
00044 using std::ifstream ;
00045
00046 #include "BESObj.h"
00047
00084 class BESKeys : public BESObj
00085 {
00086 private:
00087 ifstream * _keys_file ;
00088 string _keys_file_name ;
00089 map<string,vector<string> > *_the_keys ;
00090 bool _own_keys ;
00091
00092 static vector<string> KeyList ;
00093 static bool LoadedKeys( const string &key_file ) ;
00094
00095 void clean() ;
00096 void initialize_keys() ;
00097 void load_keys() ;
00098 bool break_pair( const char* b,
00099 string& key,
00100 string &value,
00101 bool &addto ) ;
00102 bool only_blanks( const char *line ) ;
00103 void load_include_files( const string &files ) ;
00104 void load_include_file( const string &file ) ;
00105 BESKeys() {}
00106 BESKeys( const string &keys_file_name,
00107 map<string,vector<string> > *keys ) ;
00108 protected:
00109 BESKeys( const string &keys_file_name ) ;
00110 public:
00111 ~BESKeys() ;
00112
00113 string keys_file_name() { return _keys_file_name ; }
00114
00115 void set_key( const string &key, const string &val,
00116 bool addto = false ) ;
00117 void set_key( const string &pair ) ;
00118 void get_value( const string& s, string &val,
00119 bool &found ) ;
00120 void get_values( const string& s, vector<string> &vals,
00121 bool &found ) ;
00122
00123 typedef map< string, vector< string > >::const_iterator Keys_citer ;
00124 Keys_citer keys_begin() { return _the_keys->begin() ; }
00125 Keys_citer keys_end() { return _the_keys->end() ; }
00126
00127 virtual void dump( ostream &strm ) const ;
00128 };
00129
00130 #endif // BESKeys_h_
00131