X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fcliparser.h;h=0cdfcaf1a106cc9eb20b8849ef74479ba572d6f9;hp=6872f773a8ef472e0afd8a1e79d75b945467257e;hb=efe20e20080a0c22e1a7b8b84ef622130dbf116e;hpb=81c2e2cf2c12eb6839994f95f47698e5252fc91c diff --git a/src/common/cliparser.h b/src/common/cliparser.h index 6872f773..0cdfcaf1 100644 --- a/src/common/cliparser.h +++ b/src/common/cliparser.h @@ -24,38 +24,53 @@ #include #include #include -#include - -class CliParserArg; class CliParser{ public: - inline CliParser() {}; - CliParser(int argc, char *argv[]); + inline CliParser() {}; + + bool parse(const QStringList &arguments); + QString value(const QString &longName); + bool isSet(const QString &longName); + inline void addSwitch(const QString &longName, const char shortName = 0, const QString &help = QString()) { + addArgument(longName, CliParserArg(CliParserArg::CliArgSwitch, shortName, help)); + } + inline void addOption(const QString &longName, const char shortName = 0, const QString &help = QString(), const QString &def = QString()) { + addArgument(longName, CliParserArg(CliParserArg::CliArgOption, shortName, help, def)); + } + void usage(); - ~CliParser(); - bool parse(); - QVariant value(QString key); - void addArgument(QString longName, char shortName, QVariant def); 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 QString &longName, const CliParserArg &arg); + 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 escapedValue(const QString &value); + QString lnameOfShortArg(const char arg); + QStringList argsRaw; - QHash savedValues; QHash argsHash; - QHash::iterator> shortHash; -}; - -class CliParserArg { -public: - inline CliParserArg() {}; - CliParserArg(const CliParserArg &other); - CliParserArg(QString longName, char shortName, QVariant _def); - CliParserArg &operator=(const CliParserArg &other); -// private: - QString lname; - char sname; - QVariant def; - QVariant value; }; -Q_DECLARE_METATYPE(CliParserArg); #endif