OpenShot Audio Library | OpenShotAudio 0.4.0
Loading...
Searching...
No Matches
juce::EnumerateIterator< Iter, Index > Class Template Reference

#include <juce_Enumerate.h>

Public Member Functions

constexpr EnumerateIterator ()=default
 
constexpr EnumerateIterator (Iter iter)
 
constexpr EnumerateIterator (Iter iter, Index ind)
 
template<typename OtherIter , typename OtherInd >
constexpr bool operator== (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
template<typename OtherIter , typename OtherInd >
constexpr bool operator!= (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
constexpr Enumerated< Index, decltype(*std::declval< Iter >())> operator* () const
 
constexpr EnumerateIteratoroperator++ ()
 
constexpr EnumerateIterator operator++ (int)
 
template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0>
constexpr EnumerateIteratoroperator-- ()
 
template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0>
constexpr EnumerateIterator operator-- (int)
 
template<typename I , std::enable_if_t< detail::canAddAssign< Iter &, I >, int > = 0>
constexpr EnumerateIteratoroperator+= (I diff)
 
template<typename I , std::enable_if_t< detail::canSubAssign< Iter &, I >, int > = 0>
constexpr EnumerateIteratoroperator-= (I diff)
 
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canSub< Iter, OtherIter >, int > = 0>
constexpr auto operator- (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
template<typename I , std::enable_if_t< detail::canAdd< EnumerateIterator, I >, int > = 0>
constexpr auto operator[] (I diff) const
 
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThan< Iter, OtherIter >, int > = 0>
constexpr bool operator< (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThanEqual< Iter, OtherIter >, int > = 0>
constexpr bool operator<= (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThan< Iter, OtherIter >, int > = 0>
constexpr bool operator> (const EnumerateIterator< OtherIter, OtherInd > &other) const
 
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThanEqual< Iter, OtherIter >, int > = 0>
constexpr bool operator>= (const EnumerateIterator< OtherIter, OtherInd > &other) const
 

Detailed Description

template<typename Iter, typename Index = ptrdiff_t>
class juce::EnumerateIterator< Iter, Index >

An iterator that wraps some other iterator, keeping track of the relative position of that iterator based on calls to arithmetic operators such as operator++(), operator--(), operator+(), and operator-().

You should never need to construct an instance of this type yourself. Instead, use the enumerate() function to construct a range that can be enumerated.

See also
enumerate()

Definition at line 127 of file juce_Enumerate.h.

Constructor & Destructor Documentation

◆ EnumerateIterator() [1/3]

template<typename Iter , typename Index = ptrdiff_t>
constexpr juce::EnumerateIterator< Iter, Index >::EnumerateIterator ( )
constexprdefault

Default constructor.

◆ EnumerateIterator() [2/3]

template<typename Iter , typename Index = ptrdiff_t>
constexpr juce::EnumerateIterator< Iter, Index >::EnumerateIterator ( Iter iter)
inlineexplicitconstexpr

Wraps the provided iterator, and sets the internal count to 0.

Definition at line 134 of file juce_Enumerate.h.

◆ EnumerateIterator() [3/3]

template<typename Iter , typename Index = ptrdiff_t>
constexpr juce::EnumerateIterator< Iter, Index >::EnumerateIterator ( Iter iter,
Index ind )
inlineconstexpr

Wraps the provided iterator, and sets the internal count to the provided value.

Definition at line 138 of file juce_Enumerate.h.

Member Function Documentation

◆ operator!=()

template<typename Iter , typename Index = ptrdiff_t>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator!= ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr
See also
operator==()

Definition at line 150 of file juce_Enumerate.h.

◆ operator*()

template<typename Iter , typename Index = ptrdiff_t>
constexpr Enumerated< Index, decltype(*std::declval< Iter >())> juce::EnumerateIterator< Iter, Index >::operator* ( ) const
inlineconstexpr

Dereferencing the iterator produces an Enumerated instance by value. This type holds a copy of the iterator's current index, along with the result of dereferencing the wrapped iterator (normally a reference type).

Definition at line 159 of file juce_Enumerate.h.

◆ operator++() [1/2]

template<typename Iter , typename Index = ptrdiff_t>
constexpr EnumerateIterator & juce::EnumerateIterator< Iter, Index >::operator++ ( )
inlineconstexpr

Increments the iterator and the index.

Definition at line 165 of file juce_Enumerate.h.

Referenced by juce::EnumerateIterator< Iter, Index >::operator++().

◆ operator++() [2/2]

template<typename Iter , typename Index = ptrdiff_t>
constexpr EnumerateIterator juce::EnumerateIterator< Iter, Index >::operator++ ( int )
inlineconstexpr

Increments the iterator and the index.

Definition at line 173 of file juce_Enumerate.h.

◆ operator+=()

template<typename Iter , typename Index = ptrdiff_t>
template<typename I , std::enable_if_t< detail::canAddAssign< Iter &, I >, int > = 0>
constexpr EnumerateIterator & juce::EnumerateIterator< Iter, Index >::operator+= ( I diff)
inlineconstexpr

Adds an integral value to both the iterator and the index. Only participates in overload resolution if the iterator can be add-assigned.

Definition at line 206 of file juce_Enumerate.h.

◆ operator-()

template<typename Iter , typename Index = ptrdiff_t>
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canSub< Iter, OtherIter >, int > = 0>
constexpr auto juce::EnumerateIterator< Iter, Index >::operator- ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Subtracts another enumerate iterator from this one, producing the same result as subtracting the two wrapped iterators. For random-access iterators, this will normally return the distance between the two iterators. Only participates in overload resolution if the wrapped iterators can be subtracted.

Definition at line 230 of file juce_Enumerate.h.

◆ operator--() [1/2]

template<typename Iter , typename Index = ptrdiff_t>
template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0>
constexpr EnumerateIterator & juce::EnumerateIterator< Iter, Index >::operator-- ( )
inlineconstexpr

Decrements the iterator and the index. Only participates in overload resolution if the iterator can be pre-decremented.

Definition at line 184 of file juce_Enumerate.h.

Referenced by juce::EnumerateIterator< Iter, Index >::operator--().

◆ operator--() [2/2]

template<typename Iter , typename Index = ptrdiff_t>
template<typename T = Iter, std::enable_if_t< detail::canPreDecrement< T >, int > = 0>
constexpr EnumerateIterator juce::EnumerateIterator< Iter, Index >::operator-- ( int )
inlineconstexpr

Decrements the iterator and the index. Only participates in overload resolution if the iterator can be pre-decremented.

Definition at line 195 of file juce_Enumerate.h.

◆ operator-=()

template<typename Iter , typename Index = ptrdiff_t>
template<typename I , std::enable_if_t< detail::canSubAssign< Iter &, I >, int > = 0>
constexpr EnumerateIterator & juce::EnumerateIterator< Iter, Index >::operator-= ( I diff)
inlineconstexpr

Subtracts an integral value from both the iterator and the index. Only participates in overload resolution if the iterator can be sub-assigned.

Definition at line 217 of file juce_Enumerate.h.

◆ operator<()

template<typename Iter , typename Index = ptrdiff_t>
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThan< Iter, OtherIter >, int > = 0>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator< ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Returns the result of comparing the two wrapped iterators. Only participates in overload resolution if the wrapped iterators are comparable.

Definition at line 250 of file juce_Enumerate.h.

◆ operator<=()

template<typename Iter , typename Index = ptrdiff_t>
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canLessThanEqual< Iter, OtherIter >, int > = 0>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator<= ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Returns the result of comparing the two wrapped iterators. Only participates in overload resolution if the wrapped iterators are comparable.

Definition at line 259 of file juce_Enumerate.h.

◆ operator==()

template<typename Iter , typename Index = ptrdiff_t>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator== ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Two EnumerateIterators are considered equal if the wrapped iterators are equal.

Definition at line 143 of file juce_Enumerate.h.

Referenced by juce::EnumerateIterator< Iter, Index >::operator!=().

◆ operator>()

template<typename Iter , typename Index = ptrdiff_t>
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThan< Iter, OtherIter >, int > = 0>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator> ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Returns the result of comparing the two wrapped iterators. Only participates in overload resolution if the wrapped iterators are comparable.

Definition at line 268 of file juce_Enumerate.h.

◆ operator>=()

template<typename Iter , typename Index = ptrdiff_t>
template<typename OtherIter , typename OtherInd , std::enable_if_t< detail::canGreaterThanEqual< Iter, OtherIter >, int > = 0>
constexpr bool juce::EnumerateIterator< Iter, Index >::operator>= ( const EnumerateIterator< OtherIter, OtherInd > & other) const
inlineconstexpr

Returns the result of comparing the two wrapped iterators. Only participates in overload resolution if the wrapped iterators are comparable.

Definition at line 277 of file juce_Enumerate.h.

◆ operator[]()

template<typename Iter , typename Index = ptrdiff_t>
template<typename I , std::enable_if_t< detail::canAdd< EnumerateIterator, I >, int > = 0>
constexpr auto juce::EnumerateIterator< Iter, Index >::operator[] ( I diff) const
inlineconstexpr

Indexes into this iterator, equivalent to adding an integral value to this iterator and then dereferencing the result. Only participates in overload resolution if the wrapped iterator allows addition of integral values.

Definition at line 241 of file juce_Enumerate.h.


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