From 8fde146b047a99c52f0e0269b58ce8ffae6b415b Mon Sep 17 00:00:00 2001 From: "Taylor C. Richberger" Date: Fri, 6 May 2016 13:36:53 -0600 Subject: update parseargs to be properly overloaded --- args.hxx | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/args.hxx b/args.hxx index d5165f6..da5f267 100644 --- a/args.hxx +++ b/args.hxx @@ -868,17 +868,18 @@ namespace args /** Parse all arguments. * - * \param args an iterable of the arguments + * \param begin an iterator to the beginning of the argument list + * \param end an iterator to the past-the-end element of the argument list */ - template - void ParseArgs(const T &args) + template + void ParseArgs(It begin, It end) { // Reset all Matched statuses to false, for validation. Don't reset values. ResetMatched(); bool terminated = false; // Check all arg chunks - for (auto it = std::begin(args); it != std::end(args); ++it) + for (auto it = begin; it != end; ++it) { const std::string &chunk = *it; @@ -907,7 +908,7 @@ namespace args } else { ++it; - if (it == std::end(args)) + if (it == end) { std::ostringstream problem; problem << "Argument " << arg << " requires an argument but received none"; @@ -950,7 +951,7 @@ namespace args } else { ++it; - if (it == std::end(args)) + if (it == end) { std::ostringstream problem; problem << "Flag '" << arg << "' requires an argument but received none"; @@ -992,6 +993,16 @@ namespace args } } + /** Parse all arguments. + * + * \param args an iterable of the arguments + */ + template + void ParseArgs(const T &args) + { + ParseArgs(std::begin(args), std::end(args)); + } + /** Convenience function to parse the CLI from argc and argv * * Just assigns the program name and vectorizes arguments for passing into ParseArgs() -- cgit v1.2.1