Added parsing, usage() generation and removed debugging.
[quassel.git] / src / common / cliparser.h
index 6872f77..00f22b9 100644 (file)
 #include <QHash>
 #include <QVariant>
 
 #include <QHash>
 #include <QVariant>
 
-class CliParserArg;
-
-class CliParser{
-public:
-    inline CliParser() {};
-    CliParser(int argc, char *argv[]);
-
-    ~CliParser();
-    bool parse();
-    QVariant value(QString key);
-    void addArgument(QString longName, char shortName, QVariant def);
-private:
-  QStringList argsRaw;
-  QHash<QString, QVariant*> savedValues;
-  QHash<QString, CliParserArg> argsHash;
-  QHash<QString, QHash<QString, CliParserArg>::iterator> shortHash;
-};
-
 class CliParserArg {
 public:
 class CliParserArg {
 public:
+  enum CliArgType {
+    CliArgInvalid,
+    CliArgSwitch,
+    CliArgOption
+  };
+  typedef CliArgType CliArgTypes;
+  
   inline CliParserArg() {};
   CliParserArg(const CliParserArg &other);
   inline CliParserArg() {};
   CliParserArg(const CliParserArg &other);
-  CliParserArg(QString longName, char shortName, QVariant _def);
+  CliParserArg(CliArgType type, QString longName, char shortName = 0, QVariant _def = QVariant());
   CliParserArg &operator=(const CliParserArg &other);
   CliParserArg &operator=(const CliParserArg &other);
-// private:
+
+  CliArgType type;
   QString lname;
   char sname;
   QString lname;
   char sname;
+  QString shortHelp;
   QVariant def;
   QVariant value;
 };
 Q_DECLARE_METATYPE(CliParserArg);
 
   QVariant def;
   QVariant value;
 };
 Q_DECLARE_METATYPE(CliParserArg);
 
+class CliParser{
+public:
+  inline CliParser() {};
+  CliParser(QStringList arguments);
+  bool parse();
+  QVariant value(QString key);
+  void addSwitch(QString longName, char shortName = 0, QVariant def = false);
+  void addOption(QString longName, char shortName = 0, QVariant def = QVariant());
+  void addHelp(QString key, QString txt);
+  void usage();
+private:
+  void addArgument(CliParserArg::CliArgType type, QString longName, char shortName, QVariant def);
+  QStringList argsRaw;
+  QHash<QString, CliParserArg> argsHash;
+  QHash<const char, QHash<QString, CliParserArg>::iterator> shortHash;
+};
+
+
 #endif
 #endif