66 template <
typename alphabet_type_with_members>
68 requires requires (alphabet_type_with_members alph) {
typename alphabet_type_with_members::rank_type; }
73 using type =
typename alphabet_type_with_members::rank_type;
81 template <
typename alphabet_type_with_members>
83 requires requires (alphabet_type_with_members alph) { alphabet_type_with_members::value_size; }
88 static auto constexpr value = alphabet_type_with_members::value_size;
96 template <
typename alphabet_type>
97 constexpr underlying_rank_t<alphabet_type>
to_rank(alphabet_type
const alph)
98 requires requires (alphabet_type alph) { { alph.to_rank() } -> underlying_rank_t<alphabet_type>; }
100 return alph.to_rank();
109 template <
typename alphabet_type>
110 constexpr alphabet_type &
assign_rank(alphabet_type & alph, underlying_rank_t<alphabet_type>
const rank)
111 requires requires (alphabet_type alph) { { alph.assign_rank(uint8_t{0}) } -> alphabet_type &; }
113 return alph.assign_rank(rank);
127 template <
typename alphabet_type>
128 constexpr alphabet_type &&
assign_rank(alphabet_type && alph, underlying_rank_t<alphabet_type>
const rank)
129 requires requires (alphabet_type alph) { { alph.assign_rank(uint8_t{0}) } -> alphabet_type &; }
131 return std::move(alph.assign_rank(rank));
149 template <
typename alphabet_type_with_members>
151 requires requires (alphabet_type_with_members alph) {
typename alphabet_type_with_members::char_type; }
156 using type =
typename alphabet_type_with_members::char_type;
164 template <
typename alphabet_type>
165 constexpr underlying_char_t<alphabet_type>
to_char(alphabet_type
const alph)
166 requires requires (alphabet_type alph) { { alph.to_char() } -> underlying_char_t<alphabet_type>; }
168 return alph.to_char();
177 template <
typename alphabet_type>
178 constexpr alphabet_type &
assign_char(alphabet_type & alph, underlying_char_t<alphabet_type>
const chr)
179 requires requires (alphabet_type alph) { { alph.assign_char(
char{0}) } -> alphabet_type &; }
181 return alph.assign_char(chr);
195 template <
typename alphabet_type>
196 constexpr alphabet_type &&
assign_char(alphabet_type && alph, underlying_char_t<alphabet_type>
const chr)
197 requires requires (alphabet_type alph) { { alph.assign_char(
char{0}) } -> alphabet_type &; }
199 return std::move(alph.assign_char(chr));
219 template <
typename nucleot
ide_type>
220 constexpr nucleotide_type
complement(nucleotide_type
const alph)
221 requires requires (nucleotide_type alph) { { alph.complement() } -> nucleotide_type; }
223 return alph.complement();
245 template <
typename structure_type>
247 requires requires (structure_type alph) { { alph.is_pair_open() } -> bool; }
249 return alph.is_pair_open();
258 template <
typename structure_type>
260 requires requires (structure_type alph) { { alph.is_pair_close() } -> bool; }
262 return alph.is_pair_close();
271 template <
typename structure_type>
273 requires requires (structure_type alph) { { alph.is_unpaired() } -> bool; }
275 return alph.is_unpaired();
282 template <
typename alphabet_type_with_pseudoknot_attribute>
284 requires requires (alphabet_type_with_pseudoknot_attribute)
285 { { alphabet_type_with_pseudoknot_attribute::max_pseudoknot_depth } -> uint8_t; }
290 static constexpr uint8_t value = alphabet_type_with_pseudoknot_attribute::max_pseudoknot_depth;
301 template<
typename alphabet_type_with_pseudoknot_attribute>
302 constexpr std::optional<uint8_t>
pseudoknot_id(alphabet_type_with_pseudoknot_attribute
const alph)
304 requires requires(alphabet_type_with_pseudoknot_attribute)
305 { { alphabet_type_with_pseudoknot_attribute::max_pseudoknot_depth } -> uint8_t; }
308 if constexpr (alphabet_type_with_pseudoknot_attribute::max_pseudoknot_depth > 1)
309 return alph.pseudoknot_id();
310 else if (is_pair_open(alph) || is_pair_close(alph))
The rank_type of the semi_alphabet. [type metafunction base template].
Definition: concept_pre.hpp:80
constexpr nucleotide_type complement(nucleotide_type const alph) requires requires(nucleotide_type alph)
Implementation of seqan3::nucleotide_concept::complement() that delegates to a member function...
Definition: member_exposure.hpp:220
typename alphabet_type_with_members::char_type type
The forwarded char_type.
Definition: member_exposure.hpp:156
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:58
seqan3::alphabet_concept metafunction base classes.
constexpr alphabet_type & assign_rank(alphabet_type &alph, underlying_rank_t< alphabet_type > const rank) requires requires(alphabet_type alph)
Implementation of seqan3::semi_alphabet_concept::assign_rank() that delegates to a member function...
Definition: member_exposure.hpp:110
constexpr bool is_unpaired(structure_type const alph) requires requires(structure_type alph)
Implementation of seqan3::rna_structure_concept::is_unpaired() that delegates to a member function...
Definition: member_exposure.hpp:272
typename alphabet_type_with_members::rank_type type
The forwarded rank_type.
Definition: member_exposure.hpp:73
The size of the alphabet. [value metafunction base template].
Definition: concept_pre.hpp:104
Metafunction that indicates to what extent an alphabet can handle pseudoknots. [value metafunction ba...
Definition: concept_pre.hpp:228
constexpr bool is_pair_close(structure_type const alph) requires requires(structure_type alph)
Implementation of seqan3::rna_structure_concept::is_pair_close() that delegates to a member function...
Definition: member_exposure.hpp:259
constexpr alphabet_type & assign_char(alphabet_type &alph, underlying_char_t< alphabet_type > const chr) requires requires(alphabet_type alph)
Implementation of seqan3::alphabet_concept::assign_char() that delegates to a member function...
Definition: member_exposure.hpp:178
The char_type of the alphabet. [type metafunction base template].
Definition: concept_pre.hpp:164
constexpr underlying_rank_t< alphabet_type > to_rank(alphabet_type const alph) requires requires(alphabet_type alph)
Implementation of seqan3::semi_alphabet_concept::to_rank() that delegates to a member function...
Definition: member_exposure.hpp:97
constexpr std::optional< uint8_t > pseudoknot_id(alphabet_type_with_pseudoknot_attribute const alph)
Implementation of seqan3::rna_structure_concept::pseudoknot_id() that delegates to a member function...
Definition: member_exposure.hpp:302
constexpr underlying_char_t< alphabet_type > to_char(alphabet_type const alph) requires requires(alphabet_type alph)
Implementation of seqan3::alphabet_concept::to_char() that delegates to a member function.
Definition: member_exposure.hpp:165
constexpr bool is_pair_open(structure_type const alph) requires requires(structure_type alph)
Implementation of seqan3::rna_structure_concept::is_pair_open() that delegates to a member function...
Definition: member_exposure.hpp:246