QCommand.hh
Go to the documentation of this file.00001
00002 #ifndef _QCOMMAND_HH_
00003 #define _QCOMMAND_HH_
00004
00005 #include <string>
00006 #include <map>
00007 #include <list>
00008
00009 #include "QCuore.hh"
00010
00011 class QError;
00012
00022 class QCommand
00023 {
00024 public:
00025
00027 QCommand();
00028
00030 virtual ~QCommand();
00031
00036 bool IsValid() const { return !fHasError; }
00037
00039 const std::map<std::string, std::list<std::string> >& GetAnswerMap() const
00040 { return fAnswerMap; }
00041
00051 virtual void Execute() = 0;
00052
00062 virtual void CheckParams() = 0;
00063
00064 protected:
00065
00067 const std::string& GetModifier() const { return fModifier; }
00068
00070 void SetError (const QError& err);
00071
00081 bool GetBool(const std::string& name, bool& val) const;
00082
00089 bool GetBoolList(const std::string& name, std::list<bool>& values) const;
00090
00100 bool GetInt(const std::string& name, int& val) const;
00101
00108 bool GetIntList(const std::string& name, std::list<int>& values) const;
00109
00119 bool GetDouble(const std::string& name, double& val) const;
00120
00127 bool GetDoubleList(const std::string& name,
00128 std::list<double>& values) const;
00129
00139 bool GetString(const std::string& name, std::string& val) const;
00140
00147 bool GetStringList(const std::string& name,
00148 std::list<std::string>& values) const;
00149
00151 bool IsParamDefined (const std::string& name) const;
00152
00154 const std::map<std::string, std::list<std::string> >& GetParMap() const
00155 { return fParamMap; }
00156
00157
00167 bool AddBoolToAnswer(const std::string& parName, bool val);
00168
00174 bool AddIntToAnswer(const std::string& parName, int val);
00175
00181 bool AddDoubleToAnswer(const std::string& parName, double val);
00182
00188 bool AddStringToAnswer(const std::string& parName,
00189 const std::string& val);
00190
00199 bool AddToAnswer(const std::string& parName,
00200 const std::list<std::string>& values);
00201
00203 bool SetSuccess() { return AddBoolToAnswer("success", true); }
00204
00205 private:
00206
00207 std::string fModifier;
00208 bool fHasError;
00211 std::map <std::string, std::list<std::string> > fParamMap;
00212
00218 std::map <std::string, std::list<std::string> > fAnswerMap;
00219
00221 void Reset();
00222
00224 void SetModifier(const std::string& mod) { fModifier = mod; }
00225
00232 void SetParams(const std::map<std::string, std::list<std::string> >& parMap)
00233 { fParamMap = parMap; }
00234
00235 friend class QBaseCmdParser;
00236 };
00237 #endif