Low-Level Abstraction of Memory Access
llama::ArrayIndexIterator< ArrayExtents > Struct Template Reference

Iterator supporting ArrayIndexRange. More...

#include <ArrayIndexRange.hpp>

Public Types

using value_type = typename ArrayExtents::Index
 
using difference_type = std::ptrdiff_t
 
using reference = value_type
 
using pointer = internal::IndirectValue< value_type >
 
using iterator_category = std::random_access_iterator_tag
 

Public Member Functions

constexpr ArrayIndexIterator () noexcept=default
 
constexpr ArrayIndexIterator (ArrayExtents extents, value_type current) noexcept
 
constexpr auto operator* () const noexcept -> value_type
 
constexpr auto operator-> () const noexcept -> pointer
 
constexpr auto operator++ () noexcept -> ArrayIndexIterator &
 
constexpr auto operator++ (int) noexcept -> ArrayIndexIterator
 
constexpr auto operator-- () noexcept -> ArrayIndexIterator &
 
constexpr auto operator-- (int) noexcept -> ArrayIndexIterator
 
constexpr auto operator[] (difference_type i) const noexcept -> reference
 
constexpr auto operator+= (difference_type n) noexcept -> ArrayIndexIterator &
 
constexpr auto operator-= (difference_type n) noexcept -> ArrayIndexIterator &
 

Static Public Attributes

static constexpr std::size_t rank = ArrayExtents::rank
 

Friends

constexpr friend auto operator+ (ArrayIndexIterator it, difference_type n) noexcept -> ArrayIndexIterator
 
constexpr friend auto operator+ (difference_type n, ArrayIndexIterator it) noexcept -> ArrayIndexIterator
 
constexpr friend auto operator- (ArrayIndexIterator it, difference_type n) noexcept -> ArrayIndexIterator
 
constexpr friend auto operator- (const ArrayIndexIterator &a, const ArrayIndexIterator &b) noexcept -> difference_type
 
constexpr friend auto operator== (const ArrayIndexIterator< ArrayExtents > &a, const ArrayIndexIterator< ArrayExtents > &b) noexcept -> bool
 
constexpr friend auto operator!= (const ArrayIndexIterator< ArrayExtents > &a, const ArrayIndexIterator< ArrayExtents > &b) noexcept -> bool
 
constexpr friend auto operator< (const ArrayIndexIterator &a, const ArrayIndexIterator &b) noexcept -> bool
 
constexpr friend auto operator> (const ArrayIndexIterator &a, const ArrayIndexIterator &b) noexcept -> bool
 
constexpr friend auto operator<= (const ArrayIndexIterator &a, const ArrayIndexIterator &b) noexcept -> bool
 
constexpr friend auto operator>= (const ArrayIndexIterator &a, const ArrayIndexIterator &b) noexcept -> bool
 

Detailed Description

template<typename ArrayExtents>
struct llama::ArrayIndexIterator< ArrayExtents >

Iterator supporting ArrayIndexRange.

Definition at line 22 of file ArrayIndexRange.hpp.

Member Typedef Documentation

◆ difference_type

template<typename ArrayExtents >
using llama::ArrayIndexIterator< ArrayExtents >::difference_type = std::ptrdiff_t

Definition at line 27 of file ArrayIndexRange.hpp.

◆ iterator_category

template<typename ArrayExtents >
using llama::ArrayIndexIterator< ArrayExtents >::iterator_category = std::random_access_iterator_tag

Definition at line 30 of file ArrayIndexRange.hpp.

◆ pointer

template<typename ArrayExtents >
using llama::ArrayIndexIterator< ArrayExtents >::pointer = internal::IndirectValue<value_type>

Definition at line 29 of file ArrayIndexRange.hpp.

◆ reference

template<typename ArrayExtents >
using llama::ArrayIndexIterator< ArrayExtents >::reference = value_type

Definition at line 28 of file ArrayIndexRange.hpp.

◆ value_type

template<typename ArrayExtents >
using llama::ArrayIndexIterator< ArrayExtents >::value_type = typename ArrayExtents::Index

Definition at line 26 of file ArrayIndexRange.hpp.

Constructor & Destructor Documentation

◆ ArrayIndexIterator() [1/2]

template<typename ArrayExtents >
constexpr llama::ArrayIndexIterator< ArrayExtents >::ArrayIndexIterator ( )
constexprdefaultnoexcept

◆ ArrayIndexIterator() [2/2]

template<typename ArrayExtents >
constexpr llama::ArrayIndexIterator< ArrayExtents >::ArrayIndexIterator ( ArrayExtents  extents,
value_type  current 
)
inlineconstexprnoexcept

Definition at line 36 of file ArrayIndexRange.hpp.

Member Function Documentation

◆ operator*()

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator* ( ) const -> value_type
inlineconstexprnoexcept

Definition at line 43 of file ArrayIndexRange.hpp.

◆ operator++() [1/2]

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator++ ( ) -> ArrayIndexIterator&
inlineconstexprnoexcept

Definition at line 55 of file ArrayIndexRange.hpp.

◆ operator++() [2/2]

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator++ ( int  ) -> ArrayIndexIterator
inlineconstexprnoexcept

Definition at line 69 of file ArrayIndexRange.hpp.

◆ operator+=()

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator+= ( difference_type  n) -> ArrayIndexIterator&
inlineconstexprnoexcept

Definition at line 107 of file ArrayIndexRange.hpp.

◆ operator--() [1/2]

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator-- ( ) -> ArrayIndexIterator&
inlineconstexprnoexcept

Definition at line 77 of file ArrayIndexRange.hpp.

◆ operator--() [2/2]

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator-- ( int  ) -> ArrayIndexIterator
inlineconstexprnoexcept

Definition at line 93 of file ArrayIndexRange.hpp.

◆ operator-=()

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator-= ( difference_type  n) -> ArrayIndexIterator&
inlineconstexprnoexcept

Definition at line 150 of file ArrayIndexRange.hpp.

◆ operator->()

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator-> ( ) const -> pointer
inlineconstexprnoexcept

Definition at line 49 of file ArrayIndexRange.hpp.

◆ operator[]()

template<typename ArrayExtents >
constexpr auto llama::ArrayIndexIterator< ArrayExtents >::operator[] ( difference_type  i) const -> reference
inlineconstexprnoexcept

Definition at line 101 of file ArrayIndexRange.hpp.

Friends And Related Function Documentation

◆ operator!=

template<typename ArrayExtents >
constexpr friend auto operator!= ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 189 of file ArrayIndexRange.hpp.

◆ operator+ [1/2]

template<typename ArrayExtents >
constexpr friend auto operator+ ( ArrayIndexIterator< ArrayExtents it,
difference_type  n 
) -> ArrayIndexIterator
friend

Definition at line 137 of file ArrayIndexRange.hpp.

◆ operator+ [2/2]

template<typename ArrayExtents >
constexpr friend auto operator+ ( difference_type  n,
ArrayIndexIterator< ArrayExtents it 
) -> ArrayIndexIterator
friend

Definition at line 144 of file ArrayIndexRange.hpp.

◆ operator- [1/2]

template<typename ArrayExtents >
constexpr friend auto operator- ( ArrayIndexIterator< ArrayExtents it,
difference_type  n 
) -> ArrayIndexIterator
friend

Definition at line 156 of file ArrayIndexRange.hpp.

◆ operator- [2/2]

template<typename ArrayExtents >
constexpr friend auto operator- ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> difference_type
friend

Definition at line 163 of file ArrayIndexRange.hpp.

◆ operator<

template<typename ArrayExtents >
constexpr friend auto operator< ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 197 of file ArrayIndexRange.hpp.

◆ operator<=

template<typename ArrayExtents >
constexpr friend auto operator<= ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 231 of file ArrayIndexRange.hpp.

◆ operator==

template<typename ArrayExtents >
constexpr friend auto operator== ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 180 of file ArrayIndexRange.hpp.

◆ operator>

template<typename ArrayExtents >
constexpr friend auto operator> ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 225 of file ArrayIndexRange.hpp.

◆ operator>=

template<typename ArrayExtents >
constexpr friend auto operator>= ( const ArrayIndexIterator< ArrayExtents > &  a,
const ArrayIndexIterator< ArrayExtents > &  b 
) -> bool
friend

Definition at line 237 of file ArrayIndexRange.hpp.

Member Data Documentation

◆ rank

template<typename ArrayExtents >
constexpr std::size_t llama::ArrayIndexIterator< ArrayExtents >::rank = ArrayExtents::rank
staticconstexpr

Definition at line 32 of file ArrayIndexRange.hpp.


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