From aef670bd436d85979949f335f510e9817222856b Mon Sep 17 00:00:00 2001 From: Joseph Durel Date: Sat, 11 Jul 2020 10:12:57 -0400 Subject: [PATCH] Make ArgumentParser::add_*() functions working on the parser itself chainable --- include/argparse/argparse.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index e305459..bf6425e 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -798,7 +798,8 @@ public: // Parameter packed add_parents method // Accepts a variadic number of ArgumentParser objects - template void add_parents(const Targs &... Fargs) { + template + ArgumentParser &add_parents(const Targs &... Fargs) { for (const ArgumentParser &tParentParser : {std::ref(Fargs)...}) { for (auto &tArgument : tParentParser.mPositionalArguments) { auto it = @@ -811,14 +812,17 @@ public: index_argument(it); } } + return *this; } - void add_description(std::string aDescription) { + ArgumentParser &add_description(std::string aDescription) { mDescription = std::move(aDescription); + return *this; } - void add_epilog(std::string aEpilog) { + ArgumentParser &add_epilog(std::string aEpilog) { mEpilog = std::move(aEpilog); + return *this; } /* Call parse_args_internal - which does all the work