Class Arg
Defined in File arg.hpp
Inheritance Relationships
Derived Types
public ecl::MultiArg< T >
(Template Class MultiArg)public ecl::SwitchArg
(Class SwitchArg)public ecl::ValueArg< T >
(Template Class ValueArg)
Class Documentation
-
class Arg
Virtual parent for all the different argument classes.
A virtual base class that defines the essential data for all arguments. This class, or one of its existing children, must be subclassed to do anything.
Subclassed by ecl::MultiArg< T >, ecl::SwitchArg, ecl::ValueArg< T >
Public Functions
-
inline virtual ~Arg()
Destructor.
-
inline virtual void addToList(std::list<Arg*> &argList) const
Adds this to the specified list of Args.
Overridden by Args that need to added to the end of the list.
- Parameters
argList – - The list to add this to.
-
virtual bool processArg(int *i, std::vector<std::string> &args) = 0
Pure virtual method meant to handle the parsing and value assignment of the string on the command line.
- Parameters
i – - Pointer the the current argument in the list.
args – - Mutable list of strings. What is passed in from main.
-
inline virtual bool operator==(const Arg &a) const
Operator ==. Equality operator. Must be virtual to handle unlabeled args.
- Parameters
a – - The Arg to be compared to this.
-
inline const std::string &getFlag() const
Returns the argument flag.
-
inline const std::string &getName() const
Returns the argument name.
-
inline std::string getDescription() const
Returns the argument description.
-
inline virtual bool isRequired() const
Indicates whether the argument is required.
-
inline void forceRequired()
Sets _required to true. This is used by the XorHandler. You really have no reason to ever use it.
-
inline void xorSet()
Sets the _alreadySet value to true. This is used by the XorHandler. You really have no reason to ever use it.
-
inline bool isValueRequired() const
Indicates whether a value must be specified for argument.
-
inline bool isSet() const
Indicates whether the argument has already been set. Only true if the arg has been matched on the command line.
-
inline bool isIgnoreable() const
Indicates whether the argument can be ignored, if desired.
-
inline virtual bool argMatches(const std::string &s) const
A method that tests whether a string matches this argument. This is generally called by the processArg() method. This method could be re-implemented by a child to change how arguments are specified on the command line.
- Parameters
s – - The string to be compared to the flag/name to determine whether the arg matches.
-
inline virtual std::string toString() const
Returns a simple string representation of the argument. Primarily for debugging.
-
inline virtual std::string shortID(const std::string &valueId = "val") const
Returns a short ID for the usage.
- Parameters
valueId – - The value used in the id.
-
inline virtual std::string longID(const std::string &valueId = "val") const
Returns a long ID for the usage.
- Parameters
valueId – - The value used in the id.
-
inline virtual void trimFlag(std::string &flag, std::string &value) const
Trims a value off of the flag.
Implementation of trimFlag.
- Parameters
flag – - The string from which the flag and value will be trimmed. Contains the flag once the value has been trimmed.
value – - Where the value trimmed from the string will be stored.
-
inline bool _hasBlanks(const std::string &s) const
Checks whether a given string has blank chars, indicating that it is a combined SwitchArg
. If so, return true, otherwise return false.
Implementation of _hasBlanks.
- Parameters
s – - string to be checked.
-
inline void setRequireLabel(const std::string &s)
Sets the requireLabel. Used by XorHandler. You shouldn’t ever use this.
- Parameters
s – - Set the requireLabel to this value.
-
inline virtual bool allowMore()
-
inline virtual bool acceptsMultipleValues()
Public Static Functions
-
static inline void beginIgnoring()
Begin ignoring arguments since the “–” argument was specified.
-
static inline bool ignoreRest()
Whether to ignore the rest.
-
static inline char delimiter()
The delimiter that separates an argument flag/name from the value.
-
static inline char blankChar()
The char used as a place holder when SwitchArgs are combined. Currently set to ‘*’, which shouldn’t cause many problems since *’s are expanded by most shells on the command line.
-
static inline char flagStartChar()
The char that indicates the beginning of a flag. Currently ‘-’.
-
static inline std::string flagStartString()
The sting that indicates the beginning of a flag. Currently “-”. Should be identical to flagStartChar.
-
static inline std::string nameStartString()
The sting that indicates the beginning of a name. Currently “–”. Should be flagStartChar twice.
-
static inline std::string ignoreNameString()
The name used to identify the ignore rest argument.
-
static inline void setDelimiter(char c)
Sets the delimiter for all arguments.
- Parameters
c – - The character that delimits flags/names from values.
Protected Functions
-
inline void _checkWithVisitor() const
Performs the special handling described by the Vistitor.
-
inline Arg(const std::string &flag, const std::string &name, const std::string &desc, bool req, bool valreq, Visitor *v = NULL)
Primary constructor. YOU (yes you) should NEVER construct an Arg directly, this is a base class that is extended by various children that are meant to be used. Use SwitchArg, ValueArg, MultiArg, UnlabeledValueArg, or UnlabeledMultiArg instead.
- Parameters
flag – - The flag identifying the argument.
name – - The name identifying the argument.
desc – - The description of the argument, used in the usage.
req – - Whether the argument is required.
valreq – - Whether the a value is required for the argument.
v – - The visitor checked by the argument. Defaults to NULL.
Protected Attributes
-
std::string _flag
The single char flag used to identify the argument. This value (preceded by a dash {-}), can be used to identify an argument on the command line. The _flag can be blank, in fact this is how unlabeled args work. Unlabeled args must override appropriate functions to get correct handling. Note that the _flag does NOT include the dash as part of the flag.
-
std::string _name
A single work namd indentifying the argument. This value (preceded by two dashed {—}) can also be used to identify an argument on the command line. Note that the _name does NOT include the two dashes as part of the _name. The _name cannot be blank.
-
std::string _description
Description of the argument.
-
bool _required
Indicating whether the argument is required.
-
std::string _requireLabel
Label to be used in usage description. Normally set to “required”, but can be changed when necessary.
-
bool _valueRequired
Indicates whether a value is required for the argument. Note that the value may be required but the argument/value combination may not be, as specified by _required.
-
bool _alreadySet
Indicates whether the argument has been set. Indicates that a value on the command line has matched the name/flag of this argument and the values have been set accordingly.
-
Visitor *_visitor
A pointer to a vistitor object. The visitor allows special handling to occur as soon as the argument is matched. This defaults to NULL and should not be used unless absolutely necessary.
-
bool _ignoreable
Whether this argument can be ignored, if desired.
-
bool _xorSet
Indicates that the arg was set as part of an XOR and not on the command line.
-
bool _acceptsMultipleValues
-
inline virtual ~Arg()