18 namespace seqan3::detail
30 template <
typename id_t,
37 struct alignment_result_value_type
44 back_coord_t back_coordinate{};
46 front_coord_t front_coordinate{};
51 score_debug_matrix_t score_debug_matrix{};
53 trace_debug_matrix_t trace_debug_matrix{};
60 alignment_result_value_type()
62 -> alignment_result_value_type<std::nullopt_t *, std::nullopt_t *>;
65 template <
typename id_t,
typename score_t>
66 alignment_result_value_type(id_t, score_t)
67 -> alignment_result_value_type<id_t, score_t>;
70 template <
typename id_t,
typename score_t,
typename back_coord_t>
71 alignment_result_value_type(id_t, score_t, back_coord_t)
72 -> alignment_result_value_type<id_t, score_t, back_coord_t>;
75 template <
typename id_t,
typename score_t,
typename back_coord_t,
typename front_coord_t>
76 alignment_result_value_type(id_t, score_t, back_coord_t, front_coord_t)
77 -> alignment_result_value_type<id_t, score_t, back_coord_t, front_coord_t>;
80 template <
typename id_t,
typename score_t,
typename back_coord_t,
typename front_coord_t,
typename alignment_t>
81 alignment_result_value_type(id_t, score_t, back_coord_t, front_coord_t, alignment_t)
82 -> alignment_result_value_type<id_t, score_t, back_coord_t, front_coord_t, alignment_t>;
102 template <
typename alignment_result_traits>
104 requires detail::is_type_specialisation_of_v<alignment_result_traits, detail::alignment_result_value_type>
110 alignment_result_traits data;
116 using id_t = decltype(data.id);
119 using score_t = decltype(data.score);
121 using back_coord_t = decltype(data.back_coordinate);
123 using front_coord_t = decltype(data.front_coordinate);
125 using alignment_t = decltype(data.alignment);
154 constexpr id_t
id() const noexcept
156 static_assert(!std::is_same_v<id_t, std::nullopt_t *>,
157 "Identifier is not available but should.");
164 constexpr score_t
score() const noexcept
166 static_assert(!std::is_same_v<score_t, std::nullopt_t *>,
167 "Alignment score is not available but should.");
179 static_assert(!std::is_same_v<back_coord_t, std::nullopt_t *>,
180 "Trying to access the back coordinate, although it was not requested in the alignment "
182 return data.back_coordinate;
197 static_assert(!std::is_same_v<front_coord_t, std::nullopt_t *>,
198 "Trying to access the front coordinate, although it was not requested in the alignment "
200 return data.front_coordinate;
209 constexpr alignment_t
const &
alignment() const noexcept
211 static_assert(!std::is_same_v<alignment_t, std::nullopt_t *>,
212 "Trying to access the alignment, although it was not requested in the alignment configuration.");
213 return data.alignment;
229 constexpr
auto const & score_matrix() const noexcept
232 "Trying to access the score matrix, although it was not requested in the alignment configuration.");
233 return data.score_debug_matrix;
247 constexpr
auto const & trace_matrix() const noexcept
250 "Trying to access the trace matrix, although it was not requested in the alignment configuration.");
251 return data.trace_debug_matrix;