Unravel Engine C++ Reference
Loading...
Searching...
No Matches
generator::gen_iterator_t< generator_t, typename > Class Template Reference

#include <iterator.hpp>

Public Types

using iterator_category = std::input_iterator_tag
 
using value_type = typename generated_type<generator_t>::type
 
using difference_type = std::ptrdiff_t
 
using pointer = value_type*
 
using reference = value_type&
 

Public Member Functions

 gen_iterator_t () noexcept
 Creates a dummy end iterator.
 
 gen_iterator_t (generator_t &generator) noexcept
 Iterator to the given generator.
 
gen_iterator_toperator++ ()
 
const gen_iterator_t::value_typeoperator* () const
 
const gen_iterator_t::value_typeoperator-> () const
 
bool operator== (const gen_iterator_t &that) const noexcept
 
bool operator!= (const gen_iterator_t &that) const noexcept
 

Detailed Description

template<typename generator_t, typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
class generator::gen_iterator_t< generator_t, typename >

An iterator that can be used to "drive" a generator. Note that iterator mutates the generator.

Definition at line 17 of file iterator.hpp.

Member Typedef Documentation

◆ difference_type

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
using generator::gen_iterator_t< generator_t, typename >::difference_type = std::ptrdiff_t

Definition at line 29 of file iterator.hpp.

◆ iterator_category

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
using generator::gen_iterator_t< generator_t, typename >::iterator_category = std::input_iterator_tag

Definition at line 25 of file iterator.hpp.

◆ pointer

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
using generator::gen_iterator_t< generator_t, typename >::pointer = value_type*

Definition at line 31 of file iterator.hpp.

◆ reference

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
using generator::gen_iterator_t< generator_t, typename >::reference = value_type&

Definition at line 33 of file iterator.hpp.

◆ value_type

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
using generator::gen_iterator_t< generator_t, typename >::value_type = typename generated_type<generator_t>::type

Definition at line 27 of file iterator.hpp.

Constructor & Destructor Documentation

◆ gen_iterator_t() [1/2]

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
generator::gen_iterator_t< generator_t, typename >::gen_iterator_t ( )
inlinenoexcept

Creates a dummy end iterator.

Definition at line 36 of file iterator.hpp.

◆ gen_iterator_t() [2/2]

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
generator::gen_iterator_t< generator_t, typename >::gen_iterator_t ( generator_t & generator)
inlinenoexcept

Iterator to the given generator.

Definition at line 41 of file iterator.hpp.

Member Function Documentation

◆ operator!=()

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
bool generator::gen_iterator_t< generator_t, typename >::operator!= ( const gen_iterator_t< generator_t, typename > & that) const
inlinenoexcept

Definition at line 89 of file iterator.hpp.

◆ operator*()

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
const gen_iterator_t::value_type & generator::gen_iterator_t< generator_t, typename >::operator* ( ) const
inline

Get reference to the current generated value.

Exceptions
std::out_of_rangeIf the iterator is out of range.

Definition at line 66 of file iterator.hpp.

◆ operator++()

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
gen_iterator_t & generator::gen_iterator_t< generator_t, typename >::operator++ ( )
inline

Advance the iterator. Might make the iterator "out of range".

Exceptions
std::out_of_rangeIf the iterator is out of range.

Definition at line 52 of file iterator.hpp.

◆ operator->()

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
const gen_iterator_t::value_type * generator::gen_iterator_t< generator_t, typename >::operator-> ( ) const
inline

Get pointer to the current generated value.

Exceptions
std::out_of_rangeIf the iterator is out of range

Definition at line 75 of file iterator.hpp.

◆ operator==()

template<typename generator_t , typename = std::void_t<decltype(std::declval<const generator_t>().generate())>>
bool generator::gen_iterator_t< generator_t, typename >::operator== ( const gen_iterator_t< generator_t, typename > & that) const
inlinenoexcept

Iterators are equal if both are out of range or both iterate the same generator.

Definition at line 84 of file iterator.hpp.


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