count uses
This commit is contained in:
parent
37122edba1
commit
eb41b032df
@ -101,7 +101,8 @@ Options::parse(int& argc, char**& argv)
|
|||||||
if (!value->has_arg())
|
if (!value->has_arg())
|
||||||
{
|
{
|
||||||
auto& v = m_parsed[name];
|
auto& v = m_parsed[name];
|
||||||
value->parse("", v);
|
value->parse("", v.value);
|
||||||
|
++v.count;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -154,6 +154,17 @@ namespace cxxopts
|
|||||||
std::shared_ptr<const Value> m_parser;
|
std::shared_ptr<const Value> m_parser;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ParsedOption
|
||||||
|
{
|
||||||
|
boost::any value;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
ParsedOption()
|
||||||
|
: count(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class Options
|
class Options
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -164,13 +175,26 @@ namespace cxxopts
|
|||||||
OptionAdder
|
OptionAdder
|
||||||
add_options();
|
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:
|
private:
|
||||||
friend class OptionAdder;
|
friend class OptionAdder;
|
||||||
|
|
||||||
std::map<std::string, std::shared_ptr<OptionDetails>> m_short;
|
std::map<std::string, std::shared_ptr<OptionDetails>> m_short;
|
||||||
std::map<std::string, std::shared_ptr<OptionDetails>> m_long;
|
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
|
class OptionAdder
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user