Loading...
Searching...
No Matches
two_dimensional_matrix_iterator_concept.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 <concepts>
#include <iterator>
#include <type_traits>
#include <seqan3/alignment/matrix/detail/matrix_coordinate.hpp>
namespace seqan3::detail
{
template <typename iter_t>
concept two_dimensional_matrix_iterator =
std::random_access_iterator<iter_t>
&& requires (std::remove_reference_t<iter_t> it, std::remove_reference_t<iter_t> const cit, matrix_offset offset) {
{ it += offset };
{ it + offset };
{ offset + it };
{ cit + offset };
{ offset + cit };
{ it -= offset };
{ it - offset };
{ cit - offset };
{ it.coordinate() };
{ cit.coordinate() };
{ it += offset } -> std::same_as<std::remove_reference_t<iter_t> &>;
{ it + offset } -> std::same_as<std::remove_reference_t<iter_t>>;
{ offset + it } -> std::same_as<std::remove_reference_t<iter_t>>;
{ it -= offset } -> std::same_as<std::remove_reference_t<iter_t> &>;
{ it - offset } -> std::same_as<std::remove_reference_t<iter_t>>;
{ cit - offset } -> std::same_as<std::remove_reference_t<iter_t>>;
{ it.coordinate() } -> std::same_as<matrix_coordinate>;
{ cit.coordinate() } -> std::same_as<matrix_coordinate>;
};
// Workaround for https://github.com/doxygen/doxygen/issues/9379
#if SEQAN3_DOXYGEN_ONLY(1) 0
template <typename iter_t>
class two_dimensional_matrix_iterator
{};
#endif
} // namespace seqan3::detail
seqan3::field::offset
@ offset
Sequence (seqan3::field::seq) relative start position (0-based), unsigned value.
Definition record.hpp:66
iterator
matrix_coordinate.hpp
Provides seqan3::detail::matrix_index, seqan3::detail::matrix_coordinate and associated strong types.
type_traits
Hide me