Ookii.CommandLine for C++
1.0.0
|
Abstract base class for regular and multi-value arguments. More...
#include <ookii/command_line_argument.h>
Public Types | |
using | storage_type = details::argument_storage< CharType, Traits, Alloc > |
The concrete type of argument information storage used. For internal use. | |
using | string_type = typename storage_type::string_type |
The concrete type of std::basic_string used. | |
using | string_view_type = std::basic_string_view< CharType, Traits > |
The concrete type of std::basic_string_view used. | |
using | usage_options_type = basic_usage_options< CharType, Traits, Alloc > |
The concrete type of std::basic_usage_options used. | |
Public Member Functions | |
command_line_argument_base (const command_line_argument_base &)=delete | |
const std::vector< string_type > & | aliases () const noexcept |
Gets a list of aliases that can be used instead of the argument's name. More... | |
virtual void | apply_default_value ()=0 |
Sets the variable holding the argument's value to the default value. More... | |
bool | cancel_parsing () const noexcept |
Gets a value that indicates whether supplying this argument will cancel parsing. More... | |
const string_type & | description () const noexcept |
Gets the long description of the argument. More... | |
virtual string_type | format_default_value (const usage_options_type &options, const std::locale &loc={}) const =0 |
Convert the default value of the argument to a string using the specified usage options. More... | |
bool | has_value () const noexcept |
Gets a value that indicates whether the argument was specified on the last invocation of basic_command_line_parser::parse(). More... | |
virtual bool | is_multi_value () const noexcept |
Gets a value that indicates whether the argument can be provided more than once, collecting all the specified values. More... | |
bool | is_required () const noexcept |
Gets a value that indicates whether the argument is required. More... | |
virtual bool | is_switch () const noexcept=0 |
Gets a value that indicates whether the argument is a switch, which means it can be supplied without a value. More... | |
const string_type & | name () const noexcept |
Gets the name of the argument. More... | |
command_line_argument_base & | operator= (const command_line_argument_base &)=delete |
std::optional< size_t > | position () const noexcept |
Gets the position of the argument. More... | |
virtual void | reset () |
Resets the argument to indicate it hasn't been set. More... | |
virtual bool | set_switch_value ()=0 |
Applies the implicit value for a switch argument. More... | |
virtual bool | set_value (string_view_type value, std::locale loc={})=0 |
Sets the argument to the specified value. More... | |
const string_type & | value_description () const noexcept |
Gets the value description for the argument. More... | |
Protected Member Functions | |
command_line_argument_base (storage_type &&storage) | |
Move constructor for command_line_argument_base. | |
const storage_type & | base_storage () const |
Provides access to the storage fields to derived classes. | |
void | set_value () noexcept |
Used to indicate that the argument has a value. More... | |
Static Protected Member Functions | |
template<typename T > | |
static string_type | format_default_value_helper (const std::optional< T > &value, const usage_options_type &options, const std::locale &loc={}) |
Helper function for derived classes to implement format_default_value(). More... | |
Abstract base class for regular and multi-value arguments.
CharType | The character type used for arguments and other strings. |
Traits | The character traits to use for strings. Defaults to std::char_traits<CharType> . |
Alloc | The allocator to use for strings. Defaults to std::allocator<CharType> . |
This class provides the common functionality for both regular and multi-value arguments.
|
inlinenoexcept |
Gets a list of aliases that can be used instead of the argument's name.
An argument may not have any aliases.
Aliases can be added using the basic_parser_builder::argument_builder::alias() method.
|
pure virtual |
Sets the variable holding the argument's value to the default value.
This method has no effect if the argument was supplied on the command line (has_value() returns true
) or no default value was specified.
For a multi-value argument, the default value will be added as the only value in the container if no values were supplied on the command line.
The default value for an argument can be specified using basic_parser_builder::argument_builder::default_value().
Implemented in ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >, and ookii::command_line_argument< T, CharType, Traits, Alloc >.
|
inlinenoexcept |
Gets a value that indicates whether supplying this argument will cancel parsing.
If this returns true
, if this argument is supplied, argument parsing will immediately return with parse_error::parsing_cancelled. Arguments after this one will not be evaluated.
This can be used, for example, to implement a -Help
argument where usage help should be shown when supplied even if the rest of the command line is valid.
This value can be changed using the basic_parser_builder::argument_builder::cancel_parsing() method.
|
inlinenoexcept |
Gets the long description of the argument.
The description is used when generating usage help, and is included in the list of descriptions after the usage syntax.
An argument without a description will not be included in the list of descriptions (but will still be included in the syntax).
This value can be changed using the basic_parser_builder::argument_builder::description() method.
|
pure virtual |
Convert the default value of the argument to a string using the specified usage options.
options | The usage options specifying the default value format string. |
loc | The locale used to format the value. |
With the default options, this will return a string like "Default value: value".
The default value for an argument can be specified using basic_parser_builder::argument_builder::default_value().
|
inlinestaticprotected |
Helper function for derived classes to implement format_default_value().
T | The type of the argument. |
value | The argument's default value. |
options | The usage options specifying the default value format string. |
loc | The locale used to format the value. |
|
inlinenoexcept |
Gets a value that indicates whether the argument was specified on the last invocation of basic_command_line_parser::parse().
This allows you to determine if an argument was explicitly specified with a value that matches the default value.
|
inlinevirtualnoexcept |
Gets a value that indicates whether the argument can be provided more than once, collecting all the specified values.
An argument is multi-value if it was created using basic_parser_builder::add_multi_value_argument().
Reimplemented in ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >.
|
inlinenoexcept |
Gets a value that indicates whether the argument is required.
A required argument must be provided, otherwise parsing is not successful.
An argument can be made required using the basic_parser_builder::argument_builder::required() method.
|
pure virtualnoexcept |
Gets a value that indicates whether the argument is a switch, which means it can be supplied without a value.
An argument is a switch if its type is bool
or std::optional<bool>
.
Implemented in ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >, and ookii::command_line_argument< T, CharType, Traits, Alloc >.
|
inlinenoexcept |
Gets the name of the argument.
The argument's name is set using the basic_parser_builder::add_argument() method.
|
inlinenoexcept |
Gets the position of the argument.
std::nullopt
if the argument is not positional.A positional argument can be specified without suppling -Name
before the value. Note that a positional argument can still be specified by name, as well as by position.
An argument can be made positional using the basic_parser_builder::argument_builder::positional() method.
|
inlinevirtual |
Resets the argument to indicate it hasn't been set.
The reset() method is called on all arguments before parsing. After the call, the has_value() method will return false
. This method does not affect the value of the variable holding the argument's value, except for multi-value arguments, where the container holding the values is cleared before parsing.
Reimplemented in ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >.
|
pure virtual |
Applies the implicit value for a switch argument.
true
if the argument was a switch argument; otherwise, false
.If the argument is a switch argument (is_switch() returns true
), the variable holding its variable will be set to true
. Otherwise, the value is not changed and false
is returned.
For a multi-value argument, this adds a value of true
to the container.
Implemented in ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >, and ookii::command_line_argument< T, CharType, Traits, Alloc >.
|
inlineprotectednoexcept |
Used to indicate that the argument has a value.
After calling this method, has_value()
will return true
.
|
pure virtual |
Sets the argument to the specified value.
value | The string value of the argument. |
loc | The locale to use to parse the argument value. |
true
if the value was successfully set, or false
if conversion to the argument's type failed.When the value is set, this method converts to the string value to the actual type of the argument using either the custom converter function (if any), or the default converter, which is the lexical_convert template.
For multi-value arguments, the new value will be added to the list of values.
|
inlinenoexcept |
Gets the value description for the argument.
The value description is a brief, often one-word description of the type of values that the argument accepts. It's used as part of the usage help's syntax.
This value defaults to the short type name (excluding namespace names) of the argument's type. The exact value may depend on your compiler.
This value can be changed using the basic_parser_builder::argument_builder::value_description() method.