From 5f057658a8707ac9135519fb99b84cd357db09ba Mon Sep 17 00:00:00 2001 From: Sfinktah Bungholio Date: Thu, 12 May 2022 05:48:39 +1000 Subject: [PATCH 1/3] accept vector for argv --- argh.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/argh.h b/argh.h index b61300f..b351f35 100644 --- a/argh.h +++ b/argh.h @@ -114,6 +114,7 @@ namespace argh void parse(const char* const argv[], int mode = PREFER_FLAG_FOR_UNREG_OPTION); void parse(int argc, const char* const argv[], int mode = PREFER_FLAG_FOR_UNREG_OPTION); + void parser::parse(const std::vector& argv, int mode); std::multiset const& flags() const { return flags_; } std::multimap const& params() const { return params_; } @@ -193,15 +194,26 @@ namespace argh ////////////////////////////////////////////////////////////////////////// inline void parser::parse(int argc, const char* const argv[], int mode /*= PREFER_FLAG_FOR_UNREG_OPTION*/) + { + std::vector args; + + // convert to strings + args.resize(static_cast(argc)); + std::transform(argv, argv + argc, args.begin(), [](const char* const arg) { return arg; }); + + parse(args, mode); + } + + ////////////////////////////////////////////////////////////////////////// + + inline void parser::parse(const std::vector& argv, int mode) { // clear out possible previous parsing remnants flags_.clear(); params_.clear(); pos_args_.clear(); - // convert to strings - args_.resize(static_cast(argc)); - std::transform(argv, argv + argc, args_.begin(), [](const char* const arg) { return arg; }); + args_ = argv; // parse line for (auto i = 0u; i < args_.size(); ++i) From a22c177f6e1b2c55b2276eca0d6437e0e879a46a Mon Sep 17 00:00:00 2001 From: Sfinktah Bungholio Date: Thu, 2 Jun 2022 18:01:26 +1000 Subject: [PATCH 2/3] oops --- argh.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/argh.h b/argh.h index b351f35..7ced0ed 100644 --- a/argh.h +++ b/argh.h @@ -114,7 +114,7 @@ namespace argh void parse(const char* const argv[], int mode = PREFER_FLAG_FOR_UNREG_OPTION); void parse(int argc, const char* const argv[], int mode = PREFER_FLAG_FOR_UNREG_OPTION); - void parser::parse(const std::vector& argv, int mode); + void parse(const std::vector& argv, int mode = PREFER_FLAG_FOR_UNREG_OPTION); std::multiset const& flags() const { return flags_; } std::multimap const& params() const { return params_; } From ee5c13fce25bff3df0b9851a2ae865ef945b4f58 Mon Sep 17 00:00:00 2001 From: Sfinktah Bungholio Date: Sun, 18 Sep 2022 18:17:34 +1000 Subject: [PATCH 3/3] added matching constructor for std::string argv --- argh.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/argh.h b/argh.h index 7ced0ed..a986e71 100644 --- a/argh.h +++ b/argh.h @@ -109,6 +109,9 @@ namespace argh parser(int argc, const char* const argv[], int mode = PREFER_FLAG_FOR_UNREG_OPTION) { parse(argc, argv, mode); } + parser(const std::vector& argv, int mode = PREFER_FLAG_FOR_UNREG_OPTION) + { parse(argv, mode); }; + void add_param(std::string const& name); void add_params(std::initializer_list init_list);