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.");
61 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;
141 constexpr friend bool operator==(std::default_sentinel_t
const &,
144 return (it == std::default_sentinel);
148 constexpr friend bool operator!=(std::default_sentinel_t
const &,
151 return (it != std::default_sentinel);
163 assert(
host !=
nullptr);
164 return host->position_buffer;
170 assert(
host !=
nullptr);
171 host->secondary_stream->seekg(pos);
172 if (
host->secondary_stream->fail())
176 host->at_end =
false;
177 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:51
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:55
std::streampos file_position() const
Returns the current position in the file via std::streampos.
Definition: in_file_iterator.hpp:161
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:53
file_type * host
Pointer to file host.
Definition: in_file_iterator.hpp:184
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:83
typename file_type::difference_type difference_type
The difference type. A signed integer type, usually std::ptrdiff_t.
Definition: in_file_iterator.hpp:59
typename file_type::value_type * pointer
The pointer type.
Definition: in_file_iterator.hpp:61
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:168
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:57
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:148
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
The <ranges> header from C++20's standard library.