26namespace seqan3::detail::adl_only
30template <
typename ...args_t>
36struct 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
109inline constexpr auto is_pair_open = detail::adl_only::is_pair_open_cpo{};
117namespace seqan3::detail::adl_only
121template <
typename ...args_t>
127struct is_pair_close_cpo :
public detail::customisation_point_object<is_pair_close_cpo, 2>
130 using base_t = detail::customisation_point_object<is_pair_close_cpo, 2>;
132 using base_t::base_t;
138 template <
typename alphabet_t>
148 template <
typename alphabet_t>
158 template <
typename alphabet_t>
161 std::forward<alphabet_t>(
alphabet).is_pair_close() ==
true
200inline constexpr auto is_pair_close = detail::adl_only::is_pair_close_cpo{};
208namespace seqan3::detail::adl_only
212template <
typename ...args_t>
218struct is_unpaired_cpo :
public detail::customisation_point_object<is_unpaired_cpo, 2>
221 using base_t = detail::customisation_point_object<is_unpaired_cpo, 2>;
223 using base_t::base_t;
229 template <
typename alphabet_t>
239 template <
typename alphabet_t>
249 template <
typename alphabet_t>
252 std::forward<alphabet_t>(
alphabet).is_unpaired() ==
true
291inline constexpr auto is_unpaired = detail::adl_only::is_unpaired_cpo{};
299namespace seqan3::detail::adl_only
303template <
typename ...args_t>
310template <
typename alphabet_t>
311struct max_pseudoknot_depth_cpo :
public detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>
314 using base_t = detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>;
316 using base_t::base_t;
321 template <
typename alphabet_type>
322 using alphabet_or_type_identity
324 seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
331 template <
typename alphabet_type = alphabet_t>
346 template <
typename alphabet_type = alphabet_t>
355 template <
typename alphabet_type = alphabet_t>
362#if SEQAN3_WORKAROUND_GCC_89953
363template <
typename alph_t>
364 requires requires { { max_pseudoknot_depth_cpo<alph_t>{} }; }
365inline constexpr auto max_pseudoknot_depth_obj = max_pseudoknot_depth_cpo<alph_t>{};
412#if SEQAN3_WORKAROUND_GCC_89953
413template <
typename alph_t>
415 requires requires { { detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{} }; } &&
416 requires { { detail::adl_only::max_pseudoknot_depth_obj<alph_t>() }; }
418inline constexpr auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_obj<alph_t>();
420template <
typename alph_t>
422 requires requires { { detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}() }; }
424inline constexpr auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}();
433namespace seqan3::detail::adl_only
437template <
typename ...args_t>
442struct pseudoknot_id_cpo :
public detail::customisation_point_object<pseudoknot_id_cpo, 2>
445 using base_t = detail::customisation_point_object<pseudoknot_id_cpo, 2>;
447 using base_t::base_t;
453 template <
typename alphabet_t>
463 template <
typename alphabet_t>
473 template <
typename alphabet_t>
476 std::forward<alphabet_t>(
alphabet).pseudoknot_id()
517inline constexpr auto pseudoknot_id = detail::adl_only::pseudoknot_id_cpo{};
569 requires seqan3::max_pseudoknot_depth<t> > 0;
Core alphabet concept and free function/type trait wrappers.
The <concepts> header from C++20's standard library.
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:102
constexpr auto is_unpaired
Check whether the given character represents an unpaired nucleotide in an RNA structure.
Definition: concept.hpp:264
constexpr auto pseudoknot_id
Retrieve an id for the level of a pseudoknotted interaction (also known as 'page number').
Definition: concept.hpp:472
constexpr auto is_pair_close
Check whether the given character represents a leftward interaction in an RNA structure.
Definition: concept.hpp:182
constexpr auto max_pseudoknot_depth
A type trait that holds the ability of the structure alphabet to represent pseudoknots,...
Definition: concept.hpp:388
constexpr auto is_pair_open
Check whether the given character represents a rightward interaction in an RNA structure.
Definition: concept.hpp:100
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: cigar_operation_table.hpp:2
A type that can be specialised to provide customisation point implementations so that third party typ...
Definition: concept.hpp:49
The <type_traits> header from C++20's standard library.