RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Public Types | Public Member Functions | Friends | List of all members
RAJA::ZipIterator< Iters > Struct Template Reference

ZipIterator class for simultaneously iterating over multiple iterators. This is not a standards compliant iterator. More...

#include <zip.hpp>

Public Types

using value_type = zip_val< typename std::iterator_traits< Iters >::value_type... >
 
using difference_type = std::ptrdiff_t
 
using pointer = void
 
using reference = zip_ref< typename std::iterator_traits< Iters >::reference... >
 
using creference = zip_ref< const typename std::iterator_traits< Iters >::reference... >
 
using iterator_category = std::random_access_iterator_tag
 

Public Member Functions

RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator ()
 
template<typename... Args, typename = concepts::enable_if< type_traits::convertible_to<Args&&, Iters>...>>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator (Args &&... args)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator (const ZipIterator &rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator (ZipIterator &&rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator= (const ZipIterator &rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator= (ZipIterator &&rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE difference_type get_stride () const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator== (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator!= (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator> (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator< (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator>= (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool operator<= (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator++ ()
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator-- ()
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator operator++ (int)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator operator-- (int)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator+= (const difference_type &rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIteratoroperator-= (const difference_type &rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE difference_type operator- (const ZipIterator &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator operator+ (const difference_type &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator operator- (const difference_type &rhs) const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE reference operator* () const
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE reference operator[] (difference_type rhs) const
 

Friends

RAJA_HOST_DEVICE constexpr RAJA_INLINE friend ZipIterator operator+ (difference_type lhs, const ZipIterator &rhs)
 
RAJA_HOST_DEVICE constexpr RAJA_INLINE friend void safe_iter_swap (ZipIterator lhs, ZipIterator rhs)
 

Detailed Description

template<typename... Iters>
struct RAJA::ZipIterator< Iters >

ZipIterator class for simultaneously iterating over multiple iterators. This is not a standards compliant iterator.

Member Typedef Documentation

◆ value_type

template<typename... Iters>
using RAJA::ZipIterator< Iters >::value_type = zip_val<typename std::iterator_traits<Iters>::value_type...>

◆ difference_type

template<typename... Iters>
using RAJA::ZipIterator< Iters >::difference_type = std::ptrdiff_t

◆ pointer

template<typename... Iters>
using RAJA::ZipIterator< Iters >::pointer = void

◆ reference

template<typename... Iters>
using RAJA::ZipIterator< Iters >::reference = zip_ref<typename std::iterator_traits<Iters>::reference...>

◆ creference

template<typename... Iters>
using RAJA::ZipIterator< Iters >::creference = zip_ref<const typename std::iterator_traits<Iters>::reference...>

◆ iterator_category

template<typename... Iters>
using RAJA::ZipIterator< Iters >::iterator_category = std::random_access_iterator_tag

Constructor & Destructor Documentation

◆ ZipIterator() [1/4]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE RAJA::ZipIterator< Iters >::ZipIterator ( )
inlineconstexpr

◆ ZipIterator() [2/4]

template<typename... Iters>
template<typename... Args, typename = concepts::enable_if< type_traits::convertible_to<Args&&, Iters>...>>
RAJA_HOST_DEVICE constexpr RAJA_INLINE RAJA::ZipIterator< Iters >::ZipIterator ( Args &&...  args)
inlineconstexpr

◆ ZipIterator() [3/4]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE RAJA::ZipIterator< Iters >::ZipIterator ( const ZipIterator< Iters > &  rhs)
inlineconstexpr

◆ ZipIterator() [4/4]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE RAJA::ZipIterator< Iters >::ZipIterator ( ZipIterator< Iters > &&  rhs)
inlineconstexpr

Member Function Documentation

◆ operator=() [1/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator= ( const ZipIterator< Iters > &  rhs)
inlineconstexpr

◆ operator=() [2/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator= ( ZipIterator< Iters > &&  rhs)
inlineconstexpr

◆ get_stride()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE difference_type RAJA::ZipIterator< Iters >::get_stride ( ) const
inlineconstexpr

◆ operator==()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator== ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator!=()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator!= ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator>()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator> ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator<()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator< ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator>=()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator>= ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator<=()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE bool RAJA::ZipIterator< Iters >::operator<= ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator++() [1/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator++ ( )
inlineconstexpr

◆ operator--() [1/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator-- ( )
inlineconstexpr

◆ operator++() [2/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator RAJA::ZipIterator< Iters >::operator++ ( int  )
inlineconstexpr

◆ operator--() [2/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator RAJA::ZipIterator< Iters >::operator-- ( int  )
inlineconstexpr

◆ operator+=()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator+= ( const difference_type rhs)
inlineconstexpr

◆ operator-=()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator& RAJA::ZipIterator< Iters >::operator-= ( const difference_type rhs)
inlineconstexpr

◆ operator-() [1/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE difference_type RAJA::ZipIterator< Iters >::operator- ( const ZipIterator< Iters > &  rhs) const
inlineconstexpr

◆ operator+()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator RAJA::ZipIterator< Iters >::operator+ ( const difference_type rhs) const
inlineconstexpr

◆ operator-() [2/2]

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE ZipIterator RAJA::ZipIterator< Iters >::operator- ( const difference_type rhs) const
inlineconstexpr

◆ operator*()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE reference RAJA::ZipIterator< Iters >::operator* ( ) const
inlineconstexpr

◆ operator[]()

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE reference RAJA::ZipIterator< Iters >::operator[] ( difference_type  rhs) const
inlineconstexpr

Friends And Related Function Documentation

◆ operator+

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE friend ZipIterator operator+ ( difference_type  lhs,
const ZipIterator< Iters > &  rhs 
)
friend

◆ safe_iter_swap

template<typename... Iters>
RAJA_HOST_DEVICE constexpr RAJA_INLINE friend void safe_iter_swap ( ZipIterator< Iters >  lhs,
ZipIterator< Iters >  rhs 
)
friend

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