13#include <unordered_map>
14#include <unordered_set>
25namespace kaycxx::cli {
92 template <parseable_value T>
94 return std::any_cast<T const&>(values_.at(&
option.definition()));
106 template <parseable_value T>
108 return values_.contains(&
option.definition());
119 template <parseable_value T>
121 return std::any_cast<std::vector<T>
const&>(values_.at(&
option.definition()));
132 template <parseable_value T>
134 return values_.contains(&
option.definition());
148 template <parseable_value T>
151 return std::any_cast<T const&>(parameters_.at(&
parameter.definition()));
165 template <parseable_value T>
168 return parameters_.contains(&
parameter.definition());
182 template <parseable_value T>
185 return std::any_cast<std::vector<T>
const&>(parameters_.at(&
parameters.definition()));
199 template <parseable_value T>
202 return parameters_.contains(&
parameters.definition());
209 std::unordered_set<switch_base const*> flags_;
212 std::unordered_map<switch_base const*, std::any> values_;
215 std::vector<parameter_base const*> parameter_definitions_;
218 std::vector<std::string> positional_values_;
221 mutable std::unordered_map<parameter_base const*, std::any> parameters_;
224 mutable bool validated_ =
false;
Parsed command line arguments.
Definition args.hpp:38
bool has(parameter_handle< T > const ¶meter) const
Checks whether a positional parameter value is available.
Definition args.hpp:166
std::vector< T > const & get(repeatable_option_handle< T > const &option) const
Returns all parsed values of a repeatable option.
Definition args.hpp:120
args & operator=(args &&other) noexcept=default
Move-assigns parsed arguments.
T const & get(parameter_handle< T > const ¶meter) const
Returns a parsed positional parameter value.
Definition args.hpp:149
bool has(repeatable_option_handle< T > const &option) const
Checks whether values for a repeatable option are available.
Definition args.hpp:133
args & operator=(args const &)=delete
Prevents copy-assigning parsed arguments.
args(args &&other) noexcept=default
Moves parsed arguments.
bool get(flag_handle const &flag) const
Checks whether a flag was set.
args(args const &)=delete
Prevents copying parsed arguments.
std::vector< T > const & get(parameters_handle< T > const ¶meters) const
Returns parsed positional parameter list values.
Definition args.hpp:183
void validate() const
Validates and converts all positional parameters.
args()=default
Creates an empty argument collection.
T const & get(option_handle< T > const &option) const
Returns a parsed option value.
Definition args.hpp:93
bool has(parameters_handle< T > const ¶meters) const
Checks whether positional parameter list values are available.
Definition args.hpp:200
bool has(option_handle< T > const &option) const
Checks whether an option value is available.
Definition args.hpp:107
Defines and parses a command line interface.
Definition command.hpp:68
Handle for a registered flag.
Definition flag_handle.hpp:22
Command line flag definition.
Definition flag.hpp:22
Handle for a registered option.
Definition option_handle.hpp:25
Typed command line option definition.
Definition option.hpp:93
Handle for a registered positional parameter.
Definition parameter_handle.hpp:25
Typed single positional parameter definition.
Definition parameter.hpp:32
Handle for a registered positional parameter list.
Definition parameters_handle.hpp:28
Typed positional parameter list definition.
Definition parameters.hpp:37
Handle for a registered repeatable option.
Definition repeatable_option_handle.hpp:25
Defines the flag handle type.
Defines the option handle type.
Defines the common base class for positional parameters.
Defines the positional parameter handle type.
Defines the positional parameter list handle type.
Defines the repeatable option handle type.
Defines the common base class for flags and options.