LLVM  3.7.0
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT > Class Template Reference

CRTP base class for adapting an iterator to a different type. More...

#include <iterator.h>

Inheritance diagram for llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >:
[legend]
Collaboration diagram for llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >:
[legend]

Public Types

typedef DifferenceTypeT difference_type
 

Public Member Functions

DerivedT & operator+= (difference_type n)
 
DerivedT & operator-= (difference_type n)
 
difference_type operator- (const DerivedT &RHS) const
 
DerivedT & operator++ ()
 
DerivedT & operator-- ()
 
bool operator== (const DerivedT &RHS) const
 
bool operator< (const DerivedT &RHS) const
 
ReferenceT operator* () const
 
- Public Member Functions inherited from llvm::iterator_facade_base< DerivedT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >
DerivedT operator+ (DifferenceTypeT n) const
 
DerivedT operator- (DifferenceTypeT n) const
 
DerivedT & operator++ ()
 
DerivedT operator++ (int)
 
DerivedT & operator-- ()
 
DerivedT operator-- (int)
 
bool operator!= (const DerivedT &RHS) const
 
bool operator> (const DerivedT &RHS) const
 
bool operator<= (const DerivedT &RHS) const
 
bool operator>= (const DerivedT &RHS) const
 
PointerT operator-> () const
 
ReferenceT operator[] (DifferenceTypeT n) const
 

Protected Member Functions

 iterator_adaptor_base ()=default
 
template<typename U >
 iterator_adaptor_base (U &&u, typename std::enable_if< !std::is_base_of< typename std::remove_cv< typename std::remove_reference< U >::type >::type, DerivedT >::value, int >::type=0)
 
const WrappedIteratorT & wrapped () const
 

Protected Attributes

WrappedIteratorT I
 

Additional Inherited Members

- Protected Types inherited from llvm::iterator_facade_base< DerivedT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT >
enum  { IsRandomAccess, IsBidirectional }
 

Detailed Description

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
class llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >

CRTP base class for adapting an iterator to a different type.

This class can be used through CRTP to adapt one iterator into another. Typically this is done through providing in the derived class a custom operator* implementation. Other methods can be overridden as well.

Definition at line 145 of file iterator.h.

Member Typedef Documentation

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
typedef DifferenceTypeT llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::difference_type

Definition at line 168 of file iterator.h.

Constructor & Destructor Documentation

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::iterator_adaptor_base ( )
protecteddefault
template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
template<typename U >
llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::iterator_adaptor_base ( U &&  u,
typename std::enable_if< !std::is_base_of< typename std::remove_cv< typename std::remove_reference< U >::type >::type, DerivedT >::value, int >::type  = 0 
)
inlineexplicitprotected

Definition at line 156 of file iterator.h.

Member Function Documentation

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
ReferenceT llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator* ( ) const
inline

Definition at line 216 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
DerivedT& llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator++ ( )
inline

Definition at line 195 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
DerivedT& llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator+= ( difference_type  n)
inline

Definition at line 170 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
difference_type llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator- ( const DerivedT &  RHS) const
inline

Definition at line 185 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
DerivedT& llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator-- ( )
inline

Definition at line 200 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
DerivedT& llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator-= ( difference_type  n)
inline

Definition at line 177 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
bool llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator< ( const DerivedT &  RHS) const
inline

Definition at line 209 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
bool llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::operator== ( const DerivedT &  RHS) const
inline

Definition at line 208 of file iterator.h.

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
const WrappedIteratorT& llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::wrapped ( ) const
inlineprotected

Definition at line 165 of file iterator.h.

Member Data Documentation

template<typename DerivedT, typename WrappedIteratorT, typename IteratorCategoryT = typename std::iterator_traits<WrappedIteratorT>::iterator_category, typename T = typename std::iterator_traits<WrappedIteratorT>::value_type, typename DifferenceTypeT = typename std::iterator_traits<WrappedIteratorT>::difference_type, typename PointerT = T *, typename ReferenceT = T &, typename WrappedTraitsT = std::iterator_traits<WrappedIteratorT>>
WrappedIteratorT llvm::iterator_adaptor_base< DerivedT, WrappedIteratorT, IteratorCategoryT, T, DifferenceTypeT, PointerT, ReferenceT, WrappedTraitsT >::I
protected

Definition at line 151 of file iterator.h.

Referenced by llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator*(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator++(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator+=(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator-(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator--(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator-=(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator<(), llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::operator==(), and llvm::iterator_adaptor_base< pointee_iterator< WrappedIteratorT >, WrappedIteratorT, std::iterator_traits< WrappedIteratorT >::iterator_category, T >::wrapped().


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