Util+Test: Add parsing of multi-value options

This commit is contained in:
Riyyi
2021-09-06 00:08:04 +02:00
parent a5c422a2cc
commit 68cdd625b4
3 changed files with 120 additions and 0 deletions
+17
View File
@@ -293,4 +293,21 @@ void ArgParser::addOption(std::string& value, char shortName, const char* longNa
addOption(std::move(option));
}
void ArgParser::addOption(std::vector<std::string>& value, char shortName, const char* longName, const char* usageString, const char* manString, const char* argumentName, Required requiresArgument)
{
Option option {
shortName,
longName,
argumentName,
usageString,
manString,
requiresArgument,
[&value](const char* a) -> bool {
value.push_back(a);
return true;
}
};
addOption(std::move(option));
}
} // namespace Util
+1
View File
@@ -47,6 +47,7 @@ public:
void addOption(Option&& option);
void addOption(bool& value, char shortName, const char* longName, const char* usageString, const char* manString);
void addOption(std::string& value, char shortName, const char* longName, const char* usageString, const char* manString, const char* argumentName = "", Required requiresArgument = Required::No);
void addOption(std::vector<std::string>& value, char shortName, const char* longName, const char* usageString, const char* manString, const char* argumentName = "", Required requiresArgument = Required::No);
void setOptionIndex(int index) { m_optionIndex = index; }
void setExitOnFirstError(bool state) { m_exitOnFirstError = state; }