54template <
typename derived_type, writable_semialphabet alphabet_type>
55 requires std::regular<alphabet_type>
59 alphabet_base<derived_type,
60 alphabet_size<alphabet_type>,
61 detail::valid_template_spec_or_t<void, alphabet_char_t, alphabet_type>>>
70 detail::valid_template_spec_or_t<void, alphabet_char_t, alphabet_type>>>;
76 using char_type = detail::valid_template_spec_or_t<char, alphabet_char_t, alphabet_type>;
79 using phred_type = detail::valid_template_spec_or_t<int8_t, alphabet_phred_t, alphabet_type>;
94 requires std::is_class_v<alphabet_type>
100 requires (!std::is_class_v<alphabet_type>)
107 constexpr derived_type & operator=(alphabet_type
const & c)
noexcept
109 if constexpr (std::is_class_v<alphabet_type>)
114 static_cast<derived_type &
>(*this).on_update();
115 return static_cast<derived_type &
>(*this);
119 template <
typename indirect_assignable_type>
146 return operator=(
tmp);
155 return operator=(
tmp);
164 return operator=(
tmp);
175 if constexpr (std::is_class_v<alphabet_type>)
196 template <
typename other_t>
197 requires (!std::is_class_v<alphabet_type>) && std::convertible_to<alphabet_type, other_t>
200 return operator alphabet_type();
246 template <
typename t>
247 static constexpr bool is_alphabet_comparable_with =
248 !std::is_same_v<derived_type, t> && detail::weakly_equality_comparable_with<alphabet_type, t>;
252 template <
typename t>
256 return (
lhs.operator alphabet_type() ==
rhs);
260 template <
typename t>
261 friend constexpr auto
268 template <
typename t>
276 template <
typename t>
277 friend constexpr auto
Provides alphabet helper concepts.
Provides seqan3::nucleotide_alphabet.
Quality alphabet concept.
Provides seqan3::alphabet_base.
Provides various type traits on generic types.
A CRTP-base that makes defining a custom alphabet easier.
Definition alphabet_base.hpp:54
A CRTP-base that eases the definition of proxy types returned in place of regular alphabets.
Definition alphabet_proxy.hpp:62
friend constexpr auto operator!=(derived_type const lhs, t const rhs) noexcept -> std::enable_if_t< is_alphabet_comparable_with< t >, bool >
Allow (in-)equality comparison with types that the emulated type is comparable with.
Definition alphabet_proxy.hpp:269
constexpr derived_type & assign_char(char_type const c) noexcept
Assigns a character.
Definition alphabet_proxy.hpp:150
constexpr derived_type & assign_rank(alphabet_rank_t< alphabet_type > const r) noexcept
Assigns a rank.
Definition alphabet_proxy.hpp:142
static constexpr auto alphabet_size
The alphabet size.
Definition alphabet_proxy.hpp:134
constexpr derived_type & assign_phred(phred_type const c) noexcept
Assigns a Phred score.
Definition alphabet_proxy.hpp:159
friend constexpr auto operator!=(t const lhs, derived_type const rhs) noexcept -> std::enable_if_t< is_alphabet_comparable_with< t >, bool >
Allow (in-)equality comparison with types that the emulated type is comparable with.
Definition alphabet_proxy.hpp:278
friend constexpr auto operator==(t const lhs, derived_type const rhs) noexcept -> std::enable_if_t< is_alphabet_comparable_with< t >, bool >
Allow (in-)equality comparison with types that the emulated type is comparable with.
Definition alphabet_proxy.hpp:262
friend constexpr auto operator==(derived_type const lhs, t const rhs) noexcept -> std::enable_if_t< is_alphabet_comparable_with< t >, bool >
Allow (in-)equality comparison with types that the emulated type is comparable with.
Definition alphabet_proxy.hpp:253
constexpr alphabet_type complement() const noexcept
Returns the complement.
Definition alphabet_proxy.hpp:224
constexpr auto to_char() const noexcept
Returns the character.
Definition alphabet_proxy.hpp:210
constexpr auto to_phred() const noexcept
Returns the Phred score.
Definition alphabet_proxy.hpp:217
constexpr auto to_rank() const noexcept
Returns the rank.
Definition alphabet_proxy.hpp:204
static constexpr bool char_is_valid(char_type const c) noexcept
Delegate to the emulated type's validator.
Definition alphabet_proxy.hpp:231
A "pretty printer" for most SeqAn data structures and related types.
Definition debug_stream_type.hpp:79
constexpr auto complement
Return the complement of a nucleotide object.
Definition alphabet/nucleotide/concept.hpp:102
constexpr auto to_phred
The public getter function for the Phred representation of a quality score.
Definition alphabet/quality/concept.hpp:97
constexpr auto assign_phred_to
Assign a Phred score to a quality alphabet object.
Definition alphabet/quality/concept.hpp:225
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
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition alphabet/concept.hpp:288
constexpr auto to_rank
Return the rank representation of a (semi-)alphabet object.
Definition alphabet/concept.hpp:152
The generic alphabet concept that covers most data types used in ranges.
A concept that indicates whether an alphabet represents nucleotides.
A concept that indicates whether an alphabet represents quality scores.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
Provides type traits for working with templates.
Provides concepts that do not have equivalents in C++20.