Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_Tuple.H File Reference
#include <AMReX_Config.H>
#include <AMReX_Array.H>
#include <AMReX_Functional.H>
#include <AMReX_GpuQualifiers.H>
#include <AMReX_TypeList.H>
#include <AMReX_TypeTraits.H>
#include <array>
#include <functional>
#include <tuple>

Go to the source code of this file.

Classes

class  amrex::GpuTuple< Ts >
 GPU-compatible tuple. More...
 
struct  amrex::GpuTupleSize< GpuTuple< Ts... > >
 
struct  amrex::GpuTupleElement< I, GpuTuple< Head, Tail... > >
 
struct  amrex::GpuTupleElement< 0, GpuTuple< Head, Tail... > >
 
struct  std::tuple_size< amrex::GpuTuple< Ts... > >
 
struct  std::tuple_element< std::size_t{0}, amrex::GpuTuple< T, Ts... > >
 
struct  std::tuple_element< s, amrex::GpuTuple< T, Ts... > >
 

Namespaces

namespace  amrex
 

Typedefs

template<class... Ts>
using amrex::Tuple = std::tuple< Ts... >
 

Functions

template<std::size_t I, typename... Ts>
__host__ __device__ constexpr GpuTupleElement< I, GpuTuple< Ts... > >::type & amrex::get (GpuTuple< Ts... > &tup) noexcept
 
template<std::size_t I, typename... Ts>
__host__ __device__ constexpr GpuTupleElement< I, GpuTuple< Ts... > >::type const & amrex::get (GpuTuple< Ts... > const &tup) noexcept
 
template<std::size_t I, typename... Ts>
__host__ __device__ constexpr GpuTupleElement< I, GpuTuple< Ts... > >::type && amrex::get (GpuTuple< Ts... > &&tup) noexcept
 
template<typename... Ts>
__host__ __device__ constexpr GpuTuple< detail::tuple_decay_t< Ts >... > amrex::makeTuple (Ts &&... args)
 
template<typename TP >
__host__ __device__ constexpr auto amrex::TupleCat (TP &&a) -> typename detail::tuple_cat_result< detail::tuple_decay_t< TP > >::type
 
template<typename TP1 , typename TP2 >
__host__ __device__ constexpr auto amrex::TupleCat (TP1 &&a, TP2 &&b) -> typename detail::tuple_cat_result< detail::tuple_decay_t< TP1 >, detail::tuple_decay_t< TP2 > >::type
 
template<typename TP1 , typename TP2 , typename... TPs>
__host__ __device__ constexpr auto amrex::TupleCat (TP1 &&a, TP2 &&b, TPs &&... args) -> typename detail::tuple_cat_result< detail::tuple_decay_t< TP1 >, detail::tuple_decay_t< TP2 >, detail::tuple_decay_t< TPs >... >::type
 
template<std::size_t... Is, typename... Args>
__host__ __device__ constexpr auto amrex::TupleSplit (const GpuTuple< Args... > &tup) noexcept
 Returns a GpuTuple of GpuTuples obtained by splitting the input GpuTuple according to the sizes specified by the template arguments.
 
template<typename F , typename TP >
__host__ __device__ constexpr auto amrex::Apply (F &&f, TP &&t) -> typename detail::apply_result< F, detail::tuple_decay_t< TP > >::type
 
template<typename... Args>
__host__ __device__ constexpr GpuTuple< Args &... > amrex::Tie (Args &... args) noexcept
 
template<typename... Ts>
__host__ __device__ constexpr GpuTuple< Ts &&... > amrex::ForwardAsTuple (Ts &&... args) noexcept
 
template<typename... Ts>
__host__ __device__ constexpr GpuTuple< Ts... > amrex::MakeZeroTuple (GpuTuple< Ts... >) noexcept
 Return a GpuTuple containing all zeros. Note that a default-constructed GpuTuple can have uninitialized values.
 
template<typename T >
__host__ __device__ constexpr auto amrex::tupleToArray (GpuTuple< T > const &tup)
 
template<typename T , typename T2 , typename... Ts, std::enable_if_t< Same< T, T2, Ts... >::value, int > = 0>
__host__ __device__ constexpr auto amrex::tupleToArray (GpuTuple< T, T2, Ts... > const &tup)
 Convert GpuTuple<T,T2,Ts...> to GpuArray.