@@ -253,8 +253,8 @@ friend class SubArgGet;
253253 ArgGet (const ArgGet&) = default ;
254254 ArgGet& operator =(const ArgGet&) = default ;
255255
256- ArgGet (std::list<SwitchArgBase*> argDefs, std::list<PosArg*> posArgDefs = {})
257- : _argDefs(std::move(argDefs)), _posArgDefs(std::move(posArgDefs))
256+ ArgGet (std::list<SwitchArgBase*> argDefs, std::list<PosArg*> posArgDefs = {}, std::string help = " " )
257+ : _argDefs(std::move(argDefs)), _posArgDefs(std::move(posArgDefs)), _help(std::move(help))
258258 {}
259259
260260 bool get_args (int argc, char ** argv)
@@ -365,6 +365,10 @@ friend class SubArgGet;
365365 }
366366 help << std::endl;
367367 help << _argDefHelp (_argDefs);
368+ if (!_help.empty ())
369+ {
370+ help << std::endl << _help << std::endl;
371+ }
368372 return help.str ();
369373 }
370374
@@ -389,6 +393,7 @@ friend class SubArgGet;
389393 std::string _name;
390394 std::list<SwitchArgBase*> _argDefs;
391395 std::list<PosArg*> _posArgDefs;
396+ std::string _help;
392397 std::string _errMsg;
393398
394399};
@@ -400,17 +405,17 @@ class SubArgGet
400405 SubArgGet (const SubArgGet&) = delete ;
401406 SubArgGet& operator =(const SubArgGet&) = delete ;
402407
403- using SubArgs = std::list<std::pair<std::string,std::pair<std::list<SwitchArgBase*>,std::list<PosArg*>> >>;
408+ using SubArgs = std::list<std::pair<std::string,const ArgGet & >>;
404409
405410 SubArgGet (const SubArgs& subArgs) : SubArgGet({}, subArgs)
406411 {}
407412 SubArgGet (std::list<SwitchArgBase*> commonArgDefs, const SubArgs& subArgs)
408413 : _commonArgDefs(std::move(commonArgDefs))
409414 {
410- for (const auto & [subCommand, args ] : subArgs)
415+ for (const auto & [subCommand, argGet ] : subArgs)
411416 {
412417 _order.emplace_back (subCommand);
413- _subCommands[subCommand] = ArgGet (args. first , args. second ) ;
418+ _subCommands[subCommand] = argGet ;
414419 }
415420 }
416421
0 commit comments