57 #include <meta/meta.hpp> 68 using char_adaptations = meta::list<char,
74 using char_adaptations_rank_types = meta::list<std::uint_least8_t,
80 template <
typename type_in_list>
82 requires meta::in<char_adaptations, type_in_list>::value
84 struct is_char_adaptation<type_in_list> :
106 template <
typename char_type>
108 requires detail::is_char_adaptation_v<char_type>
121 template <
typename char_type>
123 requires detail::is_char_adaptation_v<char_type>
128 using type = meta::at<detail::char_adaptations_rank_types,
129 meta::find_index<detail::char_adaptations, char_type>>;
141 template <
typename char_type>
143 requires detail::is_char_adaptation_v<char_type>
148 using type = detail::min_viable_uint_t<static_cast<uint64_t>(std::numeric_limits<char_type>::max()) + 1 -
149 std::numeric_limits<char_type>::lowest()>;
151 static constexpr type value =
152 static_cast<type
>(std::numeric_limits<char_type>::max()) + 1 - std::numeric_limits<char_type>::lowest();
170 template <
typename char_type>
172 requires detail::is_char_adaptation_v<char_type>
182 template <
typename char_type>
184 requires detail::is_char_adaptation_v<char_type>
195 template <
typename char_type>
197 requires detail::is_char_adaptation_v<char_type>
208 template <
typename char_type>
210 requires detail::is_char_adaptation_v<std::remove_reference_t<char_type>>
212 return std::move(chr = chr2);
221 template <
typename char_type>
223 requires detail::is_char_adaptation_v<char_type>
234 template <
typename char_type>
236 requires detail::is_char_adaptation_v<std::remove_reference_t<char_type>>
238 return std::move(chr = rank);
constexpr char_type && assign_rank(char_type &&chr, underlying_rank_t< char_type > const rank) requires detail
Assigning a rank to a char is the same as assigning it a numeric value.
Definition: char.hpp:235
The rank_type of the semi_alphabet. [type metafunction base template].
Definition: concept_pre.hpp:80
typename underlying_rank< semi_alphabet_type >::type underlying_rank_t
The rank_type of the semi_alphabet. [type metafunction shortcut].
Definition: concept_pre.hpp:88
Contains metaprogramming utilities for integer types.
constexpr underlying_char_t< char_type > to_char(char_type const chr) requires detail
Converting char to char is no-op (it will just return the value you pass in).
Definition: char.hpp:171
constexpr char_type & assign_char(char_type &chr, underlying_char_t< char_type > const chr2) requires detail
Assign a char to the char type (same as calling =).
Definition: char.hpp:196
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:58
seqan3::alphabet_concept metafunction base classes.
constexpr underlying_rank_t< char_type > to_rank(char_type const chr) requires detail
Convert char to rank by casting to an unsigned integral type of same size.
Definition: char.hpp:183
detail::min_viable_uint_t< static_cast< uint64_t >(std::numeric_limits< char_type >::max())+1 - std::numeric_limits< char_type >::lowest()> type
Smallest unsigned integral type that can hold value;.
Definition: char.hpp:149
constexpr char_type && assign_char(char_type &&chr, underlying_char_t< char_type > const chr2) requires detail
Assign a char to the char type (same as calling =).
Definition: char.hpp:209
char_type type
The same type as char_type.
Definition: char.hpp:113
constexpr char_type & assign_rank(char_type &chr, underlying_rank_t< char_type > const rank) requires detail
Assigning a rank to a char is the same as assigning it a numeric value.
Definition: char.hpp:222
The size of the alphabet. [value metafunction base template].
Definition: concept_pre.hpp:104
Definition: aligned_sequence_concept.hpp:288
meta::at< detail::char_adaptations_rank_types, meta::find_index< detail::char_adaptations, char_type > > type
An unsigned integer type of the same size as char_type.
Definition: char.hpp:129
The char_type of the alphabet. [type metafunction base template].
Definition: concept_pre.hpp:164
typename underlying_char< alphabet_type >::type underlying_char_t
The char_type of the alphabet. [type metafunction shortcut].
Definition: concept_pre.hpp:172