C++ Essence Library 0.1.0
A Utility Library for Modern C++ Programming
Loading...
Searching...
No Matches
essence::cli::option< T > Class Template Reference

Creates a base internal implementation of a CLI option class. More...

#include <option.hpp>

Public Types

using element_type = std::conditional_t<std_basic_string<T>, T, range_value_t_or_self_t<T>>
 
using set_hash_type = std::conditional_t<std_basic_string<element_type>, string_hash, std::hash<element_type>>
 

Public Member Functions

 option ()
 Creates an instance.
 
abi::string bound_name () const
 
optionset_bound_name (std::string_view name)
 
abi::string description () const
 
optionset_description (std::string_view description)
 
std::span< const abi::string > aliases () const
 
optionadd_aliases (std::span< const abi::string > aliases)
 
std::optional< abi::string > default_value_str () const
 
std::span< const abi::string > valid_value_strs () const noexcept
 
abi::string name_hints () const
 
abi::string value_hints () const
 
bool parse_value_and_cache (std::string_view value)
 
void set_target_from_cache (void *target)
 
void validate (std::string_view value, validation_result &result) const
 
void raise_error (std::string_view message) const
 
void on_validation (const validation_handler &handler) const
 
void on_error (const output_handler &handler) const
 
template<std::convertible_to< std::string_view >... Args>
optionadd_aliases (Args &&... args)
 
template<typename U >
requires std::constructible_from<T, U>
optionset_default_value (U &&value)
 
optionset_valid_values (std::span< const element_type > values)
 
template<typename... Args>
requires (std::constructible_from<element_type, Args> && ...)
optionset_valid_values (Args &&... args)
 
abstract::option as_abstract ()
 

Static Public Member Functions

static bool check_target_type (meta::fingerprint id) noexcept
 

Static Public Attributes

static constexpr std::string_view delimiter {U8(",")}
 
static constexpr std::string_view optional_pattern {U8("[]")}
 
static constexpr std::string_view keyword_pattern {U8("``")}
 
static constexpr meta::fingerprint type_id {std::type_identity<T>{}}
 

Detailed Description

template<std::default_initializable T>
requires ((std::is_arithmetic_v<range_value_t_or_self_t<T>> || std::is_enum_v<range_value_t_or_self_t<T>> || std_basic_string<range_value_t_or_self_t<T>>) && (std::same_as<range_value_t_or_self_t<T>, T> ? true : extendable_contiguous_range<T>) )
class essence::cli::option< T >

Creates a base internal implementation of a CLI option class.

Returns
The base implementation.

A CLI option, i.e. –xxx=yyy.

Template Parameters
TThe data type of the option.

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