Loading...
Searching...
No Matches
trace_iterator.hpp
Go to the documentation of this file.
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: BSD-3-Clause
#pragma once
#include <seqan3/alignment/matrix/detail/trace_iterator_base.hpp>
namespace seqan3::detail
{
template <two_dimensional_matrix_iterator matrix_iter_t>
class trace_iterator : public trace_iterator_base<trace_iterator<matrix_iter_t>, matrix_iter_t>
{
private:
static_assert(std::same_as<std::iter_value_t<matrix_iter_t>, trace_directions>,
"Value type of the underlying iterator must be trace_directions.");
using base_t = trace_iterator_base<trace_iterator<matrix_iter_t>, matrix_iter_t>;
public:
constexpr trace_iterator() = default;
constexpr trace_iterator(trace_iterator const &) = default;
constexpr trace_iterator(trace_iterator &&) = default;
constexpr trace_iterator & operator=(trace_iterator const &) = default;
constexpr trace_iterator & operator=(trace_iterator &&) = default;
~trace_iterator() = default;
explicit constexpr trace_iterator(matrix_iter_t const matrix_iter) noexcept : base_t{matrix_iter}
{}
template <two_dimensional_matrix_iterator other_matrix_iter_t>
requires std::constructible_from<matrix_iter_t, other_matrix_iter_t>
constexpr trace_iterator(trace_iterator<other_matrix_iter_t> const other) noexcept : base_t{other}
{}
};
} // namespace seqan3::detail
trace_iterator_base.hpp
Provides seqan3::detail::trace_iterator_base.
Hide me