SeqAn3  3.0.0
The Modern C++ library for sequence analysis.
seqan3::value_list_validator< option_value_type > Class Template Reference

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_type >:

Public Types

using value_type = option_value_type
 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() (value_type const &cmp) const
 Tests whether cmp lies inside values. More...
 
template<std::ranges::ForwardRange range_type>
void operator() (range_type const &range) const
 Tests whether every element in range lies inside values. More...
 
 value_list_validator (std::vector< value_type > v)
 Constructing from a vector. More...
 

Related Functions

(Note that these are not member functions.)

template<Arithmetic option_value_type>
 value_list_validator (std::vector< option_value_type >) -> value_list_validator< double >
 Type deduction guides.
 
template<Arithmetic option_value_type>
 value_list_validator (std::initializer_list< option_value_type >) -> value_list_validator< double >
 
 value_list_validator (std::vector< const char * >) -> value_list_validator< std::string >
 
 value_list_validator (std::initializer_list< const char * >) -> value_list_validator< std::string >
 
Requirements for seqan3::Validator

You can expect these (meta-)functions on all types that implement seqan3::Validator.

void operator() (value_type const &cmp) const
 Validates the value 'cmp' and throws a seqan3::validation_failed on failure. More...
 

Detailed Description

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

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

On construction, the validator must receive a list (vector) of valid values. The struct than acts as a functor, that throws a seqan3::parser_invalid_argument exception whenever a given value is not in the given list.

int main(int argc, const char ** 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.",
// 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::parser_invalid_argument 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;
}

Constructor & Destructor Documentation

◆ value_list_validator()

template<typename option_value_type >
seqan3::value_list_validator< option_value_type >::value_list_validator ( std::vector< value_type v)
inline

Constructing from a vector.

Parameters
[in]vThe vector of valid values to test.

Member Function Documentation

◆ operator()() [1/2]

template<typename option_value_type >
void seqan3::value_list_validator< option_value_type >::operator() ( value_type const &  cmp) const
inline

Tests whether cmp lies inside values.

Parameters
cmpThe input value to check.
Exceptions
parser_invalid_argument

◆ operator()() [2/2]

template<typename option_value_type >
template<std::ranges::ForwardRange range_type>
void seqan3::value_list_validator< option_value_type >::operator() ( range_type const &  range) const
inline

Tests whether every element in range lies inside values.

Template Parameters
range_typeThe type of range to check; must model std::ranges::ForwardRange.
Parameters
rangeThe input range to iterate over and check every element.
Exceptions
parser_invalid_argument

Friends And Related Function Documentation

◆ operator()()

void operator() ( value_type const &  cmp) const
related

Validates the value 'cmp' and throws a seqan3::validation_failed on failure.

Template Parameters
value_typeThe type of the value to be validated.
Parameters
[in,out]cmpThe value to be validated.
Exceptions
seqan3::validation_failedif value 'cmp' does not pass validation.
Attention
This is a concept requirement, not an actual function (however types satisfying this concept will provide an implementation).

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