count uses

This commit is contained in:
Jarryd Beck 2014-09-29 18:13:21 +10:00
parent 37122edba1
commit eb41b032df
2 changed files with 27 additions and 2 deletions

View File

@ -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
{

View File

@ -154,6 +154,17 @@ namespace cxxopts
std::shared_ptr<const Value> 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<std::string, std::shared_ptr<OptionDetails>> m_short;
std::map<std::string, std::shared_ptr<OptionDetails>> m_long;
std::map<std::string, boost::any> m_parsed;
std::map<std::string, ParsedOption> m_parsed;
};
class OptionAdder