X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fcliparser.h;h=00f22b982bad297e3d7e5bf40e32f5a6b14aa920;hp=6872f773a8ef472e0afd8a1e79d75b945467257e;hb=b3a2bd9e7d829afca26c6ab3ea09dfc6490319ce;hpb=81c2e2cf2c12eb6839994f95f47698e5252fc91c diff --git a/src/common/cliparser.h b/src/common/cliparser.h index 6872f773..00f22b98 100644 --- a/src/common/cliparser.h +++ b/src/common/cliparser.h @@ -26,36 +26,45 @@ #include #include -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 savedValues; - QHash argsHash; - QHash::iterator> shortHash; -}; - class CliParserArg { public: + enum CliArgType { + CliArgInvalid, + CliArgSwitch, + CliArgOption + }; + typedef CliArgType CliArgTypes; + 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); -// private: + + CliArgType type; QString lname; char sname; + QString shortHelp; 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 argsHash; + QHash::iterator> shortHash; +}; + + #endif