68 template <
typename output_type_list_t>
70 :
public detail::transfer_template_args_onto_t<output_type_list_t, std::tuple>
74 static_assert(meta::size<output_type_list_t>::value >= 2,
75 "Logic error: This class requires at least a type list with two template arguments " 76 "for the id and the alignment score");
79 using base_type = detail::transfer_template_args_onto_t<output_type_list_t, std::tuple>;
82 using base_type::base_type;
89 constexpr std::tuple_element_t<0, base_type> id() const noexcept
92 return std::get<0>(*this);
96 constexpr std::tuple_element_t<1, base_type>
score() const noexcept
98 return std::get<1>(*this);
104 constexpr decltype(
auto) end_coordinate() const & noexcept
106 if constexpr (std::tuple_size_v<base_type> < 3)
109 return std::get<2>(*this);
113 constexpr decltype(
auto) end_coordinate() const && noexcept
115 if constexpr (std::tuple_size_v<base_type> < 3)
118 return std::move(std::get<2>(std::move(*
this)));
124 constexpr decltype(
auto) begin_coordinate() const & noexcept
126 if constexpr (std::tuple_size_v<base_type> < 4)
129 return std::get<3>(*this);
133 constexpr decltype(
auto) begin_coordinate() const && noexcept
135 if constexpr (std::tuple_size_v<base_type> < 4)
138 return std::move(std::get<3>(std::move(*
this)));
144 constexpr decltype(
auto) trace() const & noexcept
146 if constexpr (std::tuple_size_v<base_type> < 5)
149 return std::get<4>(*this);
153 constexpr decltype(
auto) trace() const && noexcept
155 if constexpr (std::tuple_size_v<base_type> < 5)
158 return std::move(std::get<4>(std::move(*
this)));
174 template <align_result_key e,
typename output_type_list_t>
177 constexpr
size_t index =
static_cast<uint8_t
>(e);
180 "Element access error: index out of range.");
181 return std::get<index>(align_res);
185 template <align_result_key e,
typename output_type_list_t>
188 constexpr
size_t index =
static_cast<uint8_t
>(e);
191 "Element access error: index out of range.");
192 return std::get<index>(align_res);
196 template <align_result_key e,
typename output_type_list_t>
199 constexpr
size_t index =
static_cast<uint8_t
>(e);
202 "Element access error: index out of range.");
203 return std::get<index>(std::move(align_res));
207 template <align_result_key e,
typename output_type_list_t>
210 constexpr
size_t index =
static_cast<uint8_t
>(e);
213 "Element access error: index of range.");
216 return std::move(std::get<index>(std::move(align_res)));
227 template <
size_t idx,
typename output_type_list_t>
228 struct tuple_element<idx,
seqan3::align_result<output_type_list_t>>
231 using type = std::tuple_element_t<idx, typename seqan3::align_result<output_type_list_t>::base_type>;
237 template <
typename output_type_list_t>
238 struct tuple_size<
seqan3::align_result<output_type_list_t>>
241 static constexpr
size_t value = std::tuple_size_v<typename seqan3::align_result<output_type_list_t>::base_type>;
constexpr std::tuple_element_t< 1, base_type > score() const noexcept
Returns the score.
Definition: align_result.hpp:96
Provides seqan3::type_list and auxiliary metafunctions.
SeqAn specific customisations in the standard namespace.
Definition: align_result.hpp:221
std::tuple_element_t< idx, typename seqan3::align_result< output_type_list_t >::base_type > type
The element type at the given position.
Definition: align_result.hpp:231
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:58
Stores the alignment results and offers a tuple-like interface.
Definition: align_result.hpp:69
detail::transfer_template_args_onto_t< output_type_list_t, std::tuple > base_type
The base tuple type.
Definition: align_result.hpp:79
align_result_key
Keys for different alignment results.
Definition: align_result.hpp:54