Provide complete occurance info (callbacks)
This commit is contained in:
parent
03094a1f61
commit
d749ba7cc2
|
@ -980,7 +980,7 @@ void ArgumentParser::invokeCallbacks(const ArgumentVector &args)
|
|||
// invoke the callback for each occurance of the argument
|
||||
if(arg->m_callbackFunction) {
|
||||
for(const auto &occurance : arg->m_occurances) {
|
||||
arg->m_callbackFunction(occurance.values);
|
||||
arg->m_callbackFunction(occurance);
|
||||
}
|
||||
}
|
||||
// invoke the callbacks for sub arguments recursively
|
||||
|
@ -1000,7 +1000,7 @@ void ArgumentParser::invokeCallbacks(const ArgumentVector &args)
|
|||
HelpArgument::HelpArgument(ArgumentParser &parser) :
|
||||
Argument("help", 'h', "shows this information")
|
||||
{
|
||||
setCallback([&parser] (const std::vector<const char *> &) {
|
||||
setCallback([&parser] (const ArgumentOccurance &) {
|
||||
CMD_UTILS_START_CONSOLE;
|
||||
parser.printHelp(cout);
|
||||
});
|
||||
|
|
|
@ -96,7 +96,7 @@ class LIB_EXPORT Argument
|
|||
friend class ArgumentParser;
|
||||
|
||||
public:
|
||||
typedef std::function <void (const std::vector<const char *> &)> CallbackFunction;
|
||||
typedef std::function <void (const ArgumentOccurance &)> CallbackFunction;
|
||||
|
||||
Argument(const char *name, char abbreviation = '\0', const char *description = nullptr, const char *example = nullptr);
|
||||
~Argument();
|
||||
|
|
|
@ -299,10 +299,12 @@ void ArgumentParserTests::testCallbacks()
|
|||
ArgumentParser parser;
|
||||
Argument callbackArg("with-callback", 't', "callback test");
|
||||
callbackArg.setRequiredValueCount(2);
|
||||
callbackArg.setCallback([] (const vector<const char *> &values) {
|
||||
CPPUNIT_ASSERT(values.size() == 2);
|
||||
CPPUNIT_ASSERT(!strcmp(values[0], "val1"));
|
||||
CPPUNIT_ASSERT(!strcmp(values[1], "val2"));
|
||||
callbackArg.setCallback([] (const ArgumentOccurance &occurance) {
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), occurance.index);
|
||||
CPPUNIT_ASSERT(occurance.path.empty());
|
||||
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), occurance.values.size());
|
||||
CPPUNIT_ASSERT(!strcmp(occurance.values[0], "val1"));
|
||||
CPPUNIT_ASSERT(!strcmp(occurance.values[1], "val2"));
|
||||
throw 42;
|
||||
});
|
||||
Argument noCallbackArg("no-callback", 'l', "callback test");
|
||||
|
|
Loading…
Reference in New Issue