Low-Level Abstraction of Memory Access
Tuple.hpp File Reference
#include "Meta.hpp"
#include "macros.hpp"
+ Include dependency graph for Tuple.hpp:

Go to the source code of this file.

Classes

struct  llama::internal::TupleLeaf< I, T, bool >
 
struct  llama::internal::TupleLeaf< I, T, true >
 
struct  llama::Tuple< Elements >
 
struct  llama::Tuple< TFirstElement, RestElements... >
 Tuple class like std::tuple but suitable for use with offloading devices like GPUs. More...
 
struct  std::tuple_size< llama::Tuple< Elements... > >
 
struct  std::tuple_element< I, llama::Tuple< Elements... > >
 

Namespaces

 llama
 
 llama::internal
 

Functions

template<typename... Elements>
 llama::Tuple (Elements...) -> Tuple< std::remove_cv_t< std::remove_reference_t< Elements >>... >
 
template<std::size_t I, typename... Elements>
constexpr auto llama::get (Tuple< Elements... > &tuple) -> auto &
 
template<std::size_t I, typename... Elements>
constexpr auto llama::get (const Tuple< Elements... > &tuple) -> const auto &
 
template<typename... Elements, std::size_t... Is>
constexpr auto llama::internal::areEqual (const Tuple< Elements... > &a, const Tuple< Elements... > &b, std::index_sequence< Is... >) -> bool
 
template<typename... ElementsA, typename... ElementsB>
constexpr auto llama::operator== (const Tuple< ElementsA... > &a, const Tuple< ElementsB... > &b) -> bool
 
template<typename... ElementsA, typename... ElementsB>
constexpr auto llama::operator!= (const Tuple< ElementsA... > &a, const Tuple< ElementsB... > &b) -> bool
 
template<typename Tuple1 , typename Tuple2 , size_t... Is1, size_t... Is2>
constexpr auto llama::internal::tupleCatImpl (const Tuple1 &t1, const Tuple2 &t2, std::index_sequence< Is1... >, std::index_sequence< Is2... >)
 
template<typename Tuple1 , typename Tuple2 >
constexpr auto llama::tupleCat (const Tuple1 &t1, const Tuple2 &t2)
 
template<std::size_t Pos, typename Tuple , typename Replacement , std::size_t... IsBefore, std::size_t... IsAfter>
constexpr auto llama::internal::tupleReplaceImpl (Tuple &&tuple, Replacement &&replacement, std::index_sequence< IsBefore... >, std::index_sequence< IsAfter... >)
 
template<std::size_t Pos, typename Tuple , typename Replacement >
constexpr auto llama::tupleReplace (Tuple &&tuple, Replacement &&replacement)
 Creates a copy of a tuple with the element at position Pos replaced by replacement. More...
 
template<size_t... Is, typename... Elements, typename Functor >
constexpr auto llama::internal::tupleTransformHelper (std::index_sequence< Is... >, const Tuple< Elements... > &tuple, const Functor &functor)
 
template<typename... Elements, typename Functor >
constexpr auto llama::tupleTransform (const Tuple< Elements... > &tuple, const Functor &functor)
 
template<typename... Elements>
constexpr auto llama::popFront (const Tuple< Elements... > &tuple)
 Returns a copy of the tuple without the first element. More...