Hydra  4.0.1
A header-only templated C++ framework to perform data analysis on massively parallel platforms.
FunctionArgument.h File Reference
Include dependency graph for FunctionArgument.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  hydra::detail::FunctionArgument< Derived, Type >
 

Namespaces

 hydra
 Generic policies definition.
 
 hydra::arguments
 
 hydra::detail
 

Macros

#define declarg(NAME, TYPE)
 

Functions

template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) *std::declval< Arg2 >))>::type hydra::arguments::operator* (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) *std::declval< Arg2 >))>::type hydra::arguments::operator* (Arg2 const &a2, Arg1 const &a1)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument_pack< Arg1, Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) *std::declval< typename Arg2::value_type >))>::type hydra::arguments::operator* (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)+std::declval< Arg2 >))>::type hydra::arguments::operator+ (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)+std::declval< Arg2 >))>::type hydra::arguments::operator+ (Arg2 const &a2, Arg1 const &a1)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument_pack< Arg1, Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)+std::declval< typename Arg2::value_type >))>::type hydra::arguments::operator+ (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) - std::declval< Arg2 >))>::type hydra::arguments::operator- (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) - std::declval< Arg2 >))>::type hydra::arguments::operator- (Arg2 const &a2, Arg1 const &a1)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument_pack< Arg1, Arg2 >::value, decltype(std::declval< typename Arg1::value_type >) - std::declval< typename Arg2::value_type >))>::type hydra::arguments::operator- (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)/std::declval< Arg2 >))>::type hydra::arguments::operator/ (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument< Arg1 >::value &&!detail::is_function_argument< Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)/std::declval< Arg2 >))>::type hydra::arguments::operator/ (Arg2 const &a2, Arg1 const &a1)
 
template<typename Arg1 , typename Arg2 >
__hydra_host__ __hydra_device__ std::enable_if< detail::is_function_argument_pack< Arg1, Arg2 >::value, decltype(std::declval< typename Arg1::value_type >)/std::declval< typename Arg2::value_type >))>::type hydra::arguments::operator/ (Arg1 const &a1, Arg2 const &a2)
 
template<typename Arg >
std::enable_if< detail::is_function_argument< Arg >::value, std::ostream & >::type hydra::arguments::operator<< (std::ostream &s, const hydra::thrust::device_reference< Arg > &a)
 
template<typename Arg >
std::enable_if< detail::is_function_argument< Arg >::value, std::ostream & >::type hydra::arguments::operator<< (std::ostream &s, const Arg &a)
 

Macro Definition Documentation

◆ declarg

#define declarg (   NAME,
  TYPE 
)