Container System 0.1.0
High-performance C++20 type-safe container framework with SIMD-accelerated serialization
Loading...
Searching...
No Matches
kcenon::container::async::generator< T >::iterator Class Reference

Iterator for generator. More...

#include <generator.h>

Collaboration diagram for kcenon::container::async::generator< T >::iterator:
Collaboration graph

Public Types

using iterator_category = std::input_iterator_tag
 
using difference_type = std::ptrdiff_t
 
using value_type = generator::value_type
 
using reference = generator::reference
 
using pointer = generator::pointer
 

Public Member Functions

 iterator () noexcept
 Default constructor - creates end iterator.
 
 iterator (handle_type handle) noexcept
 Construct from coroutine handle.
 
reference operator* () const noexcept
 Dereference operator.
 
pointer operator-> () const noexcept
 Arrow operator.
 
iteratoroperator++ ()
 Pre-increment operator.
 
void operator++ (int)
 Post-increment operator.
 
bool operator== (std::default_sentinel_t) const noexcept
 Equality comparison.
 
bool operator!= (std::default_sentinel_t) const noexcept
 Inequality comparison.
 

Private Attributes

handle_type handle_
 

Detailed Description

template<typename T>
class kcenon::container::async::generator< T >::iterator

Iterator for generator.

Definition at line 162 of file generator.h.

Member Typedef Documentation

◆ difference_type

template<typename T >
using kcenon::container::async::generator< T >::iterator::difference_type = std::ptrdiff_t

Definition at line 166 of file generator.h.

◆ iterator_category

template<typename T >
using kcenon::container::async::generator< T >::iterator::iterator_category = std::input_iterator_tag

Definition at line 165 of file generator.h.

◆ pointer

template<typename T >
using kcenon::container::async::generator< T >::iterator::pointer = generator::pointer

Definition at line 169 of file generator.h.

◆ reference

template<typename T >
using kcenon::container::async::generator< T >::iterator::reference = generator::reference

Definition at line 168 of file generator.h.

◆ value_type

template<typename T >
using kcenon::container::async::generator< T >::iterator::value_type = generator::value_type

Definition at line 167 of file generator.h.

Constructor & Destructor Documentation

◆ iterator() [1/2]

template<typename T >
kcenon::container::async::generator< T >::iterator::iterator ( )
inlinenoexcept

Default constructor - creates end iterator.

Definition at line 174 of file generator.h.

◆ iterator() [2/2]

template<typename T >
kcenon::container::async::generator< T >::iterator::iterator ( handle_type handle)
inlineexplicitnoexcept

Construct from coroutine handle.

Definition at line 179 of file generator.h.

179: handle_(handle) {}

Member Function Documentation

◆ operator!=()

template<typename T >
bool kcenon::container::async::generator< T >::iterator::operator!= ( std::default_sentinel_t ) const
inlinenodiscardnoexcept

Inequality comparison.

Definition at line 229 of file generator.h.

230 {
231 return !handle_.done();
232 }

References kcenon::container::async::generator< T >::iterator::handle_.

◆ operator*()

template<typename T >
reference kcenon::container::async::generator< T >::iterator::operator* ( ) const
inlinenodiscardnoexcept

Dereference operator.

Definition at line 184 of file generator.h.

185 {
186 return handle_.promise().value();
187 }

References kcenon::container::async::generator< T >::iterator::handle_.

◆ operator++() [1/2]

template<typename T >
iterator & kcenon::container::async::generator< T >::iterator::operator++ ( )
inline

Pre-increment operator.

Definition at line 200 of file generator.h.

201 {
202 handle_.resume();
203 if (handle_.done())
204 {
205 handle_.promise().rethrow_if_exception();
206 }
207 return *this;
208 }

References kcenon::container::async::generator< T >::iterator::handle_.

◆ operator++() [2/2]

template<typename T >
void kcenon::container::async::generator< T >::iterator::operator++ ( int )
inline

Post-increment operator.

Definition at line 213 of file generator.h.

214 {
215 ++(*this);
216 }

◆ operator->()

template<typename T >
pointer kcenon::container::async::generator< T >::iterator::operator-> ( ) const
inlinenodiscardnoexcept

Arrow operator.

Definition at line 192 of file generator.h.

193 {
194 return std::addressof(handle_.promise().value());
195 }

References kcenon::container::async::generator< T >::iterator::handle_.

◆ operator==()

template<typename T >
bool kcenon::container::async::generator< T >::iterator::operator== ( std::default_sentinel_t ) const
inlinenodiscardnoexcept

Equality comparison.

Definition at line 221 of file generator.h.

222 {
223 return handle_.done();
224 }

References kcenon::container::async::generator< T >::iterator::handle_.

Member Data Documentation

◆ handle_


The documentation for this class was generated from the following file: