X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fcliparser.h;h=3b0af91f5f852026d148d7342a61bfcce003d582;hp=53eaed84cf26b0131d84e94548d620c37166367a;hb=3244e636b430b415aa76ba1885798d41627f7cfb;hpb=b4226543fdbc7a44288986365e6b598d35144062 diff --git a/src/common/cliparser.h b/src/common/cliparser.h index 53eaed84..3b0af91f 100644 --- a/src/common/cliparser.h +++ b/src/common/cliparser.h @@ -24,43 +24,52 @@ #include #include #include -#include - -class CliParserArg { -public: - enum CliArgType { - CliArgInvalid, - CliArgSwitch, - CliArgOption - }; - typedef CliArgType CliArgTypes; - - inline CliParserArg() {}; - CliParserArg(const CliArgType type, const char _shortName = 0, const QString _help = QString(), const QString _def = QString()); - - CliArgType type; - char shortName; - QString help; - QString def; - QString value; - bool boolValue; -}; -Q_DECLARE_METATYPE(CliParserArg); class CliParser{ public: inline CliParser() {}; CliParser(QStringList arguments); + bool parse(); QString value(const QString &longName); bool isSet(const QString &longName); - void addSwitch(const QString longName, const char shortName = 0, const QString help = QString()); - void addOption(const QString longName, const char shortName = 0, const QString help = QString(), const QString def = QString()); + inline void addSwitch(const QString longName, const char shortName = 0, const QString help = QString()) { + addArgument(CliParserArg::CliArgSwitch, longName, shortName, help); + } + inline void addOption(const QString longName, const char shortName = 0, const QString help = QString(), const QString def = QString()) { + addArgument(CliParserArg::CliArgOption, longName, shortName, help, def); + } void usage(); + private: + struct CliParserArg { + enum CliArgType { + CliArgInvalid, + CliArgSwitch, + CliArgOption + }; + CliParserArg(const CliArgType _type = CliArgInvalid, const char _shortName = 0, const QString _help = QString(), const QString _def = QString()) + : type(_type), + shortName(_shortName), + help(_help), + def(_def), + value(QString()), + boolValue(false) {}; + + CliArgType type; + char shortName; + QString help; + QString def; + QString value; + bool boolValue; + }; + + void addArgument(const CliParserArg::CliArgType type, const QString longName, const char shortName = 0, const QString help = QString(), const QString def = QString()); + bool addLongArg(const CliParserArg::CliArgType type, const QString name, const QString value = QString()); + bool addShortArg(const CliParserArg::CliArgType type, const char shortName, const QString value = QString()); + QString lnameOfShortArg(const char arg); QStringList argsRaw; QHash argsHash; - QHash::iterator> shortHash; }; #endif