Flow
Documentation for the Flow C++ Library
Loading...
Searching...
No Matches
flow::CountedValueViewIterator< T > Class Template Reference

Iterator that returns a constant value a fixed number of times. Useful for creating a virtual range of repeated values without overhead. More...

#include <flow_counted_value_view_iterator.h>

Public Types

using value_type = T
using reference = const T&
using pointer = const T*
using difference_type = std::ptrdiff_t
using iterator_category = std::forward_iterator_tag

Public Member Functions

 CountedValueViewIterator () noexcept
 CountedValueViewIterator (const T &value, std::size_t count=0) noexcept
reference operator* () const
pointer operator-> () const
CountedValueViewIteratoroperator++ ()
CountedValueViewIterator operator++ (int)

Private Attributes

const T * value_
std::size_t count_

Friends

bool operator== (const CountedValueViewIterator &lhs, const CountedValueViewIterator &rhs)
bool operator!= (const CountedValueViewIterator &lhs, const CountedValueViewIterator &rhs)

Detailed Description

template<typename T>
class flow::CountedValueViewIterator< T >

Iterator that returns a constant value a fixed number of times. Useful for creating a virtual range of repeated values without overhead.

Definition at line 11 of file flow_counted_value_view_iterator.h.

Member Typedef Documentation

◆ difference_type

template<typename T>
using flow::CountedValueViewIterator< T >::difference_type = std::ptrdiff_t

Definition at line 19 of file flow_counted_value_view_iterator.h.

◆ iterator_category

template<typename T>
using flow::CountedValueViewIterator< T >::iterator_category = std::forward_iterator_tag

Definition at line 20 of file flow_counted_value_view_iterator.h.

◆ pointer

template<typename T>
using flow::CountedValueViewIterator< T >::pointer = const T*

Definition at line 18 of file flow_counted_value_view_iterator.h.

◆ reference

template<typename T>
using flow::CountedValueViewIterator< T >::reference = const T&

Definition at line 17 of file flow_counted_value_view_iterator.h.

◆ value_type

template<typename T>
using flow::CountedValueViewIterator< T >::value_type = T

Definition at line 16 of file flow_counted_value_view_iterator.h.

Constructor & Destructor Documentation

◆ CountedValueViewIterator() [1/2]

template<typename T>
flow::CountedValueViewIterator< T >::CountedValueViewIterator ( )
inlinenoexcept

◆ CountedValueViewIterator() [2/2]

template<typename T>
flow::CountedValueViewIterator< T >::CountedValueViewIterator ( const T & value,
std::size_t count = 0 )
inlinenoexcept

Definition at line 26 of file flow_counted_value_view_iterator.h.

27 : value_(&value), count_(count) {
28 }
Iterator that returns a constant value a fixed number of times. Useful for creating a virtual range o...

References count_, and value_.

Member Function Documentation

◆ operator*()

template<typename T>
reference flow::CountedValueViewIterator< T >::operator* ( ) const
inline

Definition at line 30 of file flow_counted_value_view_iterator.h.

30 {
31 assert(value_ && "no value");
32 return *value_;
33 }

References value_.

◆ operator++() [1/2]

template<typename T>
CountedValueViewIterator & flow::CountedValueViewIterator< T >::operator++ ( )
inline

Definition at line 40 of file flow_counted_value_view_iterator.h.

40 {
41 assert(count_ > 0 && "negative count");
42 --count_;
43 return *this;
44 }

References count_, and CountedValueViewIterator().

◆ operator++() [2/2]

template<typename T>
CountedValueViewIterator flow::CountedValueViewIterator< T >::operator++ ( int )
inline

Definition at line 46 of file flow_counted_value_view_iterator.h.

46 {
48 --count_;
49 return tmp;
50 }

References count_, and CountedValueViewIterator().

◆ operator->()

template<typename T>
pointer flow::CountedValueViewIterator< T >::operator-> ( ) const
inline

Definition at line 35 of file flow_counted_value_view_iterator.h.

35 {
36 assert(value_ && "no value");
37 return value_;
38 }

References value_.

◆ operator!=

template<typename T>
bool operator!= ( const CountedValueViewIterator< T > & lhs,
const CountedValueViewIterator< T > & rhs )
friend

Definition at line 56 of file flow_counted_value_view_iterator.h.

56 {
57 return !(lhs == rhs);
58 }

References CountedValueViewIterator().

◆ operator==

template<typename T>
bool operator== ( const CountedValueViewIterator< T > & lhs,
const CountedValueViewIterator< T > & rhs )
friend

Definition at line 52 of file flow_counted_value_view_iterator.h.

52 {
53 return lhs.count_ == rhs.count_ && lhs.value_ == rhs.value_;
54 }

References count_, CountedValueViewIterator(), and value_.

Member Data Documentation

◆ count_

template<typename T>
std::size_t flow::CountedValueViewIterator< T >::count_
private

◆ value_

template<typename T>
const T* flow::CountedValueViewIterator< T >::value_
private

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