diff --git a/src/cxxopts.cpp b/src/cxxopts.cpp index 3579541..9768655 100644 --- a/src/cxxopts.cpp +++ b/src/cxxopts.cpp @@ -129,9 +129,9 @@ namespace cxxopts } OptionAdder -Options::add_options() +Options::add_options(std::string group) { - return OptionAdder(*this); + return OptionAdder(*this, std::move(group)); } OptionAdder& @@ -153,7 +153,7 @@ OptionAdder::operator() const auto& s = result[2]; 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; } @@ -342,6 +342,7 @@ Options::parse(int& argc, char**& argv) void Options::add_option ( + const std::string& group, const std::string& s, const std::string& l, const std::string& desc, @@ -361,7 +362,7 @@ Options::add_option } //add the help details - auto& options = m_help[""]; + auto& options = m_help[group]; options.push_back(HelpDetails{s, l, desc, value->has_arg()}); } diff --git a/src/cxxopts.hpp b/src/cxxopts.hpp index 989fec9..0723e61 100644 --- a/src/cxxopts.hpp +++ b/src/cxxopts.hpp @@ -333,11 +333,12 @@ namespace cxxopts parse(int& argc, char**& argv); OptionAdder - add_options(); + add_options(std::string group = ""); void add_option ( + const std::string& group, const std::string& s, const std::string& l, const std::string& desc, @@ -420,8 +421,8 @@ namespace cxxopts { public: - OptionAdder(Options& options) - : m_options(options) + OptionAdder(Options& options, std::string group) + : m_options(options), m_group(std::move(group)) { } @@ -436,6 +437,7 @@ namespace cxxopts private: Options& m_options; + std::string m_group; }; }