WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
wpi::concat_iterator< ValueT, IterTs > Class Template Reference

Iterator wrapper that concatenates sequences together. More...

#include <STLExtras.h>

Inheritance diagram for wpi::concat_iterator< ValueT, IterTs >:
wpi::iterator_facade_base< concat_iterator< ValueT, IterTs...>, std::forward_iterator_tag, ValueT >

Public Member Functions

template<typename... RangeTs>
 concat_iterator (RangeTs &&...Ranges)
 Constructs an iterator from a squence of ranges. More...
 
concat_iteratoroperator++ ()
 
ValueT & operator* () const
 
bool operator== (const concat_iterator &RHS) const
 
- Public Member Functions inherited from wpi::iterator_facade_base< concat_iterator< ValueT, IterTs...>, std::forward_iterator_tag, ValueT >
concat_iterator< ValueT, IterTs...> operator+ (DifferenceTypeT n) const
 
concat_iterator< ValueT, IterTs...> operator- (DifferenceTypeT n) const
 
concat_iterator< ValueT,
IterTs...> & 
operator++ ()
 
concat_iterator< ValueT, IterTs...> operator++ (int)
 
concat_iterator< ValueT,
IterTs...> & 
operator-- ()
 
concat_iterator< ValueT, IterTs...> operator-- (int)
 
bool operator!= (const concat_iterator< ValueT, IterTs...> &RHS) const
 
bool operator> (const concat_iterator< ValueT, IterTs...> &RHS) const
 
bool operator<= (const concat_iterator< ValueT, IterTs...> &RHS) const
 
bool operator>= (const concat_iterator< ValueT, IterTs...> &RHS) const
 
PointerT operator-> ()
 
PointerT operator-> () const
 
ReferenceProxy operator[] (DifferenceTypeT n)
 
ReferenceProxy operator[] (DifferenceTypeT n) const
 

Additional Inherited Members

- Protected Types inherited from wpi::iterator_facade_base< concat_iterator< ValueT, IterTs...>, std::forward_iterator_tag, ValueT >
enum  
 

Detailed Description

template<typename ValueT, typename... IterTs>
class wpi::concat_iterator< ValueT, IterTs >

Iterator wrapper that concatenates sequences together.

This can concatenate different iterators, even with different types, into a single iterator provided the value types of all the concatenated iterators expose reference and pointer types that can be converted to ValueT & and ValueT * respectively. It doesn't support more interesting/customized pointer or reference types.

Currently this only supports forward or higher iterator categories as inputs and always exposes a forward iterator interface.

Constructor & Destructor Documentation

template<typename ValueT , typename... IterTs>
template<typename... RangeTs>
wpi::concat_iterator< ValueT, IterTs >::concat_iterator ( RangeTs &&...  Ranges)
inlineexplicit

Constructs an iterator from a squence of ranges.

We need the full range to know how to switch between each of the iterators.


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