Library: Util
Package: Options
Header: Poco/Util/Option.h
Description
This class represents and stores the properties of a command line option.
An option has a full name, an optional short name, a description (used for printing a usage statement), and an optional argument name. An option can be optional or required. An option can be repeatable, which means that it can be given more than once on the command line.
An option can be part of an option group. At most one option of each group may be specified on the command line.
An option can be bound to a configuration property. In this case, a configuration property will automatically receive the option's argument value.
A callback method can be specified for options. This method is called whenever an option is specified on the command line.
Option argument values can be automatically validated using a Validator.
Option instances are value objects.
Typically, after construction, an Option object is immediately passed to an Options object.
An Option object can be created by chaining the constructor with any of the setter methods, as in the following example:
Option versionOpt("include", "I", "specify an include directory") .required(false) .repeatable(true) .argument("directory");
Member Summary
Member Functions: argument, argumentName, argumentRequired, binding, callback, config, description, fullName, group, matchesFull, matchesPartial, matchesShort, noArgument, operator =, process, repeatable, required, shortName, swap, takesArgument, validator
Constructors
Option
Option();
Creates an empty Option.
Option
Option(
const Option & option
);
Creates an option from another one.
Option
Option(
const std::string & fullName,
const std::string & shortName
);
Creates an option with the given properties.
Option
Option(
const std::string & fullName,
const std::string & shortName,
const std::string & description,
bool required = false
);
Creates an option with the given properties.
Option
Option(
const std::string & fullName,
const std::string & shortName,
const std::string & description,
bool required,
const std::string & argName,
bool argRequired = false
);
Creates an option with the given properties.
Destructor
~Option
~Option();
Destroys the Option.
Member Functions
argument
Option & argument(
const std::string & name,
bool required = true
);
Specifies that the option takes an (optional or required) argument.
argumentName
const std::string & argumentName() const;
Returns the argument name, if specified.
argumentRequired
bool argumentRequired() const;
Returns true if the argument is required.
binding
Option & binding(
const std::string & propertyName
);
Binds the option to the configuration property with the given name.
The configuration will automatically receive the option's argument.
binding
Option & binding(
const std::string & propertyName,
AbstractConfiguration::Ptr pConfig
);
Binds the option to the configuration property with the given name, using the given AbstractConfiguration.
The configuration will automatically receive the option's argument.
binding
const std::string & binding() const;
Returns the property name the option is bound to, or an empty string in case it is not bound.
callback
Option & callback(
const AbstractOptionCallback & cb
);
Binds the option to the given method.
The callback method will be called when the option has been specified on the command line.
Usage:
callback(OptionCallback<MyApplication>(this, &MyApplication::myCallback));
callback
AbstractOptionCallback * callback() const;
Returns a pointer to the callback method for the option, or NULL if no callback has been specified.
config
AbstractConfiguration::Ptr config() const;
Returns the configuration, if specified, or NULL otherwise.
description
Option & description(
const std::string & text
);
Sets the description of the option.
description
const std::string & description() const;
Returns the description of the option.
fullName
Option & fullName(
const std::string & name
);
Sets the full name of the option.
fullName
const std::string & fullName() const;
Returns the full name of the option.
group
Option & group(
const std::string & group
);
Specifies the option group the option is part of.
group
const std::string & group() const;
Returns the option group the option is part of, or an empty string, if the option is not part of a group.
matchesFull
bool matchesFull(
const std::string & option
) const;
Returns true if the given option string matches the full name.
The option string must match the full name (case insensitive).
matchesPartial
bool matchesPartial(
const std::string & option
) const;
Returns true if the given option string partially matches the full name.
The option string must partially match the full name (case insensitive).
matchesShort
bool matchesShort(
const std::string & option
) const;
Returns true if the given option string matches the short name.
The first characters of the option string must match the short name of the option (case sensitive), or the option string must partially match the full name (case insensitive).
noArgument
Option & noArgument();
Specifies that the option does not take an argument (default).
operator =
Option & operator = (
const Option & option
);
Assignment operator.
process
void process(
const std::string & option,
std::string & arg
) const;
Verifies that the given option string matches the requirements of the option, and extracts the option argument, if present.
If the option string is okay and carries an argument, the argument is returned in arg.
Throws a MissingArgumentException if a required argument is missing. Throws an UnexpectedArgumentException if an argument has been found, but none is expected.
repeatable
Option & repeatable(
bool flag
);
Sets whether the option can be specified more than once (flag == true) or at most once (flag == false).
repeatable
bool repeatable() const;
Returns true if the option can be specified more than once, or false if at most once.
required
Option & required(
bool flag
);
Sets whether the option is required (flag == true) or optional (flag == false).
required
bool required() const;
Returns true if the option is required, false if not.
shortName
Option & shortName(
const std::string & name
);
Sets the short name of the option.
shortName
const std::string & shortName() const;
Returns the short name of the option.
swap
void swap(
Option & option
) noexcept;
Swaps the option with another one.
takesArgument
bool takesArgument() const;
Returns true if the options takes an (optional) argument.
validator
Option & validator(
Validator * pValidator
);
Sets the validator for the given option.
The Option takes ownership of the Validator and deletes it when it's no longer needed.
validator
Validator * validator() const;
Returns the option's Validator, if one has been specified, or NULL otherwise.