SeqAn3  3.0.1
The Modern C++ library for sequence analysis.
seqan3::custom::argument_parsing< t > Struct Template Reference

A type that can be specialised to provide customisation point implementations for the seqan3::argument_parser such that third party types may be adapted. More...

#include <seqan3/argument_parser/auxiliary.hpp>

Detailed Description

template<typename t>
struct seqan3::custom::argument_parsing< t >

A type that can be specialised to provide customisation point implementations for the seqan3::argument_parser such that third party types may be adapted.

Template Parameters
tThe type you wish to specialise for.

Named Enumerations

In order to use a third party type within the seqan3::argument_parser::add_option or seqan3::argument_parser::add_positional_option call, you can specialise this struct in the following way:

#include <system_error>
namespace seqan3::custom
// Specialise the seqan3::custom::argument_parsing data structure to enable parsing of std::errc.
template <>
struct argument_parsing<std::errc>
// Specialise a mapping from an identifying string to the respective value of your type Foo.
{"no_error", std::errc{}},
{"timed_out", std::errc::timed_out},
{"invalid_argument", std::errc::invalid_argument},
{"io_error", std::errc::io_error}
} // namespace seqan3::custom
int main(int argc, char const * argv[])
std::errc value{};
seqan3::argument_parser parser{"my_program", argc, argv};
// Because of the argument_parsing struct and
// the static member function enumeration_names
// you can now add an option that takes a value of type std::errc:
parser.add_option(value, 'e', "errc", "Give me a std::errc value.", seqan3::option_spec::DEFAULT,
seqan3::value_list_validator{(seqan3::enumeration_names<std::errc> | seqan3::views::get<1>)});
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;
return 0;

Please note that by default the t const, t & and t const & specialisations of this class inherit the specialisation for t so you usually only need to provide a specialisation for t.

Only use this if you cannot provide respective functions in your namespace. See the tutorial Parsing command line arguments with SeqAn for an example of customising a type within your own namespace.

The documentation for this struct was generated from the following file:
The SeqAn command line parser.
Definition: argument_parser.hpp:153
const auto enumeration_names
Return a conversion map from std::string_view to option_type.
Definition: auxiliary.hpp:154
The default were no checking or special displaying is happening.
Definition: auxiliary.hpp:233
A validator that checks whether a value is inside a list of valid values.
Definition: validators.hpp:179
Meta-Header for the argument parser module.
SeqAn specific customisations in the standard namespace.
Argument parser exception that is thrown whenever there is an error while parsing the command line ar...
Definition: exceptions.hpp:37
T what(T... args)
A namespace for third party and standard library specialisations of SeqAn customisation points.
Definition: char.hpp:42
Provides seqan3::views::get.
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::DEFAULT, validator_type validator=validator_type{})
Adds an option to the seqan3::argument_parser.
Definition: argument_parser.hpp:237