QOptions.hh
Go to the documentation of this file.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