23namespace seqan3::detail::adl_only
27template <
typename... args_t>
33struct is_pair_open_cpo :
public detail::customisation_point_object<is_pair_open_cpo, 2>
36 using base_t = detail::customisation_point_object<is_pair_open_cpo, 2>;
44 template <
typename alphabet_t>
53 template <
typename alphabet_t>
62 template <
typename alphabet_t>
64 std::forward<alphabet_t>(
alphabet).is_pair_open() ==
true
103inline constexpr auto is_pair_open = detail::adl_only::is_pair_open_cpo{};
111namespace seqan3::detail::adl_only
115template <
typename... args_t>
121struct is_pair_close_cpo :
public detail::customisation_point_object<is_pair_close_cpo, 2>
124 using base_t = detail::customisation_point_object<is_pair_close_cpo, 2>;
126 using base_t::base_t;
132 template <
typename alphabet_t>
141 template <
typename alphabet_t>
150 template <
typename alphabet_t>
152 std::forward<alphabet_t>(
alphabet).is_pair_close() ==
true
191inline constexpr auto is_pair_close = detail::adl_only::is_pair_close_cpo{};
199namespace seqan3::detail::adl_only
203template <
typename... args_t>
209struct is_unpaired_cpo :
public detail::customisation_point_object<is_unpaired_cpo, 2>
212 using base_t = detail::customisation_point_object<is_unpaired_cpo, 2>;
214 using base_t::base_t;
220 template <
typename alphabet_t>
229 template <
typename alphabet_t>
238 template <
typename alphabet_t>
240 std::forward<alphabet_t>(
alphabet).is_unpaired() ==
true
279inline constexpr auto is_unpaired = detail::adl_only::is_unpaired_cpo{};
287namespace seqan3::detail::adl_only
291template <
typename... args_t>
298template <
typename alphabet_t>
299struct max_pseudoknot_depth_cpo :
public detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>
302 using base_t = detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>;
304 using base_t::base_t;
309 template <
typename alphabet_type>
310 using alphabet_or_type_identity =
312 && seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
319 template <
typename alphabet_type = alphabet_t>
333 template <
typename alphabet_type = alphabet_t>
341 template <
typename alphabet_type = alphabet_t>
391template <
typename alph_t>
393 { detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}() };
395inline constexpr auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}();
403namespace seqan3::detail::adl_only
407template <
typename... args_t>
412struct pseudoknot_id_cpo :
public detail::customisation_point_object<pseudoknot_id_cpo, 2>
415 using base_t = detail::customisation_point_object<pseudoknot_id_cpo, 2>;
417 using base_t::base_t;
423 template <
typename alphabet_t>
432 template <
typename alphabet_t>
441 template <
typename alphabet_t>
443 std::forward<alphabet_t>(
alphabet).pseudoknot_id()
484inline constexpr auto pseudoknot_id = detail::adl_only::pseudoknot_id_cpo{};
535 requires seqan3::max_pseudoknot_depth<t> > 0;
Core alphabet concept and free function/type trait wrappers.
Helper utilities for defining customisation point objects (CPOs).
#define SEQAN3_CPO_OVERLOAD(...)
A macro that helps to define a seqan3::detail::customisation_point_object.
Definition customisation_point.hpp:104
constexpr auto is_unpaired
Check whether the given character represents an unpaired nucleotide in an RNA structure.
Definition alphabet/structure/concept.hpp:261
constexpr auto pseudoknot_id
Retrieve an id for the level of a pseudoknotted interaction (also known as 'page number').
Definition alphabet/structure/concept.hpp:454
constexpr auto is_pair_close
Check whether the given character represents a leftward interaction in an RNA structure.
Definition alphabet/structure/concept.hpp:179
constexpr auto max_pseudoknot_depth
A type trait that holds the ability of the structure alphabet to represent pseudoknots,...
Definition alphabet/structure/concept.hpp:371
constexpr auto is_pair_open
Check whether the given character represents a rightward interaction in an RNA structure.
Definition alphabet/structure/concept.hpp:97
The generic alphabet concept that covers most data types used in ranges.
A concept that indicates whether an alphabet represents RNA structure.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
A type that can be specialised to provide customisation point implementations so that third party typ...
Definition alphabet/concept.hpp:46