40template <detail::config_element...
configs_t>
44 template <detail::config_element...
_configs_t>
68 template <
typename config_element_t>
69 requires (!std::same_as<std::remove_cvref_t<config_element_t>,
configuration>)
83 return std::tuple_size_v<base_type>;
116 template <
typename alternative_t>
123 template <
typename alternative_t>
130 template <
typename alternative_t>
137 template <
typename alternative_t>
144 template <
typename query_t>
150 template <
template <
typename...>
typename query_t>
176 template <
typename other_configuration_t>
180 if constexpr (detail::config_element<std::remove_cvref_t<other_configuration_t>>)
198 detail::transfer_type_modifier_onto_t<other_configuration_t, other_base_t>;
217 template <
typename query_t>
226 template <
template <
typename...>
typename query_t>
230 constexpr int index =
231 pack_traits::find_if<detail::is_same_configuration_f<query_t>::template invoke,
configs_t...>;
263 static_assert((index >= 0) && (index <
sizeof...(
configs_t)),
"Index to remove from config is out of bounds.");
294 template <
typename this_t,
typename query_t,
typename alternative_t>
295 static constexpr decltype(
auto)
310 template <
typename this_t,
311 template <
typename...>
315 static constexpr decltype(
auto)
337template <detail::config_element config_t>
360template <
typename lhs_config_t,
typename rhs_config_t>
364 if constexpr (detail::config_element<std::remove_cvref_t<lhs_config_t>>)
367 return std::forward<lhs_config_t>(
lhs).append(std::forward<rhs_config_t>(
rhs));
401template <
template <
typename...>
class query_t,
typename...
configs_t>
404 constexpr auto pos = pack_traits::find_if<detail::is_same_configuration_f<query_t>::template invoke,
configs_t...>;
405 static_assert(pos > -1,
"Access error: The requested type is not contained.");
411template <
template <
typename...>
class query_t,
typename...
configs_t>
414 constexpr auto pos = pack_traits::find_if<detail::is_same_configuration_f<query_t>::template invoke,
configs_t...>;
415 static_assert(pos > -1,
"Access error: The requested type is not contained.");
421template <
template <
typename...>
class query_t,
typename...
configs_t>
424 constexpr auto pos = pack_traits::find_if<detail::is_same_configuration_f<query_t>::template invoke,
configs_t...>;
425 static_assert(pos > -1,
"Access error: The requested type is not contained.");
431template <
template <
typename...>
class query_t,
typename...
configs_t>
434 constexpr auto pos = pack_traits::find_if<detail::is_same_configuration_f<query_t>::template invoke,
configs_t...>;
435 static_assert(pos > -1,
"Access error: The requested type is not contained.");
465struct tuple_element<pos,
seqan3::configuration<configs_t...>>
Collection of elements to configure an algorithm.
Definition configuration.hpp:42
constexpr decltype(auto) get_or(alternative_t &&alternative) const &&noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:138
constexpr size_t size() const noexcept
Returns the number of contained config elements.
Definition configuration.hpp:81
constexpr configuration(std::tuple< _configs_t... > const &cfg)
Constructs from std::tuple.
Definition configuration.hpp:242
constexpr configuration(std::tuple< _configs_t... > &&cfg)
Constructs from std::tuple.
Definition configuration.hpp:247
constexpr auto remove_at() const
Remove a config element from the configuration.
Definition configuration.hpp:261
configuration(config_t) -> configuration< config_t >
Deduces the correct configuration element type from the passed seqan3::pipeable_config_element.
constexpr configuration(config_element_t &&config_element)
Constructs a configuration from a single configuration element.
Definition configuration.hpp:71
constexpr decltype(auto) get_or(alternative_t &&alternative) &&noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:131
constexpr configuration(configuration &&)=default
Defaulted.
constexpr auto remove() const
Remove a config element from the configuration.
Definition configuration.hpp:218
constexpr decltype(auto) get_or(alternative_t &&alternative) &noexcept
Returns the stored configuration element if present otherwise the given alternative.
Definition configuration.hpp:117
constexpr configuration & operator=(configuration const &)=default
Defaulted.
constexpr configuration & operator=(configuration &&)=default
Defaulted.
~configuration()=default
Defaulted.
static constexpr decltype(auto) get_or_impl(this_t &&me, query_t const &query, alternative_t &&alternative) noexcept
Internal implementation of the get_or interace.
Definition configuration.hpp:296
constexpr auto append(other_configuration_t &&other_config) const
Returns a new configuration by appending the given configuration to the current one.
Definition configuration.hpp:178
static constexpr decltype(auto) get_or_impl(this_t &&me, query_template_t< parameters_t... > const &, alternative_t &&alternative) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:316
constexpr decltype(auto) get_or(alternative_t &&alternative) const &noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:124
constexpr configuration(configuration const &)=default
Defaulted.
constexpr configuration()=default
Defaulted.
static constexpr bool exists() noexcept
Checks if the given type exists in the tuple.
Definition configuration.hpp:145
Provides various auxiliary functions with which parts of the configurations can be checked.
Provides concepts for the configuration classes.
constexpr auto & get(configuration< configs_t... > &config) noexcept
Returns the stored element.
Definition configuration.hpp:402
typename transfer_template_args_onto< source_type, target_template >::type transfer_template_args_onto_t
Shortcut for seqan3::detail::transfer_template_args_onto (transformation_trait shortcut).
Definition template_inspection.hpp:70
constexpr auto tuple_pop_front(tuple_t &&t)
Removes the first element of a tuple.
Definition pop_front.hpp:39
decltype(detail::concat(lists_t{}...)) concat
Join two seqan3::type_list s into one.
Definition type_list/traits.hpp:339
constexpr ptrdiff_t find
Get the index of the first occurrence of a type in a pack.
Definition type_pack/traits.hpp:179
constexpr ptrdiff_t find_if
Get the index of the first type in a pack that satisfies the given predicate.
Definition type_pack/traits.hpp:202
constexpr bool contains
Whether a type occurs in a pack or not.
Definition type_pack/traits.hpp:220
Concept for an algorithm configuration element.
Subconcept definition for seqan3::tuple_like to test for std::tuple_size-interface.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:412
SeqAn specific customisations in the standard namespace.
Provides seqan3::tuple_pop_front.
Helper meta function to check if a template type is contained in a seqan3::configuration.
Definition configuration_utility.hpp:30
Type that contains multiple types.
Definition type_list.hpp:26
std::tuple_element_t< pos, typename seqan3::configuration< configs_t... >::base_type > type
The type of the config at position pos
Definition configuration.hpp:468
Provides type traits for working with templates.
Provides type traits seqan3::detail::transfer_type_modifier_onto.
Provides seqan3::type_list.