SeqAn3
3.4.0
The Modern C++ library for sequence analysis.
Toggle main menu visibility
Loading...
Searching...
No Matches
out_file_iterator.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
2
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
3
// SPDX-License-Identifier: BSD-3-Clause
4
9
10
#pragma once
11
12
#include <
cassert
>
13
#include <ranges>
14
15
#include <
seqan3/core/platform.hpp
>
16
17
namespace
seqan3::detail
18
{
19
42
template
<
typename
file_type>
43
class
out_file_iterator
44
{
45
static_assert
(!
std::is_const_v<file_type>
,
46
"You cannot iterate over const files, because the iterator changes the file."
);
47
48
public
:
53
55
using
value_type = void;
57
using
reference = void;
59
using
const_reference = void;
61
using
size_type = void;
63
using
difference_type = std::ptrdiff_t;
65
using
pointer =
void
*;
67
using
iterator_category = std::output_iterator_tag;
69
74
constexpr
out_file_iterator() =
default
;
76
constexpr
out_file_iterator(out_file_iterator
const
&) =
default
;
78
constexpr
out_file_iterator & operator=(out_file_iterator
const
&) =
default
;
80
constexpr
out_file_iterator(out_file_iterator &&) =
default
;
82
constexpr
out_file_iterator & operator=(out_file_iterator &&) =
default
;
84
~out_file_iterator() =
default
;
85
87
constexpr
out_file_iterator(file_type & _host) noexcept : host{&_host}
88
{}
90
95
out_file_iterator & operator++()
96
{
97
return
*
this
;
98
}
99
101
out_file_iterator operator++(
int
)
102
{
103
return
*
this
;
104
}
105
107
108
out_file_iterator & operator*() noexcept
109
{
110
return
*
this
;
111
}
112
117
template
<
typename
arg_t>
118
out_file_iterator & operator=(arg_t && arg)
119
{
120
assert(host !=
nullptr
);
121
host->push_back(
std::forward<arg_t>
(arg));
122
return
*
this
;
123
}
125
130
132
constexpr
bool
operator==(std::default_sentinel_t
const
&)
const
noexcept
133
{
134
return
false
;
135
}
136
138
constexpr
bool
operator!=(std::default_sentinel_t
const
&)
const
noexcept
139
{
140
return
true
;
141
}
142
144
constexpr
friend
bool
operator==(std::default_sentinel_t
const
&, out_file_iterator
const
& it)
noexcept
145
{
146
return
(it == std::default_sentinel);
147
}
148
150
constexpr
friend
bool
operator!=(std::default_sentinel_t
const
&, out_file_iterator
const
& it)
noexcept
151
{
152
return
(it != std::default_sentinel);
153
}
155
156
private
:
158
file_type * host{};
159
};
160
161
}
// namespace seqan3::detail
cassert
std::forward
T forward(T... args)
std::is_const_v
T is_const_v
platform.hpp
Provides platform and dependency checks.
Hide me
Version:
seqan3
io
detail
out_file_iterator.hpp
Generated on
for SeqAn3 by
1.17.0