16 #include <type_traits>
37 namespace seqan3::detail
45 template <std::ranges::forward_range first_range_t,
46 std::ranges::forward_range second_range_t,
47 typename configuration_t>
49 requires is_type_specialisation_of_v<std::remove_cvref_t<configuration_t>, configuration>
51 struct align_result_selector
55 using traits_type = alignment_configuration_traits<configuration_t>;
57 using score_type =
typename alignment_configuration_traits<
62 using debug_score_matrix_type = two_dimensional_matrix<std::optional<score_type>,
64 matrix_major_order::column>;
66 using debug_trace_matrix_type = two_dimensional_matrix<std::optional<trace_directions>,
68 matrix_major_order::column>;
72 using configured_end_position_type =
std::conditional_t<traits_type::compute_end_positions,
76 using configured_begin_position_type =
std::conditional_t<traits_type::compute_begin_positions,
80 using configured_alignment_type =
typename lazy_conditional_t<traits_type::compute_sequence_alignment,
81 lazy<make_pairwise_alignment_type,
93 debug_score_matrix_type,
97 using configured_debug_trace_matrix_type =
99 debug_trace_matrix_type,
104 using type = alignment_result_value_type<configured_sequence1_id_type,
105 configured_sequence2_id_type,
106 configured_score_type,
107 configured_end_position_type,
108 configured_begin_position_type,
109 configured_alignment_type,
110 configured_debug_score_matrix_type,
111 configured_debug_trace_matrix_type>;