57template <
typename derived_type, writable_semialphabet alphabet_type>
58 requires std::regular<alphabet_type>
62 alphabet_base<derived_type,
63 alphabet_size<alphabet_type>,
64 detail::valid_template_spec_or_t<void, alphabet_char_t, alphabet_type>>>
72 alphabet_size<alphabet_type>,
97 requires
std::is_class_v<alphabet_type>
103 requires (!std::is_class_v<alphabet_type>)
112 if constexpr (std::is_class_v<alphabet_type>)
122 template <
typename indirect_assignable_type>
176 constexpr operator alphabet_type() const noexcept
178 if constexpr (std::is_class_v<alphabet_type>)
199 template <
typename other_t>
200 requires (!std::is_class_v<alphabet_type>) && std::convertible_to<alphabet_type, other_t>
201 constexpr operator other_t()
const noexcept
203 return operator alphabet_type();
237 return char_is_valid_for<alphabet_type>(c);
249 template <
typename t>
251 !std::is_same_v<derived_type, t> && detail::weakly_equality_comparable_with<alphabet_type, t>;
255 template <
typename t>
259 return (lhs.operator alphabet_type() == rhs);
263 template <
typename t>
271 template <
typename t>
275 return !(lhs == rhs);
279 template <
typename t>
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:57
A CRTP-base that eases the definition of proxy types returned in place of regular alphabets.
Definition: alphabet_proxy.hpp:65
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:272
detail::valid_template_spec_or_t< int8_t, alphabet_phred_t, alphabet_type > phred_type
The type of the Phred score.
Definition: alphabet_proxy.hpp:82
friend base_t
Befriend the base type.
Definition: alphabet_proxy.hpp:76
constexpr derived_type & assign_char(char_type const c) noexcept
Assigns a character.
Definition: alphabet_proxy.hpp:153
constexpr derived_type & assign_rank(alphabet_rank_t< alphabet_type > const r) noexcept
Assigns a rank.
Definition: alphabet_proxy.hpp:145
static constexpr auto alphabet_size
The alphabet size.
Definition: alphabet_proxy.hpp:137
constexpr derived_type & assign_phred(phred_type const c) noexcept
Assigns a Phred score.
Definition: alphabet_proxy.hpp:162
detail::valid_template_spec_or_t< char, alphabet_char_t, alphabet_type > char_type
The type of the alphabet character.
Definition: alphabet_proxy.hpp:79
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:280
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:264
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:256
friend derived_type
Befriend the derived type so it can instantiate.
Definition: alphabet_proxy.hpp:133
constexpr alphabet_proxy(alphabet_type const a) noexcept
Construction from the emulated type.
Definition: alphabet_proxy.hpp:102
constexpr alphabet_type complement() const noexcept
Returns the complement.
Definition: alphabet_proxy.hpp:227
constexpr auto to_char() const noexcept
Returns the character.
Definition: alphabet_proxy.hpp:213
constexpr auto to_phred() const noexcept
Returns the Phred score.
Definition: alphabet_proxy.hpp:220
constexpr auto to_rank() const noexcept
Returns the rank.
Definition: alphabet_proxy.hpp:207
static constexpr bool char_is_valid(char_type const c) noexcept
Delegate to the emulated type's validator.
Definition: alphabet_proxy.hpp:234
static constexpr bool is_alphabet_comparable_with
work around a gcc bug that disables short-circuiting of operator&& in an enable_if_t of a friend func...
Definition: alphabet_proxy.hpp:250
constexpr derived_type & operator=(indirect_assignable_type const &c) noexcept
Assignment from any type that the emulated type is assignable from.
Definition: alphabet_proxy.hpp:123
constexpr derived_type & operator=(alphabet_type const &c) noexcept
Assignment from the emulated type. This function triggers the specialisation in the derived_type.
Definition: alphabet_proxy.hpp:110
constexpr alphabet_proxy & operator=(alphabet_proxy const &)=default
Defaulted.
constexpr alphabet_proxy() noexcept=default
Defaulted.
constexpr auto complement
Return the complement of a nucleotide object.
Definition: alphabet/nucleotide/concept.hpp:105
constexpr auto to_phred
The public getter function for the Phred representation of a quality score.
Definition: alphabet/quality/concept.hpp:100
constexpr auto assign_phred_to
Assign a Phred score to a quality alphabet object.
Definition: alphabet/quality/concept.hpp:230
constexpr auto assign_char_to
Assign a character to an alphabet object.
Definition: alphabet/concept.hpp:524
constexpr auto to_char
Return the char representation of an alphabet object.
Definition: alphabet/concept.hpp:386
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:169
constexpr auto assign_rank_to
Assign a rank to an alphabet object.
Definition: alphabet/concept.hpp:293
constexpr auto to_rank
Return the rank representation of a (semi-)alphabet object.
Definition: alphabet/concept.hpp:155
typename valid_template_spec_or< fallback_t, templ_t, spec_t... >::type valid_template_spec_or_t
Helper for seqan3::detail::valid_template_spec_or (transformation_trait shortcut).
Definition: template_inspection.hpp:222
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.
Resolves to std::is_assignable_v<t>.
Refines seqan3::alphabet and adds assignability.
A concept that indicates whether a writable alphabet represents quality scores.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
SeqAn specific customisations in the standard namespace.
Provides type traits for working with templates.
Provides concepts that do not have equivalents in C++20.