71namespace seqan3::detail::adl_only
75template <
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()
172template <
typename semi_alphabet_type>
174 requires requires { {
seqan3::to_rank(std::declval<semi_alphabet_type>()) }; }
184namespace seqan3::detail::adl_only
188template <
typename ...args_t>
198 using base_t::base_t;
213 template <
typename alphabet_t>
234 template <
typename alphabet_t>
252 template <
typename alphabet_t>
257 static_cast<alphabet_t
>(std::forward<alphabet_t>(
alphabet).assign_rank(rank))
320namespace seqan3::detail::adl_only
324template <
typename ...args_t>
325void to_char(args_t ...) =
delete;
334 using base_t::base_t;
340 template <
typename alphabet_t>
350 template <
typename alphabet_t>
360 template <
typename alphabet_t>
363 std::forward<alphabet_t>(
alphabet).to_char()
422template <
typename alphabet_type>
434namespace seqan3::detail::adl_only
438template <
typename ...args_t>
448 using base_t::base_t;
463 template <
typename alphabet_t>
484 template <
typename alphabet_t>
502 template <
typename alphabet_t>
507 static_cast<alphabet_t
>(
alphabet.assign_char(chr))
570namespace seqan3::detail::adl_only
574template <
typename ...args_t>
581template <
typename alphabet_t>
587 using base_t::base_t;
592 template <
typename alphabet_type>
602 template <
typename alphabet_type = alphabet_t>
618 template <
typename alphabet_type = alphabet_t>
628 template <
typename alphabet_type = alphabet_t>
654 template <
typename alphabet_type = alphabet_t>
714template <
typename alph_t>
716 requires requires { {
to_char(std::declval<alph_t>()) }; }
718inline constexpr auto char_is_valid_for = detail::adl_only::char_is_valid_for_cpo<alph_t>{};
726namespace seqan3::detail::adl_only
731struct assign_char_strictly_to_fn
734 template <
typename alphabet_t>
740 {seqan3::char_is_valid_for<alphabet_t>(chr)} -> std::same_as<bool>;
744 if (!seqan3::char_is_valid_for<alphabet_t>(chr))
789namespace seqan3::detail::adl_only
793template <
typename ...args_t>
800template <
typename alphabet_t>
806 using base_t::base_t;
811 template <
typename alphabet_type>
814 seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
821 template <
typename alphabet_type = alphabet_t>
835 template <
typename alphabet_type = alphabet_t>
844 template <
typename alphabet_type = alphabet_t>
899template <
typename alph_t>
901 requires requires { { detail::adl_only::alphabet_size_cpo<alph_t>{}() }; }
903inline constexpr auto alphabet_size = detail::adl_only::alphabet_size_cpo<alph_t>{}();
953 std::totally_ordered<t> &&
954 std::copy_constructible<t> &&
955 std::is_nothrow_copy_constructible_v<t> &&
958 { seqan3::alphabet_size<t> };
1002template <
typename t>
1041template <
typename t>
1089template <
typename t>
1121template <cereal_output_archive archive_t, semialphabet alphabet_t>
1140template <cereal_input_archive archive_t,
typename wrapped_alphabet_t>
1142 wrapped_alphabet_t && l,
1143 alphabet_rank_t<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>>
const & r)
1146 assign_rank_to(r,
static_cast<detail::strip_cereal_wrapper_t<wrapped_alphabet_t> &
>(l));
1169template <
typename t>
1191template <
typename t>
1213template <
typename t>
1236template <
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).
constexpr auto assign_char_to
Assign a character to an alphabet object.
Definition: concept.hpp:526
constexpr auto to_char
Return the char representation of an alphabet object.
Definition: concept.hpp:387
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:167
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition: concept.hpp:846
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition: concept.hpp:294
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:399
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:670
constexpr auto assign_char_strictly_to
Assign a character to an alphabet object, throw if the character is not valid.
Definition: concept.hpp:733
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:29
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:754
Function object definition for seqan3::assign_char_strictly_to.
Definition: concept.hpp:684
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_char_to.
Definition: concept.hpp:417
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_rank_to.
Definition: concept.hpp:185
seqan3::detail::customisation_point_object (CPO) definition for seqan3::char_is_valid_for.
Definition: concept.hpp:547
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_char.
Definition: concept.hpp:312
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 concepts that do not have equivalents in C++20.