00001 00008 #ifndef _Q_OPTIONS_H_ 00009 #define _Q_OPTIONS_H_ 00010 00011 #include <string> 00012 #include <map> 00013 #include <fstream> 00014 00015 #include "QCuore.hh" 00016 #include "QVdt.hh" 00017 00018 class QOptions { 00019 00020 public: 00021 static QOptions& GetInstance(); 00022 00023 void Init(int argc, char * const argv[]); 00024 00025 void Dump(std::ostream&); 00026 00027 virtual ~QOptions() {} 00028 00029 std::string GetName() const {return "QOptions";} 00030 00031 private: 00032 QOptions(); 00033 00034 void Help(const char* exe); 00035 00036 std::map<std::string,QVdt*> GetModuleParameters(const std::string& seq, const std::string& mod, size_t occ); 00037 00038 public: 00039 const QVdt& GetParameter(const std::string& seq, const std::string& mod, size_t occ, const std::string& par); 00040 const QVdt& GetParameter(const std::string& n); 00041 00042 double GetDouble(const std::string& seq, const std::string& mod,size_t occ, const std::string& par); 00043 double GetDouble(const std::string&); 00044 00045 int GetInt(const std::string& seq, const std::string& mod,size_t occ, const std::string& par); 00046 int GetInt(const std::string&); 00047 00048 bool GetBool(const std::string& seq, const std::string& mod,size_t occ, const std::string& par); 00049 bool GetBool(const std::string&); 00050 00051 const std::string& GetString(const std::string& seq, const std::string& mod,size_t occ, const std::string& par); 00052 const std::string& GetString(const std::string&); 00053 00054 private: 00055 void SetParameter(const std::string& n, const QVdt& value); 00056 00057 void SetParameter(const std::string& seq, const std::string& mod, size_t occ, const std::string& par, const QVdt& p); 00058 00059 void SetFirstSequence(const std::string& n) { fFirstSequenceName = n; } 00060 void SetLastSequence(const std::string& n) { fLastSequenceName = n; } 00061 00062 00064 void ReplaceUserParams(); 00065 00066 std::map< std::string, QVdt > fUserParams; 00067 std::map< std::string, QVdt > fParams; 00068 std::string fFirstSequenceName; 00069 std::string fLastSequenceName; 00070 00071 friend class QBaseModule; 00072 friend class QModuleFactory; 00073 friend class QMessageHandler; 00074 friend class QSequence; 00075 friend class QDriver; 00076 00077 }; 00078 00079 #endif