-void CliParser::addArgument(CliParserArg::CliArgType type, QString longName, char shortName, QVariant def) {
- CliParserArg arg = CliParserArg(type, longName, shortName, def);
- argsHash.insert(longName, arg);
- if(shortName && !shortHash.contains(shortName)) shortHash.insert(shortName, argsHash.find(longName));
+bool CliParser::addShortArg(const CliParserArg::CliArgType type, const char shortName, const QString &value) {
+ QString longName = lnameOfShortArg(shortName);
+ if(!longName.isNull()) {
+ if(type == CliParserArg::CliArgOption && argsHash.value(longName).type == type) {
+ argsHash[longName].value = escapedValue(value);
+ return true;
+ }
+ else if (type == CliParserArg::CliArgSwitch) {
+ if(argsHash.value(longName).type == type) {
+ argsHash[longName].boolValue = true;
+ return true;
+ }
+ // arg is an option but detected as a switch -> argument is missing
+ else {
+ qWarning().nospace() << "Warning: '" << shortName << "' is an option which needs an argument";
+ return false;
+ }
+ }
+ }
+ qWarning().nospace() << "Warning: Unrecognized argument: '" << shortName << "'";
+ return false;