Ookii.CommandLine for C++  1.0.0
Public Types | Public Member Functions | List of all members
ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc > Class Template Reference

Class that provides information about arguments that are not multi-value arguments. More...

#include <ookii/command_line_argument.h>

Inheritance diagram for ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >:
Inheritance graph
[legend]
Collaboration diagram for ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >:
Collaboration graph
[legend]

Public Types

using base_type = command_line_argument_base< CharType, Traits, Alloc >
 The type of the base class of this class.
 
using element_type = typename T::value_type
 The type of the argument's container's elements.
 
using string_type = typename base_type::string_type
 The concrete type of std::basic_string used. More...
 
using string_view_type = typename base_type::string_view_type
 The concrete type of std::basic_string_view used. More...
 
using typed_storage_type = details::typed_argument_storage< T, element_type, CharType, Traits >
 The concrete type of argument information storage used. For internal use. More...
 
using usage_options_type = typename base_type::usage_options_type
 The concrete type of std::basic_usage_options used.
 
using value_type = T
 The type of the argument's container, which equals T.
 
- Public Types inherited from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >
using storage_type = details::argument_storage< CharType, std::char_traits< CharType >, std::allocator< CharType > >
 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, std::char_traits< CharType > >
 The concrete type of std::basic_string_view used.
 
using usage_options_type = basic_usage_options< CharType, std::char_traits< CharType >, std::allocator< CharType > >
 The concrete type of std::basic_usage_options used.
 

Public Member Functions

 multi_value_command_line_argument (typename base_type::storage_type &&storage, typed_storage_type &&typed_storage)
 Initializes a new instance of the multi_value_command_line_argument class. More...
 
void apply_default_value () override
 Sets the variable holding the argument's value to the default value. More...
 
string_type format_default_value (const usage_options_type &options, const std::locale &loc={}) const override
 Convert the default value of the argument to a string using the specified usage options. More...
 
bool is_multi_value () const noexcept override
 Used to indicate that the argument has a value. More...
 
bool is_switch () const noexcept override
 Gets a value that indicates whether the argument is a switch, which means it can be supplied without a value. More...
 
void reset () override
 Resets the argument to indicate it hasn't been set. More...
 
CharType separator () const noexcept
 Gets the character used to separate multiple values in a single argument value, or '\0' if no separator is used. More...
 
bool set_switch_value () override
 Applies the implicit value for a switch argument. More...
 
bool set_value (string_view_type value, std::locale loc={}) override
 Used to indicate that the argument has a value. More...
 
- Public Member Functions inherited from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >
 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...
 
bool cancel_parsing () const noexcept
 Gets a value that indicates whether supplying this argument will cancel parsing. More...
 
const string_typedescription () 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...
 
bool is_required () const noexcept
 Gets a value that indicates whether the argument is required. More...
 
const string_typename () const noexcept
 Gets the name of the argument. More...
 
command_line_argument_baseoperator= (const command_line_argument_base &)=delete
 
std::optional< size_t > position () const noexcept
 Gets the position of the argument. More...
 
virtual bool set_value (string_view_type value, std::locale loc={})=0
 Sets the argument to the specified value. More...
 
const string_typevalue_description () const noexcept
 Gets the value description for the argument. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >
 command_line_argument_base (storage_type &&storage)
 Move constructor for command_line_argument_base.
 
const storage_typebase_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 inherited from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >
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...
 

Detailed Description

template<typename T, typename CharType, typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
class ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >

Class that provides information about arguments that are not multi-value arguments.

Template Parameters
TThe type of the argument's container.
CharTypeThe character type used for arguments and other strings.
TraitsThe character traits to use for strings. Defaults to std::char_traits<CharType>.
AllocThe allocator to use for strings. Defaults to std::allocator<CharType>.

This provides information for all arguments created using basic_parser_builder::add_multi_value_argument().

For arguments that are not multi-value, see command_line_argument.

Member Typedef Documentation

◆ string_type

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
using ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::string_type = typename base_type::string_type

The concrete type of std::basic_string used.

◆ string_view_type

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
using ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::string_view_type = typename base_type::string_view_type

The concrete type of std::basic_string_view used.

◆ typed_storage_type

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
using ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::typed_storage_type = details::typed_argument_storage<T, element_type, CharType, Traits>

The concrete type of argument information storage used. For internal use.

Constructor & Destructor Documentation

◆ multi_value_command_line_argument()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::multi_value_command_line_argument ( typename base_type::storage_type &&  storage,
typed_storage_type &&  typed_storage 
)
inline

Initializes a new instance of the multi_value_command_line_argument class.

Parameters
storageStorage containing the argument's information.
typed_storageStorage containing information that depends on the argument's type.

You do not normally construct instances of this class manually. Instead, use the basic_parser_builder.

Member Function Documentation

◆ apply_default_value()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
void ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::apply_default_value ( )
inlineoverridevirtual

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().

Implements ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >.

◆ format_default_value()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
string_type ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::format_default_value ( const usage_options_type options,
const std::locale &  loc = {} 
) const
inlineoverride

Convert the default value of the argument to a string using the specified usage options.

Parameters
optionsThe usage options specifying the default value format string.
locThe locale used to format the value.
Returns
The formatted default value, or an empty string if the argument doesn't have a default value or the options indicate to exclude it.

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().

◆ is_multi_value()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
bool ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::is_multi_value ( ) const
inlineoverridevirtualnoexcept

Used to indicate that the argument has a value.

After calling this method, has_value() will return true.

This method always returns true.

Reimplemented from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >.

◆ is_switch()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
bool ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::is_switch ( ) const
inlineoverridevirtualnoexcept

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>.

Implements ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >.

◆ reset()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
void ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::reset ( )
inlineoverridevirtual

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 from ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >.

◆ separator()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
CharType ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::separator ( ) const
inlinenoexcept

Gets the character used to separate multiple values in a single argument value, or '\0' if no separator is used.

The separator can be specified using basic_parser_builder::multi_value_argument_builder::separator().

◆ set_switch_value()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
bool ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::set_switch_value ( )
inlineoverridevirtual

Applies the implicit value for a switch argument.

Returns
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.

Implements ookii::command_line_argument_base< CharType, std::char_traits< CharType >, std::allocator< CharType > >.

◆ set_value()

template<typename T , typename CharType , typename Traits = std::char_traits<CharType>, typename Alloc = std::allocator<CharType>>
bool ookii::multi_value_command_line_argument< T, CharType, Traits, Alloc >::set_value ( string_view_type  value,
std::locale  loc = {} 
)
inlineoverride

Used to indicate that the argument has a value.

After calling this method, has_value() will return true.


The documentation for this class was generated from the following file: