68namespace seqan3::detail::adl_only
72template <
typename... args_t>
88 template <
typename alphabet_t>
97 template <
typename alphabet_t>
106 template <
typename alphabet_t>
108 std::forward<alphabet_t>(
alphabet).to_rank()
166template <
typename semi_alphabet_type>
178namespace seqan3::detail::adl_only
182template <
typename... args_t>
192 using base_t::base_t;
207 template <
typename alphabet_t>
208 static constexpr auto
226 template <
typename alphabet_t>
227 static constexpr auto
242 template <
typename alphabet_t>
243 static constexpr auto
245 static_cast<alphabet_t
>(std::forward<alphabet_t>(
alphabet).assign_rank(rank))
308namespace seqan3::detail::adl_only
312template <
typename... args_t>
313void to_char(args_t...) =
delete;
322 using base_t::base_t;
328 template <
typename alphabet_t>
337 template <
typename alphabet_t>
346 template <
typename alphabet_t>
348 std::forward<alphabet_t>(
alphabet).to_char()
407template <
typename alphabet_type>
408 requires requires (alphabet_type
const a) {
419namespace seqan3::detail::adl_only
423template <
typename... args_t>
433 using base_t::base_t;
448 template <
typename alphabet_t>
449 static constexpr auto
467 template <
typename alphabet_t>
468 static constexpr auto
483 template <
typename alphabet_t>
484 static constexpr auto
486 static_cast<alphabet_t
>(
alphabet.assign_char(chr))
549namespace seqan3::detail::adl_only
553template <
typename... args_t>
560template <
typename alphabet_t>
566 using base_t::base_t;
571 template <
typename alphabet_type>
581 template <
typename alphabet_type = alphabet_t>
596 template <
typename alphabet_type = alphabet_t>
605 template <
typename alphabet_type = alphabet_t>
630 template <
typename alphabet_type = alphabet_t>
689template <
typename alph_t>
691 {
to_char(std::declval<alph_t>()) };
693inline constexpr auto char_is_valid_for = detail::adl_only::char_is_valid_for_cpo<alph_t>{};
701namespace seqan3::detail::adl_only
706struct assign_char_strictly_to_fn
709 template <
typename alphabet_t>
711 requires requires () {
713 { seqan3::char_is_valid_for<alphabet_t>(chr) } -> std::same_as<bool>;
716 if (!seqan3::char_is_valid_for<alphabet_t>(chr))
761namespace seqan3::detail::adl_only
765template <
typename... args_t>
772template <
typename alphabet_t>
778 using base_t::base_t;
783 template <
typename alphabet_type>
786 && seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
793 template <
typename alphabet_type = alphabet_t>
806 template <
typename alphabet_type = alphabet_t>
814 template <
typename alphabet_type = alphabet_t>
868template <
typename alph_t>
872inline constexpr auto alphabet_size = detail::adl_only::alphabet_size_cpo<alph_t>{}();
922 std::totally_ordered<t> && std::copy_constructible<t> && std::is_nothrow_copy_constructible_v<t> &&
requires (t v) {
923 { seqan3::alphabet_size<t> };
1005template <
typename t>
1052template <
typename t>
1082template <cereal_output_archive archive_t, semialphabet alphabet_t>
1101template <cereal_input_archive archive_t,
typename wrapped_alphabet_t>
1103 wrapped_alphabet_t && l,
1104 alphabet_rank_t<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>>
const & r)
1107 assign_rank_to(r,
static_cast<detail::strip_cereal_wrapper_t<wrapped_alphabet_t> &
>(l));
1130template <
typename t>
1151template <
typename t>
1172template <
typename t>
1194template <
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 alphabet/concept.hpp:517
constexpr auto to_char
Return the char representation of an alphabet object.
Definition alphabet/concept.hpp:381
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 alphabet/concept.hpp:164
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition alphabet/concept.hpp:834
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition alphabet/concept.hpp:288
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 alphabet/concept.hpp:393
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 alphabet/concept.hpp:661
constexpr auto assign_char_strictly_to
Assign a character to an alphabet object, throw if the character is not valid.
Definition alphabet/concept.hpp:721
constexpr auto to_rank
Return the rank representation of a (semi-)alphabet object.
Definition alphabet/concept.hpp:152
#define SEQAN3_CPO_OVERLOAD(...)
A macro that helps to define a seqan3::detail::customisation_point_object.
Definition customisation_point.hpp:106
#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:40
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
A type that can be specialised to provide customisation point implementations so that third party typ...
Definition alphabet/concept.hpp:46
seqan3::detail::customisation_point_object (CPO) definition for seqan3::alphabet_size.
Definition alphabet/concept.hpp:742
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_char_to.
Definition alphabet/concept.hpp:411
detail::customisation_point_object< assign_char_to_cpo, 2 > base_t
CRTP base class seqan3::detail::customisation_point_object.
Definition alphabet/concept.hpp:413
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_rank_to.
Definition alphabet/concept.hpp:182
seqan3::detail::customisation_point_object (CPO) definition for seqan3::char_is_valid_for.
Definition alphabet/concept.hpp:538
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_char.
Definition alphabet/concept.hpp:306
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_rank.
Definition alphabet/concept.hpp:78
A CRTP base-class that defines a customisation_point_object (CPO).
Definition customisation_point.hpp:140
A tag that allows controlled overload resolution via implicit base conversion rules.
Definition customisation_point.hpp:31
An exception typically thrown by seqan3::alphabet::assign_char_strict.
Definition alphabet/exception.hpp:27
Provides traits to inspect some information of a type, for example its name.
Provides concepts that do not have equivalents in C++20.