Low-Level Abstraction of Memory Access
llama::Array< T, N > Struct Template Reference

#include <Array.hpp>

Public Types

using value_type = T
 

Public Member Functions

constexpr auto size () const
 
constexpr auto empty () const -> bool
 
constexpr auto begin () -> T *
 
constexpr auto begin () const -> const T *
 
constexpr auto end () -> T *
 
constexpr auto end () const -> const T *
 
constexpr auto front () -> T &
 
constexpr auto front () const -> const T &
 
constexpr auto back () -> T &
 
constexpr auto back () const -> const T &
 
template<typename IndexType >
constexpr auto operator[] (IndexType &&idx) -> T &
 
template<typename IndexType >
constexpr auto operator[] (IndexType &&idx) const -> const T &
 
constexpr auto data () -> T *
 
constexpr auto data () const -> const T *
 
template<std::size_t I>
constexpr auto get () -> T &
 
template<std::size_t I>
constexpr auto get () const -> const T &
 

Public Attributes

element [N]
 

Friends

constexpr friend auto operator== (const Array &a, const Array &b) -> bool
 
constexpr friend auto operator!= (const Array &a, const Array &b) -> bool
 
constexpr friend auto operator+ (const Array &a, const Array &b) -> Array
 

Detailed Description

template<typename T, std::size_t N>
struct llama::Array< T, N >

Array class like std::array but suitable for use with offloading devices like GPUs.

Template Parameters
Ttype if array elements.
Nrank of the array.

Definition at line 20 of file Array.hpp.

Member Typedef Documentation

◆ value_type

template<typename T , std::size_t N>
using llama::Array< T, N >::value_type = T

Definition at line 22 of file Array.hpp.

Member Function Documentation

◆ back() [1/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::back ( ) -> T&
inlineconstexpr

Definition at line 65 of file Array.hpp.

◆ back() [2/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::back ( ) const -> const T&
inlineconstexpr

Definition at line 70 of file Array.hpp.

◆ begin() [1/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::begin ( ) -> T*
inlineconstexpr

Definition at line 35 of file Array.hpp.

◆ begin() [2/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::begin ( ) const -> const T*
inlineconstexpr

Definition at line 40 of file Array.hpp.

◆ data() [1/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::data ( ) -> T*
inlineconstexpr

Definition at line 87 of file Array.hpp.

◆ data() [2/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::data ( ) const -> const T*
inlineconstexpr

Definition at line 92 of file Array.hpp.

◆ empty()

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::empty ( ) const -> bool
inlineconstexpr

Definition at line 30 of file Array.hpp.

◆ end() [1/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::end ( ) -> T*
inlineconstexpr

Definition at line 45 of file Array.hpp.

◆ end() [2/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::end ( ) const -> const T*
inlineconstexpr

Definition at line 50 of file Array.hpp.

◆ front() [1/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::front ( ) -> T&
inlineconstexpr

Definition at line 55 of file Array.hpp.

◆ front() [2/2]

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::front ( ) const -> const T&
inlineconstexpr

Definition at line 60 of file Array.hpp.

◆ get() [1/2]

template<typename T , std::size_t N>
template<std::size_t I>
constexpr auto llama::Array< T, N >::get ( ) -> T&
inlineconstexpr

Definition at line 119 of file Array.hpp.

◆ get() [2/2]

template<typename T , std::size_t N>
template<std::size_t I>
constexpr auto llama::Array< T, N >::get ( ) const -> const T&
inlineconstexpr

Definition at line 125 of file Array.hpp.

◆ operator[]() [1/2]

template<typename T , std::size_t N>
template<typename IndexType >
constexpr auto llama::Array< T, N >::operator[] ( IndexType &&  idx) -> T&
inlineconstexpr

Definition at line 76 of file Array.hpp.

◆ operator[]() [2/2]

template<typename T , std::size_t N>
template<typename IndexType >
constexpr auto llama::Array< T, N >::operator[] ( IndexType &&  idx) const -> const T&
inlineconstexpr

Definition at line 82 of file Array.hpp.

◆ size()

template<typename T , std::size_t N>
constexpr auto llama::Array< T, N >::size ( ) const
inlineconstexpr

Definition at line 25 of file Array.hpp.

Friends And Related Function Documentation

◆ operator!=

template<typename T , std::size_t N>
constexpr friend auto operator!= ( const Array< T, N > &  a,
const Array< T, N > &  b 
) -> bool
friend

Definition at line 105 of file Array.hpp.

◆ operator+

template<typename T , std::size_t N>
constexpr friend auto operator+ ( const Array< T, N > &  a,
const Array< T, N > &  b 
) -> Array
friend

Definition at line 110 of file Array.hpp.

◆ operator==

template<typename T , std::size_t N>
constexpr friend auto operator== ( const Array< T, N > &  a,
const Array< T, N > &  b 
) -> bool
friend

Definition at line 97 of file Array.hpp.

Member Data Documentation

◆ element

template<typename T , std::size_t N>
T llama::Array< T, N >::element[N]

Definition at line 23 of file Array.hpp.


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