47 #include <seqan3/alphabet/adaptation/pre.hpp> 103 alphabet_size<std::remove_reference_t<t>>::value;
104 alphabet_size_v<std::remove_reference_t<t>>;
107 {
to_rank(t1) } -> underlying_rank_t<std::remove_reference_t<t>>;
110 {
assign_rank(t1, 0) } -> std::remove_reference_t<t> &;
111 {
assign_rank(std::remove_reference_t<t>{}, 0) } -> std::remove_reference_t<t> &&;
148 template <
typename t>
149 concept alphabet_concept = semi_alphabet_concept<t> && requires (t t1, t t2)
152 {
to_char(t1) } -> underlying_char_t<std::remove_reference_t<t>>;
155 {
assign_char(t1, 0) } -> std::remove_reference_t<t> &;
156 {
assign_char(std::remove_reference_t<t>{}, 0) } -> std::remove_reference_t<t> &&;
183 template <cereal_output_archive_concept archive_t, semi_alphabet_concept alphabet_t>
184 underlying_rank_t<alphabet_t> CEREAL_SAVE_MINIMAL_FUNCTION_NAME(archive_t
const &, alphabet_t
const & l)
202 template <cereal_input_archive_concept archive_t,
typename wrapped_alphabet_t>
203 void CEREAL_LOAD_MINIMAL_FUNCTION_NAME(archive_t
const &,
204 wrapped_alphabet_t && l,
205 underlying_rank_t<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>>
const & r)
206 requires semi_alphabet_concept<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>>
208 assign_rank(
static_cast<detail::strip_cereal_wrapper_t<wrapped_alphabet_t>&&
>(l), r);
235 template <
typename t>
237 concept constexpr_semi_alphabet_concept = semi_alphabet_concept<t> && requires
263 template <
typename t>
265 concept constexpr_alphabet_concept = constexpr_semi_alphabet_concept<t> &&
266 alphabet_concept<t> &&
272 underlying_char_t<std::remove_reference_t<t>>{}));
Provides concepts for core language types and relations that don't have concepts in C++20 (yet)...
Free function/metafunction wrappers for alphabets with member functions/types.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:58
seqan3::alphabet_concept metafunction base classes.
Subsumes std::Semiregular and std::EqualityComparable.
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
Provides various metafunctions for use on functions.
Adaptions of concepts from the Cereal library.
Definition: aligned_sequence_concept.hpp:288
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
Provides overloads for std::hash.
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 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
Requires std::EqualityComparable and all remaing comparison operators (<, <=, >, >=).