SeqAn3  3.0.1
The Modern C++ library for sequence analysis.
seqan3::input_directory_validator Class Reference

A validator that checks if a given path is a valid input directory. More...

#include <seqan3/argument_parser/validators.hpp>

+ Inheritance diagram for seqan3::input_directory_validator:

Public Types

using option_value_type = std::string
 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.
 
template<std::ranges::forward_range range_type>
void operator() (range_type const &v) const
 Tests whether every path in list v passes validation. See operator()(option_value_type const & value) for further information. More...
 
virtual void operator() (std::filesystem::path const &dir) const override
 Tests whether path is an existing directory and is readable. More...
 
Constructors, destructor and assignment
 input_directory_validator ()=default
 Defaulted.
 
 input_directory_validator (input_directory_validator const &)=default
 Defaulted.
 
 input_directory_validator (input_directory_validator &&)=default
 Defaulted.
 
input_directory_validatoroperator= (input_directory_validator const &)=default
 Defaulted.
 
input_directory_validatoroperator= (input_directory_validator &&)=default
 Defaulted.
 
virtual ~input_directory_validator ()=default
 Virtual Destructor.
 
 file_validator_base ()=default
 Defaulted.
 
 file_validator_base (file_validator_base const &)=default
 Defaulted.
 
 file_validator_base (file_validator_base &&)=default
 Defaulted.
 

Protected Member Functions

void validate_filename (std::filesystem::path const &path) const
 Validates the given filename path based on the specified extensions. More...
 
void validate_readability (std::filesystem::path const &path) const
 Checks if the given path is readable. More...
 
void validate_writeability (std::filesystem::path const &path) const
 Checks if the given path is writable. More...
 

Protected Attributes

std::vector< std::stringextensions {}
 Stores the extensions.
 

Related Functions

(Note that these are not member functions.)

Requirements for seqan3::validator

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

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

Detailed Description

A validator that checks if a given path is a valid input directory.

The struct acts as a functor that throws a seqan3::parser_invalid_argument exception whenever a given directory (std::filesystem::path) does not exist, the specified path is not a directory, or if the directory is not readable.

int main(int argc, const char ** argv)
{
seqan3::argument_parser myparser{"Test", argc, argv}; // initialize
myparser.add_option(mydir, 'd', "dir", "The directory containing the input files.",
// an exception will be thrown if the user specifies a directory that does not exists or has insufficient
// read permissions.
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 << "directory given by user passed validation: " << mydir << "\n";
return 0;
}
Note
The validator works on every type that can be implicitly converted to std::filesystem::path.

Member Function Documentation

◆ operator()() [1/2]

template<std::ranges::forward_range range_type>
void seqan3::file_validator_base::operator() ( range_type const &  v) const
inlineinherited

Tests whether every path in list v passes validation. See operator()(option_value_type const & value) for further information.

Template Parameters
range_typeThe type of range to check; must model std::ranges::forward_range and the value type must be convertible to std::filesystem::path.
Parameters
vThe input range to iterate over and check every element.
Exceptions
parser_invalid_argument

◆ operator()() [2/2]

virtual void seqan3::input_directory_validator::operator() ( std::filesystem::path const &  dir) const
inlineoverridevirtual

Tests whether path is an existing directory and is readable.

Parameters
dirThe input value to check.
Exceptions
seqan3::parser_invalid_argumentif the validation process failed. Might be nested with std::filesystem::filesystem_error on unhandled OS API errors.

Implements seqan3::file_validator_base.

◆ validate_filename()

void seqan3::file_validator_base::validate_filename ( std::filesystem::path const &  path) const
inlineprotectedinherited

Validates the given filename path based on the specified extensions.

Parameters
pathThe filename path.
Exceptions
parser_invalid_argumentif the specified extensions don't match the given path, or std::filesystem::filesystem_error on underlying OS API errors.

◆ validate_readability()

void seqan3::file_validator_base::validate_readability ( std::filesystem::path const &  path) const
inlineprotectedinherited

Checks if the given path is readable.

Parameters
pathThe path to check.
Returns
true if readable, otherwise false.
Exceptions
seqan3::parser_invalid_argumentif the path is not readable, or std::filesystem::filesystem_error on underlying OS API errors.

◆ validate_writeability()

void seqan3::file_validator_base::validate_writeability ( std::filesystem::path const &  path) const
inlineprotectedinherited

Checks if the given path is writable.

Parameters
pathThe path to check.
Returns
true if writable, otherwise false.
Exceptions
seqan3::parser_invalid_argumentif the file could not be opened for writing, or std::filesystem::filesystem_error on underlying OS API errors.

Friends And Related Function Documentation

◆ operator()()

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

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

Template Parameters
option_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:
debug_stream.hpp
Provides seqan3::debug_stream and related types.
seqan3::argument_parser
The SeqAn command line parser.
Definition: argument_parser.hpp:153
seqan3::DEFAULT
The default were no checking or special displaying is happening.
Definition: auxiliary.hpp:233
std::cerr
filesystem
This header includes C++17 filesystem support and imports it into namespace seqan3::filesystem (indep...
std::filesystem::path
all.hpp
Meta-Header for the argument parser module.
seqan3::parser_invalid_argument
Argument parser exception that is thrown whenever there is an error while parsing the command line ar...
Definition: exceptions.hpp:37
seqan3::debug_stream
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition: debug_stream.hpp:39
seqan3::input_directory_validator
A validator that checks if a given path is a valid input directory.
Definition: validators.hpp:679
std::invalid_argument::what
T what(T... args)