26 namespace seqan3::detail::adl_only
30 template <
typename ...args_t>
36 struct is_pair_open_cpo :
public detail::customisation_point_object<is_pair_open_cpo, 2>
39 using base_t = detail::customisation_point_object<is_pair_open_cpo, 2>;
47 template <
typename alphabet_t>
57 template <
typename alphabet_t>
67 template <
typename alphabet_t>
70 std::forward<alphabet_t>(
alphabet).is_pair_open() ==
true
114 inline constexpr
auto is_pair_open = detail::adl_only::is_pair_open_cpo{};
123 namespace seqan3::detail::adl_only
127 template <
typename ...args_t>
133 struct is_pair_close_cpo :
public detail::customisation_point_object<is_pair_close_cpo, 2>
136 using base_t = detail::customisation_point_object<is_pair_close_cpo, 2>;
138 using base_t::base_t;
144 template <
typename alphabet_t>
154 template <
typename alphabet_t>
164 template <
typename alphabet_t>
167 std::forward<alphabet_t>(
alphabet).is_pair_close() ==
true
211 inline constexpr
auto is_pair_close = detail::adl_only::is_pair_close_cpo{};
220 namespace seqan3::detail::adl_only
224 template <
typename ...args_t>
230 struct is_unpaired_cpo :
public detail::customisation_point_object<is_unpaired_cpo, 2>
233 using base_t = detail::customisation_point_object<is_unpaired_cpo, 2>;
235 using base_t::base_t;
241 template <
typename alphabet_t>
251 template <
typename alphabet_t>
261 template <
typename alphabet_t>
264 std::forward<alphabet_t>(
alphabet).is_unpaired() ==
true
308 inline constexpr
auto is_unpaired = detail::adl_only::is_unpaired_cpo{};
317 namespace seqan3::detail::adl_only
321 template <
typename ...args_t>
328 template <
typename alphabet_t>
329 struct max_pseudoknot_depth_cpo :
public detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>
332 using base_t = detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>;
334 using base_t::base_t;
339 template <
typename alphabet_type>
340 using alphabet_or_type_identity
342 seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
349 template <
typename alphabet_type = alphabet_t>
364 template <
typename alphabet_type = alphabet_t>
373 template <
typename alphabet_type = alphabet_t>
380 #if SEQAN3_WORKAROUND_GCC_89953
381 template <
typename alph_t>
382 requires requires { { max_pseudoknot_depth_cpo<alph_t>{} }; }
383 inline constexpr
auto max_pseudoknot_depth_obj = max_pseudoknot_depth_cpo<alph_t>{};
435 #if SEQAN3_WORKAROUND_GCC_89953
436 template <
typename alph_t>
438 requires requires { { detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{} }; } &&
439 requires { { detail::adl_only::max_pseudoknot_depth_obj<alph_t>() }; }
441 inline constexpr
auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_obj<alph_t>();
443 template <
typename alph_t>
445 requires requires { { detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}() }; }
447 inline constexpr
auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}();
456 namespace seqan3::detail::adl_only
460 template <
typename ...args_t>
465 struct pseudoknot_id_cpo :
public detail::customisation_point_object<pseudoknot_id_cpo, 2>
468 using base_t = detail::customisation_point_object<pseudoknot_id_cpo, 2>;
470 using base_t::base_t;
476 template <
typename alphabet_t>
486 template <
typename alphabet_t>
496 template <
typename alphabet_t>
499 std::forward<alphabet_t>(
alphabet).pseudoknot_id()
545 inline constexpr
auto pseudoknot_id = detail::adl_only::pseudoknot_id_cpo{};
589 template <
typename t>
598 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:113
constexpr auto is_unpaired
Check whether the given character represents an unpaired nucleotide in an RNA structure.
Definition: concept.hpp:281
constexpr auto pseudoknot_id
Retrieve an id for the level of a pseudoknotted interaction (also known as 'page number').
Definition: concept.hpp:500
constexpr auto is_pair_close
Check whether the given character represents a leftward interaction in an RNA structure.
Definition: concept.hpp:193
constexpr auto max_pseudoknot_depth
A type trait that holds the ability of the structure alphabet to represent pseudoknots,...
Definition: concept.hpp:411
constexpr auto is_pair_open
Check whether the given character represents a rightward interaction in an RNA structure.
Definition: concept.hpp:105
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:29
A type that can be specialised to provide customisation point implementations so that third party typ...
Definition: concept.hpp:49
Provides C++20 additions to the type_traits header.