24 #ifndef TCLAP_CMDLINE_H
25 #define TCLAP_CMDLINE_H
53 template<
typename T>
void DelPtr(T ptr)
60 typedef typename C::value_type value_type;
61 std::for_each(c.begin(), c.end(), DelPtr<value_type>);
184 bool _helpAndVersion;
200 CmdLine(
const std::string& message,
201 const char delimiter =
' ',
202 const std::string& version =
"none",
203 bool helpAndVersion =
true);
235 void xorAdd( std::vector<Arg*>& xors );
242 void parse(
int argc,
const char *
const * argv);
249 void parse(std::vector<std::string>& args);
323 inline CmdLine::CmdLine(
const std::string& m,
325 const std::string& v,
328 _argList(std::list<
Arg*>()),
329 _progName(
"not_set_yet"),
335 _argDeleteOnExitList(std::list<
Arg*>()),
336 _visitorDeleteOnExitList(std::list<
Visitor*>()),
338 _handleExceptions(true),
339 _userSetOutput(false),
340 _helpAndVersion(help)
350 if ( !_userSetOutput ) {
356 inline void CmdLine::_constructor()
364 if ( _helpAndVersion )
368 "Displays usage information and exits.",
376 "Displays version information and exits.",
383 v =
new IgnoreRestVisitor();
386 "Ignores the rest of the labeled arguments following this flag.",
399 (*it)->forceRequired();
400 (*it)->setRequireLabel(
"OR required" );
407 std::vector<Arg*> ors;
423 "Argument with same flag/name already exists!",
437 std::vector<std::string> args;
438 for (
int i = 0; i < argc; i++)
439 args.push_back(argv[i]);
446 bool shouldExit =
false;
451 args.erase(args.begin());
453 int requiredCount = 0;
455 for (
int i = 0;
static_cast<unsigned int>(i) < args.size(); i++)
457 bool matched =
false;
460 if ( (*it)->processArg( &i, args ) )
516 for (
int i = 1;
static_cast<unsigned int>(i) < s.length(); i++ )
527 std::string missingArgList;
530 if ( (*it)->isRequired() && !(*it)->isSet() )
532 missingArgList += (*it)->getName();
533 missingArgList +=
", ";
537 missingArgList = missingArgList.substr(0,missingArgList.length()-2);
541 msg =
"Required arguments missing: ";
543 msg =
"Required argument missing: ";
545 msg += missingArgList;
567 if ( !_userSetOutput )
569 _userSetOutput =
true;
605 return _helpAndVersion;