Class CmdLine

Inheritance Relationships

Base Type

Class Documentation

class CmdLine : public ecl::CmdLineInterface

Manages the command line parsing object.

The base class that manages the command line definition and passes along the parsing to the appropriate Arg classes.

Public Functions

inline CmdLine(const std::string &message, const char delimiter = ' ', const std::string &version = "none", bool helpAndVersion = true)

Command line constructor. Defines how the arguments will be parsed.

Parameters
  • message – - The message to be used in the usage output.

  • delimiter – - The character that is used to separate the argument flag/name from the value. Defaults to ‘ ‘ (space).

  • version – - The version number to be used in the —version switch.

  • helpAndVersion – - Whether or not to create the Help and Version switches. Defaults to true.

inline virtual ~CmdLine()

Deletes any resources allocated by a CmdLine object.

inline virtual void add(Arg &a)

Adds an argument to the list of arguments to be parsed.

Parameters

a – - Argument to be added.

inline virtual void add(Arg *a)

An alternative add. Functionally identical.

Parameters

a – - Argument to be added.

inline virtual void xorAdd(Arg &a, Arg &b)

Add two Args that will be xor’d. If this method is used, add does not need to be called.

Parameters
  • a – - Argument to be added and xor’d.

  • b – - Argument to be added and xor’d.

inline virtual void xorAdd(std::vector<Arg*> &xors)

Add a list of Args that will be xor’d. If this method is used, add does not need to be called.

Parameters

xors – - List of Args to be added and xor’d.

inline virtual void parse(int argc, char **argv)

Parses the command line.

Parameters
  • argc – - Number of arguments.

  • argv – - Array of arguments.

inline virtual CmdLineOutput *getOutput()

Returns the CmdLineOutput object.

inline virtual void setOutput(CmdLineOutput *co)
Parameters

co – - CmdLineOutput object that we want to use instead.

inline virtual std::string &getVersion()

Returns the version string.

inline virtual std::string &getProgramName()

Returns the program name string.

inline virtual std::list<Arg*> &getArgList()

Returns the argList.

inline virtual XorHandler &getXorHandler()

Returns the XorHandler.

inline virtual char getDelimiter()

Returns the delimiter string.

inline virtual std::string &getMessage()

Returns the message string.

inline virtual bool hasHelpAndVersion()

Indicates whether or not the help and version switches were created automatically.

Protected Functions

inline bool _emptyCombined(const std::string &s)

Checks whether a name/flag string matches entirely matches the Arg::blankChar. Used when multiple switches are combined into a single argument.

Parameters

s – - The message to be used in the usage.

inline void deleteOnExit(Arg *ptr)

Perform a delete ptr; operation on ptr when this object is deleted.

inline void deleteOnExit(Visitor *ptr)

Perform a delete ptr; operation on ptr when this object is deleted.

Protected Attributes

std::list<Arg*> _argList

The list of arguments that will be tested against the command line.

std::string _progName

The name of the program. Set to argv[0].

std::string _message

A message used to describe the program. Used in the usage output.

std::string _version

The version to be displayed with the &#8212;version switch.

int _numRequired

The number of arguments that are required to be present on the command line. This is set dynamically, based on the Args added to the CmdLine object.

char _delimiter

The character that is used to separate the argument flag/name from the value. Defaults to ‘ ‘ (space).

XorHandler _xorHandler

The handler that manages xoring lists of args.

std::list<Arg*> _argDeleteOnExitList

A list of Args to be explicitly deleted when the destructor is called. At the moment, this only includes the three default Args.

std::list<Visitor*> _visitorDeleteOnExitList

A list of Visitors to be explicitly deleted when the destructor is called. At the moment, these are the Vistors created for the default Args.

CmdLineOutput *_output

Object that handles all output for the CmdLine.