SeqAn3  3.0.1
The Modern C++ library for sequence analysis.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
two_dimensional_matrix_iterator_concept.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
4 // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5 // shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6 // -----------------------------------------------------------------------------------------------------
7 
13 #pragma once
14 
15 #include <type_traits>
16 
18 #include <seqan3/std/concepts>
19 #include <seqan3/std/iterator>
20 
21 namespace seqan3::detail
22 {
23 
91 template <typename iter_t>
94 SEQAN3_CONCEPT two_dimensional_matrix_iterator =
95  std::random_access_iterator<iter_t> &&
96  requires(std::remove_reference_t<iter_t> it, std::remove_reference_t<iter_t> const cit, matrix_offset offset)
97  {
98  { it += offset };
99  { it + offset };
100  { offset + it };
101  { cit + offset };
102  { offset + cit };
103  { it -= offset };
104  { it - offset };
105  { cit - offset };
106  { it.coordinate() };
107  { cit.coordinate() };
108 
109  requires std::same_as<decltype(it += offset), std::remove_reference_t<iter_t> &>;
110  requires std::same_as<decltype(it + offset), std::remove_reference_t<iter_t>>;
111  requires std::same_as<decltype(offset + it), std::remove_reference_t<iter_t>>;
112  requires std::same_as<decltype(it -= offset), std::remove_reference_t<iter_t> &>;
113  requires std::same_as<decltype(it - offset), std::remove_reference_t<iter_t>>;
114  requires std::same_as<decltype(cit - offset), std::remove_reference_t<iter_t>>;
115  requires std::same_as<decltype(it.coordinate()), matrix_coordinate>;
116  requires std::same_as<decltype(cit.coordinate()), matrix_coordinate>;
117  };
119 } // namespace seqan3::detail
matrix_coordinate.hpp
Provides seqan3::detail::alignment_coordinate and associated strong types.
seqan3::field::offset
Sequence (SEQ) relative start position (0-based), unsigned value.
iterator
Provides C++20 additions to the <iterator> header.
concepts
The Concepts library.
same_as
The concept std::same_as<T, U> is satisfied if and only if T and U denote the same type.
std::remove_reference_t