start option groups

This commit is contained in:
Jarryd Beck 2014-10-14 10:49:14 +11:00
parent fd3d4bb2e7
commit 2bf1060d0b
2 changed files with 10 additions and 7 deletions

View File

@ -129,9 +129,9 @@ namespace cxxopts
} }
OptionAdder OptionAdder
Options::add_options() Options::add_options(std::string group)
{ {
return OptionAdder(*this); return OptionAdder(*this, std::move(group));
} }
OptionAdder& OptionAdder&
@ -153,7 +153,7 @@ OptionAdder::operator()
const auto& s = result[2]; const auto& s = result[2];
const auto& l = result[3]; const auto& l = result[3];
m_options.add_option(s.str(), l.str(), desc, value); m_options.add_option(m_group, s.str(), l.str(), desc, value);
return *this; return *this;
} }
@ -342,6 +342,7 @@ Options::parse(int& argc, char**& argv)
void void
Options::add_option Options::add_option
( (
const std::string& group,
const std::string& s, const std::string& s,
const std::string& l, const std::string& l,
const std::string& desc, const std::string& desc,
@ -361,7 +362,7 @@ Options::add_option
} }
//add the help details //add the help details
auto& options = m_help[""]; auto& options = m_help[group];
options.push_back(HelpDetails{s, l, desc, value->has_arg()}); options.push_back(HelpDetails{s, l, desc, value->has_arg()});
} }

View File

@ -333,11 +333,12 @@ namespace cxxopts
parse(int& argc, char**& argv); parse(int& argc, char**& argv);
OptionAdder OptionAdder
add_options(); add_options(std::string group = "");
void void
add_option add_option
( (
const std::string& group,
const std::string& s, const std::string& s,
const std::string& l, const std::string& l,
const std::string& desc, const std::string& desc,
@ -420,8 +421,8 @@ namespace cxxopts
{ {
public: public:
OptionAdder(Options& options) OptionAdder(Options& options, std::string group)
: m_options(options) : m_options(options), m_group(std::move(group))
{ {
} }
@ -436,6 +437,7 @@ namespace cxxopts
private: private:
Options& m_options; Options& m_options;
std::string m_group;
}; };
} }