My Project
Public Member Functions | Static Public Member Functions | List of all members
mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT > Class Template Reference

#include <STLExtras.h>

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

Public Member Functions

 indexed_accessor_range (BaseT base, ptrdiff_t startIndex, ptrdiff_t count)
 
const BaseT & getBase () const
 Returns the current base of the range. More...
 
ptrdiff_t getStartIndex () const
 Returns the current start index of the range. More...
 
- Public Member Functions inherited from mlir::detail::indexed_accessor_range_base< DerivedT, std::pair< BaseT, ptrdiff_t >, T, PointerT, ReferenceT >
 indexed_accessor_range_base (iterator begin, iterator end)
 
 indexed_accessor_range_base (const iterator_range< iterator > &range)
 
 indexed_accessor_range_base (std::pair< BaseT, ptrdiff_t > 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...
 
 operator SmallVector< SVT, N > () const
 

Static Public Member Functions

static std::pair< BaseT, ptrdiff_t > offset_base (const std::pair< BaseT, ptrdiff_t > &base, ptrdiff_t index)
 See detail::indexed_accessor_range_base for details. More...
 
static ReferenceT dereference_iterator (const std::pair< BaseT, ptrdiff_t > &base, ptrdiff_t index)
 See detail::indexed_accessor_range_base for details. More...
 

Additional Inherited Members

- Public Types inherited from mlir::detail::indexed_accessor_range_base< DerivedT, std::pair< BaseT, ptrdiff_t >, T, PointerT, ReferenceT >
using RangeBaseT = indexed_accessor_range_base< DerivedT, std::pair< BaseT, ptrdiff_t >, T, PointerT, ReferenceT >
 
- Protected Member Functions inherited from mlir::detail::indexed_accessor_range_base< DerivedT, std::pair< BaseT, ptrdiff_t >, T, PointerT, ReferenceT >
 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 inherited from mlir::detail::indexed_accessor_range_base< DerivedT, std::pair< BaseT, ptrdiff_t >, T, PointerT, ReferenceT >
std::pair< BaseT, ptrdiff_t > 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::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >

This class provides an implementation of a range of indexed_accessor_iterators where the base is not indexable. Ranges with bases that are offsetable should derive from indexed_accessor_range_base instead. Derived range classes are expected to implement the following static method:

Constructor & Destructor Documentation

◆ indexed_accessor_range()

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

Member Function Documentation

◆ dereference_iterator()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
static ReferenceT mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >::dereference_iterator ( const std::pair< BaseT, ptrdiff_t > &  base,
ptrdiff_t  index 
)
inlinestatic

◆ getBase()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
const BaseT& mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >::getBase ( ) const
inline

Returns the current base of the range.

◆ getStartIndex()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
ptrdiff_t mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >::getStartIndex ( ) const
inline

Returns the current start index of the range.

◆ offset_base()

template<typename DerivedT, typename BaseT, typename T, typename PointerT = T *, typename ReferenceT = T &>
static std::pair<BaseT, ptrdiff_t> mlir::indexed_accessor_range< DerivedT, BaseT, T, PointerT, ReferenceT >::offset_base ( const std::pair< BaseT, ptrdiff_t > &  base,
ptrdiff_t  index 
)
inlinestatic

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