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>
180namespace seqan3::detail::adl_only
184template <
typename... args_t>
194 using base_t::base_t;
209 template <
typename alphabet_t>
210 static constexpr auto
228 template <
typename alphabet_t>
229 static constexpr auto
244 template <
typename alphabet_t>
245 static constexpr auto
247 static_cast<alphabet_t
>(std::forward<alphabet_t>(
alphabet).assign_rank(rank))
310namespace seqan3::detail::adl_only
314template <
typename... args_t>
315void to_char(args_t...) =
delete;
324 using base_t::base_t;
330 template <
typename alphabet_t>
339 template <
typename alphabet_t>
348 template <
typename alphabet_t>
350 std::forward<alphabet_t>(
alphabet).to_char()
409template <
typename alphabet_type>
410 requires requires (alphabet_type
const a) {
423namespace seqan3::detail::adl_only
427template <
typename... args_t>
437 using base_t::base_t;
452 template <
typename alphabet_t>
453 static constexpr auto
471 template <
typename alphabet_t>
472 static constexpr auto
487 template <
typename alphabet_t>
488 static constexpr auto
490 static_cast<alphabet_t
>(
alphabet.assign_char(chr))
553namespace seqan3::detail::adl_only
557template <
typename... args_t>
564template <
typename alphabet_t>
570 using base_t::base_t;
575 template <
typename alphabet_type>
585 template <
typename alphabet_type = alphabet_t>
600 template <
typename alphabet_type = alphabet_t>
609 template <
typename alphabet_type = alphabet_t>
634 template <
typename alphabet_type = alphabet_t>
693template <
typename alph_t>
696 to_char(std::declval<alph_t>())
699inline constexpr auto char_is_valid_for = detail::adl_only::char_is_valid_for_cpo<alph_t>{};
707namespace seqan3::detail::adl_only
712struct assign_char_strictly_to_fn
715 template <
typename alphabet_t>
717 requires requires () {
720 } -> std::convertible_to<alphabet_t>;
722 seqan3::char_is_valid_for<alphabet_t>(chr)
723 } -> std::same_as<bool>;
726 if (!seqan3::char_is_valid_for<alphabet_t>(chr))
771namespace seqan3::detail::adl_only
775template <
typename... args_t>
782template <
typename alphabet_t>
788 using base_t::base_t;
793 template <
typename alphabet_type>
796 && seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
803 template <
typename alphabet_type = alphabet_t>
816 template <
typename alphabet_type = alphabet_t>
824 template <
typename alphabet_type = alphabet_t>
878template <
typename alph_t>
884inline constexpr auto alphabet_size = detail::adl_only::alphabet_size_cpo<alph_t>{}();
933concept semialphabet = std::totally_ordered<t> && std::copy_constructible<t> && std::is_nothrow_copy_constructible_v<t>
936 seqan3::alphabet_size<t>
1023template <
typename t>
1072template <
typename t>
1105template <cereal_output_archive archive_t, semialphabet alphabet_t>
1124template <cereal_input_archive archive_t,
typename wrapped_alphabet_t>
1126 wrapped_alphabet_t && l,
1130 assign_rank_to(r,
static_cast<detail::strip_cereal_wrapper_t<wrapped_alphabet_t> &
>(l));
1153template <
typename t>
1175template <
typename t>
1198template <
typename t>
1221template <
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:521
constexpr auto to_char
Return the char representation of an alphabet object.
Definition alphabet/concept.hpp:383
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:166
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition alphabet/concept.hpp:846
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition alphabet/concept.hpp:290
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:397
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:667
constexpr auto assign_char_strictly_to
Assign a character to an alphabet object, throw if the character is not valid.
Definition alphabet/concept.hpp:731
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:104
#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:39
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:752
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_char_to.
Definition alphabet/concept.hpp:415
detail::customisation_point_object< assign_char_to_cpo, 2 > base_t
CRTP base class seqan3::detail::customisation_point_object.
Definition alphabet/concept.hpp:417
seqan3::detail::customisation_point_object (CPO) definition for seqan3::assign_rank_to.
Definition alphabet/concept.hpp:184
seqan3::detail::customisation_point_object (CPO) definition for seqan3::char_is_valid_for.
Definition alphabet/concept.hpp:542
seqan3::detail::customisation_point_object (CPO) definition for seqan3::to_char.
Definition alphabet/concept.hpp:308
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:138
A tag that allows controlled overload resolution via implicit base conversion rules.
Definition customisation_point.hpp:29
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.