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>
56 template <
typename alphabet_t>
65 template <
typename alphabet_t>
67 std::forward<alphabet_t>(
alphabet).is_pair_open() ==
true
106inline constexpr auto is_pair_open = detail::adl_only::is_pair_open_cpo{};
114namespace seqan3::detail::adl_only
118template <
typename... args_t>
124struct is_pair_close_cpo :
public detail::customisation_point_object<is_pair_close_cpo, 2>
127 using base_t = detail::customisation_point_object<is_pair_close_cpo, 2>;
129 using base_t::base_t;
135 template <
typename alphabet_t>
144 template <
typename alphabet_t>
153 template <
typename alphabet_t>
155 std::forward<alphabet_t>(
alphabet).is_pair_close() ==
true
194inline constexpr auto is_pair_close = detail::adl_only::is_pair_close_cpo{};
202namespace seqan3::detail::adl_only
206template <
typename... args_t>
212struct is_unpaired_cpo :
public detail::customisation_point_object<is_unpaired_cpo, 2>
215 using base_t = detail::customisation_point_object<is_unpaired_cpo, 2>;
217 using base_t::base_t;
223 template <
typename alphabet_t>
232 template <
typename alphabet_t>
241 template <
typename alphabet_t>
243 std::forward<alphabet_t>(
alphabet).is_unpaired() ==
true
282inline constexpr auto is_unpaired = detail::adl_only::is_unpaired_cpo{};
290namespace seqan3::detail::adl_only
294template <
typename... args_t>
301template <
typename alphabet_t>
302struct max_pseudoknot_depth_cpo :
public detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>
305 using base_t = detail::customisation_point_object<max_pseudoknot_depth_cpo<alphabet_t>, 2>;
307 using base_t::base_t;
312 template <
typename alphabet_type>
313 using alphabet_or_type_identity =
315 && seqan3::is_constexpr_default_constructible_v<std::remove_cvref_t<alphabet_type>>,
322 template <
typename alphabet_type = alphabet_t>
336 template <
typename alphabet_type = alphabet_t>
344 template <
typename alphabet_type = alphabet_t>
394template <
typename alph_t>
397 detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}()
400inline constexpr auto max_pseudoknot_depth = detail::adl_only::max_pseudoknot_depth_cpo<alph_t>{}();
408namespace seqan3::detail::adl_only
412template <
typename... args_t>
417struct pseudoknot_id_cpo :
public detail::customisation_point_object<pseudoknot_id_cpo, 2>
420 using base_t = detail::customisation_point_object<pseudoknot_id_cpo, 2>;
422 using base_t::base_t;
428 template <
typename alphabet_t>
437 template <
typename alphabet_t>
446 template <
typename alphabet_t>
448 std::forward<alphabet_t>(
alphabet).pseudoknot_id()
489inline constexpr auto pseudoknot_id = detail::adl_only::pseudoknot_id_cpo{};
548 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:107
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:459
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:376
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: 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