My Project
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > Class Template Reference

#include <STLExtras.h>

Collaboration diagram for mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >:
Collaboration graph
[legend]

Classes

class  iterator
 An iterator element of this range. More...
 

Public Types

using RangeBaseT = indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >
 

Public Member Functions

 indexed_accessor_range_base (iterator begin, iterator end)
 
 indexed_accessor_range_base (const iterator_range< iterator > &range)
 
 indexed_accessor_range_base (BaseT base, ptrdiff_t count)
 
iterator begin () const
 
iterator end () const
 
ReferenceT operator[] (unsigned index) const
 
size_t size () const
 Return the size of this range. More...
 
bool empty () const
 Return if the range is empty. More...
 
DerivedT slice (size_t n, size_t m) const
 Drop the first N elements, and keep M elements. More...
 
DerivedT drop_front (size_t n=1) const
 Drop the first n elements. More...
 
DerivedT drop_back (size_t n=1) const
 Drop the last n elements. More...
 
DerivedT take_front (size_t n=1) const
 Take the first n elements. More...
 
template<typename SVT , unsigned N>
 operator SmallVector< SVT, N > () const
 

Protected Member Functions

 indexed_accessor_range_base (const indexed_accessor_range_base &)=default
 
 indexed_accessor_range_base (indexed_accessor_range_base &&)=default
 
indexed_accessor_range_baseoperator= (const indexed_accessor_range_base &)=default
 

Protected Attributes

BaseT base
 The base that owns the provided range of values. More...
 
ptrdiff_t count
 The size from the owning range. More...
 

Detailed Description

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
class mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >

The class represents the base of a range of indexed_accessor_iterators. It provides support for many different range functionalities, e.g. drop_front/slice/etc.. Derived range classes must implement the following static methods:

Member Typedef Documentation

◆ RangeBaseT

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
using mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::RangeBaseT = indexed_accessor_range_base<DerivedT, BaseT, T, PointerT, ReferenceT>

Constructor & Destructor Documentation

◆ indexed_accessor_range_base() [1/5]

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::indexed_accessor_range_base ( iterator  begin,
iterator  end 
)
inline

◆ indexed_accessor_range_base() [2/5]

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::indexed_accessor_range_base ( const iterator_range< iterator > &  range)
inline

◆ indexed_accessor_range_base() [3/5]

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::indexed_accessor_range_base ( BaseT  base,
ptrdiff_t  count 
)
inline

◆ indexed_accessor_range_base() [4/5]

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::indexed_accessor_range_base ( const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &  )
protecteddefault

◆ indexed_accessor_range_base() [5/5]

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::indexed_accessor_range_base ( indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &&  )
protecteddefault

Member Function Documentation

◆ begin()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
iterator mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::begin ( ) const
inline

◆ drop_back()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
DerivedT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::drop_back ( size_t  n = 1) const
inline

Drop the last n elements.

◆ drop_front()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
DerivedT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::drop_front ( size_t  n = 1) const
inline

Drop the first n elements.

◆ empty()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
bool mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::empty ( ) const
inline

Return if the range is empty.

◆ end()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
iterator mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::end ( ) const
inline

◆ operator SmallVector< SVT, N >()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
template<typename SVT , unsigned N>
mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::operator SmallVector< SVT, N > ( ) const
inline

Allow conversion to SmallVector if necessary. TODO(riverriddle) Remove this when SmallVector accepts different range types in its constructor.

◆ operator=()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
indexed_accessor_range_base& mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::operator= ( const indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT > &  )
protecteddefault

◆ operator[]()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
ReferenceT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::operator[] ( unsigned  index) const
inline

◆ size()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
size_t mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::size ( ) const
inline

Return the size of this range.

◆ slice()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
DerivedT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::slice ( size_t  n,
size_t  m 
) const
inline

Drop the first N elements, and keep M elements.

◆ take_front()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
DerivedT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::take_front ( size_t  n = 1) const
inline

Take the first n elements.

Member Data Documentation

◆ base

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
BaseT mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::base
protected

The base that owns the provided range of values.

◆ count

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
ptrdiff_t mlir::detail::indexed_accessor_range_base< DerivedT, BaseT, T, PointerT, ReferenceT >::count
protected

The size from the owning range.


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