-void CliParser::addSwitch(const QString longName, const char shortName, const QString help) {
- CliParserArg arg = CliParserArg(CliParserArg::CliArgSwitch, shortName, help);
- argsHash.insert(longName, arg);
- if(shortName) {
- if(!shortHash.contains(shortName)) shortHash.insert(shortName, argsHash.find(longName));
- else qWarning("Warning: shortName %c defined multiple times.", shortName);
+void CliParser::addArgument(const QString &longName_, const CliParserArg &arg) {
+ QString longName = longName_;
+ longName.remove(QRegExp("\\s*<.*>\\s*")); // KCmdLineArgs takes args of the form "arg <defval>"
+ if(argsMap.contains(longName)) qWarning() << "Warning: Multiple definition of argument" << longName;
+ if(arg.shortName != 0 && !lnameOfShortArg(arg.shortName).isNull())
+ qWarning().nospace() << "Warning: Redefining shortName '" << arg.shortName << "' for " << longName << " previously defined for " << lnameOfShortArg(arg.shortName);
+ argsMap.insert(longName, arg);
+}
+
+bool CliParser::addLongArg(const CliParserArg::CliArgType type, const QString &name, const QString &value) {
+ if(argsMap.contains(name)){
+ if(type == CliParserArg::CliArgOption && argsMap.value(name).type == type) {
+ argsMap[name].value = escapedValue(value);
+ return true;
+ }
+ else if (type == CliParserArg::CliArgSwitch && argsMap.value(name).type == type) {
+ argsMap[name].boolValue = true;
+ return true;
+ }