From eb41b032dfc4dc1cf048386e8f27746084ee0c91 Mon Sep 17 00:00:00 2001 From: Jarryd Beck Date: Mon, 29 Sep 2014 18:13:21 +1000 Subject: [PATCH] count uses --- src/cxxopts.cpp | 3 ++- src/cxxopts.hpp | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/cxxopts.cpp b/src/cxxopts.cpp index fa6146c..3320717 100644 --- a/src/cxxopts.cpp +++ b/src/cxxopts.cpp @@ -101,7 +101,8 @@ Options::parse(int& argc, char**& argv) if (!value->has_arg()) { auto& v = m_parsed[name]; - value->parse("", v); + value->parse("", v.value); + ++v.count; } else { diff --git a/src/cxxopts.hpp b/src/cxxopts.hpp index 90b4148..c4ffad0 100644 --- a/src/cxxopts.hpp +++ b/src/cxxopts.hpp @@ -154,6 +154,17 @@ namespace cxxopts std::shared_ptr m_parser; }; + struct ParsedOption + { + boost::any value; + int count; + + ParsedOption() + : count(0) + { + } + }; + class Options { public: @@ -164,13 +175,26 @@ namespace cxxopts OptionAdder add_options(); + int + count(const std::string& o) const + { + auto iter = m_parsed.find(o); + + if (iter == m_parsed.end()) + { + return 0; + } + + return iter->second.count; + } + private: friend class OptionAdder; std::map> m_short; std::map> m_long; - std::map m_parsed; + std::map m_parsed; }; class OptionAdder -- libgit2 0.21.4