Loading...
Searching...
No Matches
seqan3::value_list_validator< option_value_t > Class Template Reference
Argument Parser

A validator that checks whether a value is inside a list of valid values. More...

`#include <seqan3/argument_parser/validators.hpp>`

Inheritance diagram for seqan3::value_list_validator< option_value_t >:
[legend]

## Public Types

using | option_value_type = option_value_t
| Type of values that are tested by validator.

## Public Member Functions

std::string | get_help_page_message () const
| Returns a message that can be appended to the (positional) options help page info.
void | operator() (option_value_type const &cmp) const
| Tests whether cmp lies inside values.
template<std::ranges::forward_range range_type> requires std::convertible_to<std::ranges::range_value_t<range_type>, option_value_type>
void | operator() (range_type const &range) const
| Tests whether every element in `range` lies inside values.
Constructors, destructor and assignment
| value_list_validator ()=default
| Defaulted.
| value_list_validator (value_list_validator const &)=default
| Defaulted.
| value_list_validator (value_list_validator &&)=default
| Defaulted.
value_list_validator & | operator= (value_list_validator const &)=default
| Defaulted.
value_list_validator & | operator= (value_list_validator &&)=default
| Defaulted.
| ~value_list_validator ()=default
| Defaulted.
template<std::ranges::forward_range range_type> requires std::constructible_from<option_value_type, std::ranges::range_rvalue_reference_t<range_type>>
| value_list_validator (range_type rng)
| Constructing from a range.
template<typename... option_types> requires ((std::constructible_from<option_value_type, option_types> && ...))
| value_list_validator (option_types &&... opts)
| Constructing from a parameter pack.

## Related Symbols

(Note that these are not member symbols.)
template<typename option_type, typename... option_types>
| value_list_validator (option_type, option_types...) -> value_list_validator< std::string >
| Type deduction guides.
template<typename range_type>
| value_list_validator (range_type &&rng) -> value_list_validator< std::string >
| Deduction guide for ranges over a value type convertible to std::string.
template<typename option_type, typename... option_types>
| value_list_validator (option_type, option_types...) -> value_list_validator< option_type >
| Deduction guide for a parameter pack.
template<typename range_type>
| value_list_validator (range_type &&rng) -> value_list_validator< std::ranges::range_value_t< range_type > >
| Deduction guide for ranges.
Related Symbols inherited from validator
using | option_value_type
| The type of value on which the validator is called on.
void | operator() (option_value_type const &cmp) const
| Validates the value 'cmp' and throws a seqan3::validation_error on failure.

## Detailed Description

template<typename option_value_t>
class seqan3::value_list_validator< option_value_t >

A validator that checks whether a value is inside a list of valid values.

Template Parameters

  option_value_t | Type of values that are tested by validator.

On construction, the validator must receive a range or parameter pack of valid values. The class than acts as a functor, that throws a seqan3::validation_error exception whenever a given value is not in the given list.

Note
  In order to simplify the chaining of validators, the option value type is deduced to std::string if the range's value type is convertible to it. Otherwise, the option value type is deduced to the value type of the range.

// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: CC0-1.0
#include <seqan3/argument_parser/all.hpp>
#include <seqan3/core/debug_stream.hpp>
int main(int argc, char const ** argv)
{
seqan3::argument_parser myparser{"Test", argc, argv}; // initialize
int myint;
seqan3::value_list_validator my_validator{2, 4, 6, 8, 10};
myparser.add_option(myint, 'i', "integer", "Give me a number.", seqan3::option_spec::standard, my_validator);
// an exception will be thrown if the user specifies an integer
// that is not one of [2,4,6,8,10] (e.g. "./test_app -i 3")
try
{
myparser.parse();
}
catch (seqan3::argument_parser_error const & ext) // the user did something wrong
{
std::cerr << "[PARSER ERROR] " << ext.what() << "\n"; // customize your error message
return -1;
}
seqan3::debug_stream << "integer given by user passed validation: " << myint << "\n";
return 0;
}
all.hpp
Meta-header for the Argument Parser module .
std::cerr
seqan3::argument_parser_error
Argument parser exception that is thrown whenever there is an error while parsing the command line ar...
Definition exceptions.hpp:39
seqan3::argument_parser
The SeqAn command line parser.
Definition argument_parser.hpp:147
seqan3::argument_parser::add_option
void add_option(option_type &value, char const short_id, std::string const &long_id, std::string const &desc, option_spec const spec=option_spec::standard, validator_type option_validator=validator_type{})
Adds an option to the seqan3::argument_parser.
Definition argument_parser.hpp:238
seqan3::argument_parser::parse
void parse()
Initiates the actual command line parsing.
Definition argument_parser.hpp:404
seqan3::value_list_validator
A validator that checks whether a value is inside a list of valid values.
Definition validators.hpp:199
debug_stream.hpp
Provides seqan3::debug_stream and related types.
seqan3::standard
@ standard
The default were no checking or special displaying is happening.
Definition auxiliary.hpp:250
seqan3::debug_stream
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition debug_stream.hpp:38
std::runtime_error::what
T what(T... args)

Remarks
  For a complete overview, take a look at Argument Parser

## Constructor & Destructor Documentation

## value_list_validator() [1/2]

template<typename option_value_t>
template<std::ranges::forward_range range_type>
requires std::constructible_from<option_value_type, std::ranges::range_rvalue_reference_t<range_type>>

seqan3::value_list_validator< option_value_t >::value_list_validator | ( | range_type | rng | ) |

inline

Constructing from a range.

Template Parameters

  range_type | The type of range; must model std::ranges::forward_range and value_list_validator::option_value_type must be constructible from the rvalue reference type of the given range.

Parameters

  [in] | rng | The range of valid values to test.

## value_list_validator() [2/2]

template<typename option_value_t>
template<typename... option_types>
requires ((std::constructible_from<option_value_type, option_types> && ...))

seqan3::value_list_validator< option_value_t >::value_list_validator | ( | option_types &&... | opts | ) |

inline

Constructing from a parameter pack.

Template Parameters

  option_types | The type of option values in the parameter pack; The value_list_validator::option_value_type must be constructible from each type in the parameter pack.

Parameters

  [in] | opts | The parameter pack values.

## Member Function Documentation

## get_help_page_message()

template<typename option_value_t>

std::string seqan3::value_list_validator< option_value_t >::get_help_page_message | ( |  | ) | const

inline

Returns a message that can be appended to the (positional) options help page info.

Implements validator.

## operator()() [1/2]

template<typename option_value_t>

void seqan3::value_list_validator< option_value_t >::operator() | ( | option_value_type const & | cmp | ) | const

inline

Tests whether cmp lies inside values.

Parameters

  cmp | The input value to check.

Exceptions

  seqan3::validation_error |

## operator()() [2/2]

template<typename option_value_t>
template<std::ranges::forward_range range_type>
requires std::convertible_to<std::ranges::range_value_t<range_type>, option_value_type>

void seqan3::value_list_validator< option_value_t >::operator() | ( | range_type const & | range | ) | const

inline

Tests whether every element in `range` lies inside values.

Template Parameters

  range_type | The type of range to check; must model std::ranges::forward_range.

Parameters

  range | The input range to iterate over and check every element.

Exceptions

  seqan3::validation_error |

## Friends And Related Symbol Documentation

## value_list_validator()

template<typename option_type, typename... option_types>

value_list_validator | ( | option_type | ,
|  | option_types... | )->value_list_validator< std::string >

related

Type deduction guides.

Given a parameter pack of types that are convertible to std::string, delegate to value type std::string.

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

- validators.hpp

Hide me