71 namespace seqan3::detail::adl_only
75 template <
typename ...args_t>
91 template <
typename alphabet_t>
101 template <
typename alphabet_t>
111 template <
typename alphabet_t>
114 std::forward<alphabet_t>(
alphabet).to_rank()
169 template <
typename semi_alphabet_type>
171 requires requires { {
seqan3::to_rank(std::declval<semi_alphabet_type>()) }; }
181 namespace seqan3::detail::adl_only
185 template <
typename ...args_t>
195 using base_t::base_t;
210 template <
typename alphabet_t>
231 template <
typename alphabet_t>
249 template <
typename alphabet_t>
254 static_cast<alphabet_t
>(std::forward<alphabet_t>(
alphabet).assign_rank(rank))
317 namespace seqan3::detail::adl_only
321 template <
typename ...args_t>
322 void to_char(args_t ...) =
delete;
331 using base_t::base_t;
337 template <
typename alphabet_t>
347 template <
typename alphabet_t>
357 template <
typename alphabet_t>
360 std::forward<alphabet_t>(
alphabet).to_char()
419 template <
typename alphabet_type>
431 namespace seqan3::detail::adl_only
435 template <
typename ...args_t>
445 using base_t::base_t;
460 template <
typename alphabet_t>
481 template <
typename alphabet_t>
499 template <
typename alphabet_t>
504 static_cast<alphabet_t
>(
alphabet.assign_char(chr))
567 namespace seqan3::detail::adl_only
571 template <
typename ...args_t>
578 template <
typename alphabet_t>
584 using base_t::base_t;
589 template <
typename alphabet_type>
599 template <
typename alphabet_type = alphabet_t>
615 template <
typename alphabet_type = alphabet_t>
625 template <
typename alphabet_type = alphabet_t>
651 template <
typename alphabet_type = alphabet_t>
711 template <
typename alph_t>
713 requires requires { {
to_char(std::declval<alph_t>()) }; }
715 inline constexpr
auto char_is_valid_for = detail::adl_only::char_is_valid_for_cpo<alph_t>{};
723 namespace seqan3::detail::adl_only
728 struct assign_char_strictly_to_fn
731 template <
typename alphabet_t>
737 std::convertible_to, alphabet_t);
742 if (!seqan3::char_is_valid_for<alphabet_t>(chr))
787 namespace seqan3::detail::adl_only
791 template <
typename ...args_t>
798 template <
typename alphabet_t>
804 using base_t::base_t;
809 template <
typename alphabet_type>
812 seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
819 template <
typename alphabet_type = alphabet_t>
833 template <
typename alphabet_type = alphabet_t>
842 template <
typename alphabet_type = alphabet_t>
849 #if SEQAN3_WORKAROUND_GCC_89953
850 template <
typename alph_t>
852 inline constexpr
auto alphabet_size_obj = alphabet_size_cpo<alph_t>{};
903 #if SEQAN3_WORKAROUND_GCC_89953
904 template <
typename alph_t>
907 requires { { detail::adl_only::alphabet_size_obj<alph_t>() }; }
909 inline constexpr
auto alphabet_size = detail::adl_only::alphabet_size_obj<alph_t>();
911 template <
typename alph_t>
964 template <
typename t>
966 std::totally_ordered<t> &&
967 std::copy_constructible<t> &&
968 std::is_nothrow_copy_constructible_v<t> &&
971 { seqan3::alphabet_size<t> };
1015 template <
typename t>
1054 template <
typename t>
1102 template <
typename t>
1134 template <cereal_output_archive archive_t, semialphabet alphabet_t>
1153 template <cereal_input_archive archive_t,
typename wrapped_alphabet_t>
1155 wrapped_alphabet_t && l,
1156 alphabet_rank_t<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>>
const & r)
1159 assign_rank_to(r,
static_cast<detail::strip_cereal_wrapper_t<wrapped_alphabet_t> &
>(l));
1182 template <
typename t>
1204 template <
typename t>
1226 template <
typename t>
1249 template <
typename t>
Exceptions thrown by entities in the alphabet module.
Provides various type traits on generic types.
Adaptions of concepts from the Cereal library.
Helper utilities for defining customisation point objects (CPOs).
Provides concepts for core language types and relations that don't have concepts in C++20 (yet).
constexpr auto assign_char_to
Assign a character to an alphabet object.
Definition: concept.hpp:523
constexpr auto to_char
Return the char representation of an alphabet object.
Definition: concept.hpp:384
decltype(seqan3::to_rank(std::declval< semi_alphabet_type >())) alphabet_rank_t
The rank_type of the semi-alphabet; defined as the return type of seqan3::to_rank.
Definition: concept.hpp:164
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition: concept.hpp:858
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition: concept.hpp:291
decltype(seqan3::to_char(std::declval< alphabet_type const >())) alphabet_char_t
The char_type of the alphabet; defined as the return type of seqan3::to_char.
Definition: concept.hpp:396
constexpr auto char_is_valid_for
Returns whether a character is in the valid set of a seqan3::alphabet (usually implies a bijective ma...
Definition: concept.hpp:667
constexpr auto assign_char_strictly_to
Assign a character to an alphabet object, throw if the character is not valid.
Definition: concept.hpp:731
constexpr auto to_rank
Return the rank representation of a (semi-)alphabet object.
Definition: concept.hpp:155
#define SEQAN3_CPO_OVERLOAD(...)
A macro that helps to define a seqan3::detail::customisation_point_object.
Definition: customisation_point.hpp:102
#define SEQAN3_IS_CONSTEXPR(...)
Returns true if the expression passed to this macro can be evaluated at compile time,...
Definition: basic.hpp:28
The generic alphabet concept that covers most data types used in ranges.
A seqan3::alphabet that has constexpr accessors.
A seqan3::semialphabet that has constexpr accessors.
A seqan3::writable_alphabet that has constexpr accessors.
A seqan3::writable_semialphabet that has a constexpr assignment.
The basis for seqan3::alphabet, but requires only rank interface (not char).
Refines seqan3::alphabet and adds assignability.
A refinement of seqan3::semialphabet that adds assignability.
A namespace for third party and standard library specialisations of SeqAn customisation points.
Definition: char.hpp:44
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
A type that can be specialised to provide customisation point implementations so that third party typ...
Definition: concept.hpp:49
seqan3::detail::customisation_point_object (CPO) definition for seqan3::alphabet_size.
Definition: concept.hpp:752
Function object definition for seqan3::assign_char_strictly_to.
Definition: concept.hpp:681
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_char_to.
Definition: concept.hpp:414
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_rank_to.
Definition: concept.hpp:182
seqan3::detail::customisation_point_object (CPO) definition for seqan3::char_is_valid_for.
Definition: concept.hpp:544
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_char.
Definition: concept.hpp:309
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_rank.
Definition: concept.hpp:81
A CRTP base-class that defines a customisation_point_object (CPO).
Definition: customisation_point.hpp:138
Recursion anchor for seqan3::detail::priority_tag.
Definition: customisation_point.hpp:37
A tag that allows controlled overload resolution via implicit base conversion rules.
Definition: customisation_point.hpp:32
An exception typically thrown by seqan3::alphabet::assign_char_strict.
Definition: exception.hpp:30
Provides traits to inspect some information of a type, for example its name.
Provides C++20 additions to the type_traits header.