39template <
typename file_type>
42 static_assert(!std::is_const_v<file_type>,
43 "You cannot iterate over const files, because the iterator changes the file.");
62 using pointer =
typename file_type::value_type *;
94 assert(
host !=
nullptr);
95 host->read_next_record();
102 assert(
host !=
nullptr);
109 assert(
host !=
nullptr);
110 return host->record_buffer;
116 assert(
host !=
nullptr);
117 return host->record_buffer;
127 constexpr bool operator==(std::default_sentinel_t
const &)
const noexcept
129 assert(
host !=
nullptr);
134 constexpr bool operator!=(std::default_sentinel_t
const &)
const noexcept
136 assert(
host !=
nullptr);
137 return !
host->at_end;
143 return (it == std::default_sentinel);
149 return (it != std::default_sentinel);
161 assert(
host !=
nullptr);
162 return host->position_buffer;
168 assert(
host !=
nullptr);
169 host->secondary_stream->seekg(pos);
170 if (
host->secondary_stream->fail())
174 host->at_end =
false;
175 host->read_next_record();
Input iterator necessary for providing a range-like interface in input file.
Definition: in_file_iterator.hpp:41
typename file_type::value_type value_type
The value type.
Definition: in_file_iterator.hpp:52
constexpr in_file_iterator & operator=(in_file_iterator &&)=default
Move assignment.
constexpr in_file_iterator()=default
Default constructor.
constexpr friend bool operator==(std::default_sentinel_t const &, in_file_iterator const &it) noexcept
Checks whether it is equal to the sentinel.
Definition: in_file_iterator.hpp:141
void operator++(int)
Post-increment is the same as pre-increment, but returns void.
Definition: in_file_iterator.hpp:100
constexpr bool operator!=(std::default_sentinel_t const &) const noexcept
Checks whether *this is not equal to the sentinel.
Definition: in_file_iterator.hpp:134
typename file_type::reference const_reference
The const reference type.
Definition: in_file_iterator.hpp:56
std::streampos file_position() const
Returns the current position in the file via std::streampos.
Definition: in_file_iterator.hpp:159
reference operator*() noexcept
Dereference returns the currently buffered record.
Definition: in_file_iterator.hpp:107
in_file_iterator & operator++()
Move to the next record in the file and return a reference to it.
Definition: in_file_iterator.hpp:92
constexpr in_file_iterator(in_file_iterator const &)=default
Copy constructor.
~in_file_iterator()=default
Use default deconstructor.
typename file_type::reference reference
The reference type.
Definition: in_file_iterator.hpp:54
file_type * host
Pointer to file host.
Definition: in_file_iterator.hpp:182
constexpr in_file_iterator & operator=(in_file_iterator const &)=default
Copy construction via assignment.
constexpr in_file_iterator(file_type &_host) noexcept
Construct with reference to host.
Definition: in_file_iterator.hpp:84
typename file_type::difference_type difference_type
The difference type. A signed integer type, usually std::ptrdiff_t.
Definition: in_file_iterator.hpp:60
typename file_type::value_type * pointer
The pointer type.
Definition: in_file_iterator.hpp:62
constexpr bool operator==(std::default_sentinel_t const &) const noexcept
Checks whether *this is equal to the sentinel.
Definition: in_file_iterator.hpp:127
reference operator*() const noexcept
Dereference returns the currently buffered record.
Definition: in_file_iterator.hpp:114
in_file_iterator & seek_to(std::streampos const &pos)
Low level API. Sets the current position of the iterator to the given position, throws if at end of f...
Definition: in_file_iterator.hpp:166
constexpr in_file_iterator(in_file_iterator &&)=default
Move constructor.
typename file_type::size_type size_type
The size type.
Definition: in_file_iterator.hpp:58
constexpr friend bool operator!=(std::default_sentinel_t const &, in_file_iterator const &it) noexcept
Checks whether it is not equal to the sentinel.
Definition: in_file_iterator.hpp:147
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29