22namespace seqan3::detail
36enum struct advanceable_alignment_coordinate_state : uint8_t
61template <advanceable_alignment_coordinate_state state = advanceable_alignment_coordinate_state::none>
62class advanceable_alignment_coordinate
76 constexpr advanceable_alignment_coordinate() noexcept = default;
78 constexpr advanceable_alignment_coordinate(advanceable_alignment_coordinate const &) noexcept = default;
79 constexpr advanceable_alignment_coordinate(advanceable_alignment_coordinate &&) noexcept = default;
81 constexpr advanceable_alignment_coordinate & operator=(advanceable_alignment_coordinate const &) noexcept = default;
83 constexpr advanceable_alignment_coordinate & operator=(advanceable_alignment_coordinate &&) noexcept = default;
84 ~advanceable_alignment_coordinate() noexcept = default;
87 template <advanceable_alignment_coordinate_state other_state>
88 requires (other_state != state)
89 constexpr advanceable_alignment_coordinate(advanceable_alignment_coordinate<other_state> const & other) :
95 template <advanceable_alignment_coordinate_state other_state>
96 requires (other_state != state)
97 constexpr advanceable_alignment_coordinate(advanceable_alignment_coordinate<other_state> && other) :
98 first{std::move(other.first)},
99 second{std::move(other.second)}
106 constexpr advanceable_alignment_coordinate(column_index_type<size_t>
const c_idx,
107 row_index_type<size_t>
const r_idx) noexcept :
114 constexpr friend bool operator==(advanceable_alignment_coordinate
const & lhs,
115 advanceable_alignment_coordinate
const & rhs)
noexcept
120 constexpr friend bool operator!=(advanceable_alignment_coordinate
const & lhs,
121 advanceable_alignment_coordinate
const & rhs)
noexcept
126 constexpr friend bool operator<=(advanceable_alignment_coordinate
const & lhs,
127 advanceable_alignment_coordinate
const & rhs)
noexcept
132 constexpr friend bool operator<(advanceable_alignment_coordinate
const & lhs,
133 advanceable_alignment_coordinate
const & rhs)
noexcept
138 constexpr friend bool operator>=(advanceable_alignment_coordinate
const & lhs,
139 advanceable_alignment_coordinate
const & rhs)
noexcept
144 constexpr friend bool operator>(advanceable_alignment_coordinate
const & lhs,
145 advanceable_alignment_coordinate
const & rhs)
noexcept
161 constexpr advanceable_alignment_coordinate & operator++() noexcept
162 requires (state != advanceable_alignment_coordinate_state::none)
164 if constexpr (state == advanceable_alignment_coordinate_state::column)
174 constexpr advanceable_alignment_coordinate operator++(
int )
noexcept
175 requires (state != advanceable_alignment_coordinate_state::none)
177 advanceable_alignment_coordinate tmp{*
this};
185 constexpr advanceable_alignment_coordinate & operator--() noexcept
186 requires (state != advanceable_alignment_coordinate_state::none)
188 if constexpr (state == advanceable_alignment_coordinate_state::column)
198 constexpr advanceable_alignment_coordinate operator--(
int )
noexcept
199 requires (state != advanceable_alignment_coordinate_state::none)
201 advanceable_alignment_coordinate tmp{*
this};
210 constexpr advanceable_alignment_coordinate & operator+=(difference_type
const offset)
noexcept
211 requires (state != advanceable_alignment_coordinate_state::none)
213 if constexpr (state == advanceable_alignment_coordinate_state::column)
224 constexpr advanceable_alignment_coordinate & operator-=(difference_type
const offset)
noexcept
225 requires (state != advanceable_alignment_coordinate_state::none)
227 if constexpr (state == advanceable_alignment_coordinate_state::column)
238 constexpr advanceable_alignment_coordinate operator+(difference_type
const offset)
const noexcept
239 requires (state != advanceable_alignment_coordinate_state::none)
241 advanceable_alignment_coordinate tmp{*
this};
250 constexpr advanceable_alignment_coordinate operator-(difference_type
const offset)
const noexcept
251 requires (state != advanceable_alignment_coordinate_state::none)
253 advanceable_alignment_coordinate tmp{*
this};
262 constexpr difference_type operator-(advanceable_alignment_coordinate
const & other)
const noexcept
263 requires (state != advanceable_alignment_coordinate_state::none)
265 if constexpr (state == advanceable_alignment_coordinate_state::column)
266 return this->first - other.first;
268 return this->second - other.second;
278 constexpr friend advanceable_alignment_coordinate operator+(difference_type
const offset,
279 advanceable_alignment_coordinate
const & me)
noexcept
280 requires (state != advanceable_alignment_coordinate_state::none)
304template <auto state_t>
312 template <
typename stream_t>
313 constexpr void operator()(stream_t & stream, detail::advanceable_alignment_coordinate<state_t>
const arg)
const
315 stream <<
std::tie(arg.first, arg.second);
313 constexpr void operator()(stream_t & stream, detail::advanceable_alignment_coordinate<state_t>
const arg)
const {
…}
Provides seqan3::debug_stream and related types.
@ offset
Sequence (seqan3::field::seq) relative start position (0-based), unsigned value.
Provides seqan3::detail::matrix_index, seqan3::detail::matrix_coordinate and associated strong types.
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
Provides basic data structure for strong types.
constexpr void operator()(stream_t &stream, detail::advanceable_alignment_coordinate< state_t > const arg) const
The function call operator that prints the coordinate to the given stream.
Definition advanceable_alignment_coordinate.hpp:313
Definition default_printer.hpp:27
Provides type traits for working with templates.
Provides seqan3::debug_stream and related types.