LLVM 20.0.0git
Public Member Functions | List of all members
llvm::concat_iterator< ValueT, IterTs > Class Template Reference

Iterator wrapper that concatenates sequences together. More...

#include "llvm/ADT/STLExtras.h"

Inheritance diagram for llvm::concat_iterator< ValueT, IterTs >:
Inheritance graph
[legend]

Public Member Functions

template<typename... RangeTs>
 concat_iterator (RangeTs &&... Ranges)
 Constructs an iterator from a sequence of ranges.
 
concat_iteratoroperator++ ()
 
reference_type operator* () const
 
bool operator== (const concat_iterator &RHS) const
 
- Public Member Functions inherited from llvm::iterator_facade_base< concat_iterator< ValueT, IterTs... >, std::forward_iterator_tag, ValueT >
concat_iterator< ValueT, IterTs... > operator+ (std::ptrdiff_t n) const
 
concat_iterator< ValueT, IterTs... > operator- (std::ptrdiff_t 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
 
PointerProxy operator-> () const
 
ReferenceProxy operator[] (std::ptrdiff_t n) const
 

Additional Inherited Members

- Public Types inherited from llvm::iterator_facade_base< concat_iterator< ValueT, IterTs... >, std::forward_iterator_tag, ValueT >
using iterator_category = std::forward_iterator_tag
 
using value_type = ValueT
 
using difference_type = std::ptrdiff_t
 
using pointer = ValueT *
 
using reference = ValueT &
 
- Protected Types inherited from llvm::iterator_facade_base< concat_iterator< ValueT, IterTs... >, std::forward_iterator_tag, ValueT >
enum  
 

Detailed Description

template<typename ValueT, typename... IterTs>
class llvm::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.

Definition at line 1022 of file STLExtras.h.

Constructor & Destructor Documentation

◆ concat_iterator()

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

Constructs an iterator from a sequence of ranges.

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

Definition at line 1114 of file STLExtras.h.

Member Function Documentation

◆ operator*()

template<typename ValueT , typename... IterTs>
reference_type llvm::concat_iterator< ValueT, IterTs >::operator* ( ) const
inline

Definition at line 1124 of file STLExtras.h.

◆ operator++()

template<typename ValueT , typename... IterTs>
concat_iterator & llvm::concat_iterator< ValueT, IterTs >::operator++ ( )
inline

Definition at line 1119 of file STLExtras.h.

◆ operator==()

template<typename ValueT , typename... IterTs>
bool llvm::concat_iterator< ValueT, IterTs >::operator== ( const concat_iterator< ValueT, IterTs > &  RHS) const
inline

Definition at line 1128 of file STLExtras.h.

References RHS.


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