Add Argument::varValueCount

This commit is contained in:
Martchus 2017-05-19 00:12:07 +02:00
parent 2e98e3bd11
commit 3bc1756425
2 changed files with 11 additions and 2 deletions

View File

@ -5,6 +5,7 @@
#include <functional> #include <functional>
#include <initializer_list> #include <initializer_list>
#include <limits>
#include <vector> #include <vector>
#ifdef DEBUG_BUILD #ifdef DEBUG_BUILD
#include <cassert> #include <cassert>
@ -200,6 +201,12 @@ public:
void reset(); void reset();
void resetRecursively(); void resetRecursively();
/*!
* \brief Denotes a variable number of values.
* \sa setRequiredValueCount()
*/
static constexpr std::size_t varValueCount = std::numeric_limits<std::size_t>::max();
private: private:
const char *m_name; const char *m_name;
char m_abbreviation; char m_abbreviation;
@ -405,7 +412,8 @@ inline std::size_t Argument::requiredValueCount() const
* for this argument. * for this argument.
* *
* The parser will expect that many values when parsing command line arguments. * The parser will expect that many values when parsing command line arguments.
* A negative value indicates a variable number of arguments to be expected. * Pass Argument::varValueCount for a variable number of arguments
* to be expected.
* *
* \sa requiredValueCount() * \sa requiredValueCount()
* \sa valueNames() * \sa valueNames()

View File

@ -9,6 +9,7 @@
#include <fstream> #include <fstream>
#include <initializer_list> #include <initializer_list>
#include <iostream> #include <iostream>
#include <limits>
#ifdef PLATFORM_UNIX #ifdef PLATFORM_UNIX
#include <poll.h> #include <poll.h>
@ -67,7 +68,7 @@ TestApplication::TestApplication(int argc, char **argv)
arg->setValueNames({ "path" }); arg->setValueNames({ "path" });
arg->setCombinable(true); arg->setCombinable(true);
} }
m_unitsArg.setRequiredValueCount(-1); m_unitsArg.setRequiredValueCount(Argument::varValueCount);
m_unitsArg.setValueNames({ "unit1", "unit2", "unit3" }); m_unitsArg.setValueNames({ "unit1", "unit2", "unit3" });
m_unitsArg.setCombinable(true); m_unitsArg.setCombinable(true);
m_parser.setMainArguments({ &m_testFilesPathArg, &m_applicationPathArg, &m_workingDirArg, &m_unitsArg, &m_helpArg }); m_parser.setMainArguments({ &m_testFilesPathArg, &m_applicationPathArg, &m_workingDirArg, &m_unitsArg, &m_helpArg });