29 template <
typename char_t,
typename traits_t = std::
char_traits<
char_t>>
60 template <
typename char_t,
typename traits_t = std::
char_traits<
char_t>>
61 class fast_istreambuf_iterator
65 stream_buffer_exposer<char_t, traits_t> * stream_buf =
nullptr;
71 using difference_type = ptrdiff_t;
72 using value_type = char_t;
73 using reference = char_t;
81 fast_istreambuf_iterator() noexcept = default;
82 fast_istreambuf_iterator(fast_istreambuf_iterator const &) noexcept = default;
83 fast_istreambuf_iterator(fast_istreambuf_iterator &&) noexcept = default;
84 fast_istreambuf_iterator & operator=(fast_istreambuf_iterator const &) noexcept = default;
85 fast_istreambuf_iterator & operator=(fast_istreambuf_iterator &&) noexcept = default;
86 ~fast_istreambuf_iterator() noexcept = default;
89 explicit fast_istreambuf_iterator(
std::basic_streambuf<char_t, traits_t> & ibuf) :
90 stream_buf{
reinterpret_cast<stream_buffer_exposer<char_t, traits_t> *
>(&ibuf)}
92 assert(stream_buf !=
nullptr);
93 stream_buf->underflow();
100 fast_istreambuf_iterator & operator++()
103 assert(stream_buf !=
nullptr);
104 stream_buf->snextc();
116 reference operator*()
const 118 assert(stream_buf !=
nullptr);
119 return *stream_buf->gptr();
129 assert(lhs.stream_buf !=
nullptr);
131 return (lhs.stream_buf->gptr() == lhs.stream_buf->egptr());
167 template <
typename stream_
char_t,
typename stream_traits_t>
173 detail::fast_istreambuf_iterator<stream_char_t, stream_traits_t>{s},
183 template <IStream2 stream_t>
184 constexpr
auto operator()(stream_t & s)
const 186 return this->operator()(*s.rdbuf());
::ranges::default_sentinel default_sentinel
Alias for ranges::default_sentinel. Empty sentinel object for use with iterators that know the bound ...
Definition: iterator:346
::ranges::subrange< it_t, sen_t, k > subrange
Create a view from a pair of iterator and sentinel.
Definition: ranges:339
Provides C++20 additions to the <iterator> header.
SeqAn specific customisations in the standard namespace.
constexpr auto istreambuf
A view factory that returns a view over the stream buffer of an input stream.
Definition: istreambuf.hpp:245
Adaptations of concepts from the Ranges TS.
The SeqAn3 namespace for views.
Definition: aligned_sequence_concept.hpp:35
::ranges::default_sentinel_t default_sentinel_t
Alias for ranges::default_sentinel_t. Type of ranges::default_sentinel.
Definition: iterator:351