Hydra  4.0.1
A header-only templated C++ framework to perform data analysis on massively parallel platforms.
hydra::Lambda< LambdaType, 0 > Class Template Reference

#include <Lambda.h>

Inheritance diagram for hydra::Lambda< LambdaType, 0 >:
Collaboration diagram for hydra::Lambda< LambdaType, 0 >:

Public Types

enum  { arity =detail::lambda_traits<LambdaType>::arity }
 
typedef detail::lambda_traits< LambdaType >::argument_type argument_type
 
typedef void hydra_lambda_type
 
typedef detail::lambda_traits< LambdaType >::return_type return_type
 

Public Member Functions

 Lambda ()=delete
 
 Lambda (LambdaType const &lambda)
 
__hydra_host__ __hydra_device__ Lambda (Lambda< LambdaType, 0 > const &other)
 
__hydra_host__ __hydra_device__ const LambdaType & GetLambda () const
 
__hydra_host__ __hydra_device__ double GetNorm () const
 
template<typename ... T>
__hydra_host__ __hydra_device__ std::enable_if<(!detail::is_valid_type_pack< argument_rvalue_type, T... >::value), return_type >::type operator() (T...x) const
 
template<typename ... T>
__hydra_host__ __hydra_device__ std::enable_if< detail::is_valid_type_pack< argument_rvalue_type, T... >::value, return_type >::type operator() (T...x) const
 Function call operator overload taking a pack of parameters convertible to the lambda signature. More...
 
template<typename T >
__hydra_host__ __hydra_device__ std::enable_if<(detail::is_tuple_type< typename std::decay< T >::type >::value) &&(!detail::is_tuple_of_function_arguments< typename std::decay< T >::type >::value) &&(std::is_convertible< typename std::decay< T >::type, argument_rvalue_type >::value), return_type >::type operator() (T x) const
 Unary function call operator overload taking a tuple containing the lambda arguments in any other. More...
 
template<typename T >
__hydra_host__ __hydra_device__ std::enable_if<(detail::is_tuple_type< typename std::decay< T >::type >::value) &&(detail::is_tuple_of_function_arguments< typename std::decay< T >::type >::value), return_type >::type operator() (T x) const
 Unary function call operator overload taking a tuple containing the lambda arguments in any other. More...
 
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if<(detail::is_tuple_type< typename std::decay< T1 >::type >::value) &&(detail::is_tuple_of_function_arguments< typename std::decay< T1 >::type >::value) &&(detail::is_tuple_type< typename std::decay< T2 >::type >::value) &&(detail::is_tuple_of_function_arguments< typename std::decay< T2 >::type >::value), return_type >::type operator() (T1 x, T2 y) const
 Binary function call operator overload taking two tuples containing the lambda arguments in any other. More...
 
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if<(!detail::is_tuple_type< typename std::decay< T1 >::type >::value) &&(detail::is_function_argument< typename std::decay< T1 >::type >::value) &&(detail::is_tuple_type< typename std::decay< T2 >::type >::value) &&(detail::is_tuple_of_function_arguments< typename std::decay< T2 >::type >::value), return_type >::type operator() (T1 x, T2 y) const
 Binary function call operator overload taking one tuple and a non-tuple, that containing put together would contain the lambda arguments in any other. More...
 
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if<(!detail::is_tuple_type< typename std::decay< T1 >::type >::value) &&(detail::is_function_argument< typename std::decay< T1 >::type >::value) &&(detail::is_tuple_type< typename std::decay< T2 >::type >::value) &&(detail::is_tuple_of_function_arguments< typename std::decay< T2 >::type >::value), return_type >::type operator() (T2 y, T1 x) const
 Binary function call operator overload taking one tuple and a non-tuple, that containing put together would contain the lambda arguments in any other. More...
 
template<typename T = LambdaType>
__hydra_host__ __hydra_device__ std::enable_if< std::is_copy_assignable< T >::value, Lambda< T, 0 > & >::type operator= (Lambda< T, 0 > const &other)
 
void PrintRegisteredParameters ()
 
__hydra_host__ __hydra_device__ void SetNorm (double norm)
 
- Public Member Functions inherited from hydra::detail::Parameters< 0 >
 Parameters ()=default
 
__hydra_host__ __hydra_device__ Parameters (std::initializer_list< Parameter >)
 
__hydra_host__ __hydra_device__ Parameters (std::array< Parameter, 0 > const &)
 
 Parameters (Parameters< 0 > const &)=default
 
void AddUserParameters (std::vector< hydra::Parameter *> &)
 
__hydra_host__ __hydra_device__ size_t GetNumberOfParameters () const
 
size_t GetParametersKey ()
 
__hydra_host__ __hydra_device__ Parameters< 0 > & operator= (Parameters< 0 > const &)
 
void PrintParameters ()
 Print registered parameters. More...
 
__hydra_host__ void SetParameters (const std::vector< double > &)
 Set parameters. More...
 

Detailed Description

template<typename LambdaType>
class hydra::Lambda< LambdaType, 0 >

Member Typedef Documentation

◆ argument_type

template<typename LambdaType >
typedef detail::lambda_traits<LambdaType>::argument_type hydra::Lambda< LambdaType, 0 >::argument_type

◆ hydra_lambda_type

template<typename LambdaType >
typedef void hydra::Lambda< LambdaType, 0 >::hydra_lambda_type

◆ return_type

template<typename LambdaType >
typedef detail::lambda_traits<LambdaType>::return_type hydra::Lambda< LambdaType, 0 >::return_type

Member Enumeration Documentation

◆ anonymous enum

template<typename LambdaType >
anonymous enum
Enumerator
arity 

Constructor & Destructor Documentation

◆ Lambda() [1/3]

template<typename LambdaType >
hydra::Lambda< LambdaType, 0 >::Lambda ( )
explicitdelete

◆ Lambda() [2/3]

template<typename LambdaType >
hydra::Lambda< LambdaType, 0 >::Lambda ( LambdaType const &  lambda)
inline

◆ Lambda() [3/3]

template<typename LambdaType >
__hydra_host__ __hydra_device__ hydra::Lambda< LambdaType, 0 >::Lambda ( Lambda< LambdaType, 0 > const &  other)
inline

Member Function Documentation

◆ GetLambda()

template<typename LambdaType >
__hydra_host__ __hydra_device__ const LambdaType& hydra::Lambda< LambdaType, 0 >::GetLambda ( ) const
inline

◆ GetNorm()

template<typename LambdaType >
__hydra_host__ __hydra_device__ double hydra::Lambda< LambdaType, 0 >::GetNorm ( ) const
inline

◆ operator()() [1/7]

template<typename LambdaType >
template<typename ... T>
__hydra_host__ __hydra_device__ std::enable_if< (!detail::is_valid_type_pack<argument_rvalue_type, T...>::value), return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( T...  x) const
inline

◆ operator()() [2/7]

template<typename LambdaType >
template<typename ... T>
__hydra_host__ __hydra_device__ std::enable_if< detail::is_valid_type_pack<argument_rvalue_type, T...>::value, return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( T...  x) const
inline

Function call operator overload taking a pack of parameters convertible to the lambda signature.

◆ operator()() [3/7]

template<typename LambdaType >
template<typename T >
__hydra_host__ __hydra_device__ std::enable_if< ( detail::is_tuple_type< typename std::decay<T>::type >::value ) && (!detail::is_tuple_of_function_arguments< typename std::decay<T>::type >::value) && ( std::is_convertible< typename std::decay<T>::type, argument_rvalue_type >::value ), return_type >::type hydra::Lambda< LambdaType, 0 >::operator() ( x) const
inline

Unary function call operator overload taking a tuple containing the lambda arguments in any other.

◆ operator()() [4/7]

template<typename LambdaType >
template<typename T >
__hydra_host__ __hydra_device__ std::enable_if< ( detail::is_tuple_type<typename std::decay<T>::type>::value ) && ( detail::is_tuple_of_function_arguments< typename std::decay<T>::type >::value), return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( x) const
inline

Unary function call operator overload taking a tuple containing the lambda arguments in any other.

◆ operator()() [5/7]

template<typename LambdaType >
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if< ( detail::is_tuple_type<typename std::decay<T1>::type>::value ) && ( detail::is_tuple_of_function_arguments< typename std::decay<T1>::type >::value ) && ( detail::is_tuple_type<typename std::decay<T2>::type>::value ) && ( detail::is_tuple_of_function_arguments< typename std::decay<T2>::type >::value ) , return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( T1  x,
T2  y 
) const
inline

Binary function call operator overload taking two tuples containing the lambda arguments in any other.

◆ operator()() [6/7]

template<typename LambdaType >
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if< (!detail::is_tuple_type< typename std::decay<T1>::type>::value ) && ( detail::is_function_argument< typename std::decay<T1>::type >::value ) && ( detail::is_tuple_type< typename std::decay<T2>::type>::value ) && ( detail::is_tuple_of_function_arguments< typename std::decay<T2>::type >::value ), return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( T1  x,
T2  y 
) const
inline

Binary function call operator overload taking one tuple and a non-tuple, that containing put together would contain the lambda arguments in any other.

◆ operator()() [7/7]

template<typename LambdaType >
template<typename T1 , typename T2 >
__hydra_host__ __hydra_device__ std::enable_if< (!detail::is_tuple_type< typename std::decay<T1>::type>::value ) && ( detail::is_function_argument< typename std::decay<T1>::type >::value ) && ( detail::is_tuple_type< typename std::decay<T2>::type>::value ) && ( detail::is_tuple_of_function_arguments< typename std::decay<T2>::type >::value ), return_type>::type hydra::Lambda< LambdaType, 0 >::operator() ( T2  y,
T1  x 
) const
inline

Binary function call operator overload taking one tuple and a non-tuple, that containing put together would contain the lambda arguments in any other.

◆ operator=()

template<typename LambdaType >
template<typename T = LambdaType>
__hydra_host__ __hydra_device__ std::enable_if< std::is_copy_assignable<T>::value, Lambda<T, 0> &>::type hydra::Lambda< LambdaType, 0 >::operator= ( Lambda< T, 0 > const &  other)
inline

◆ PrintRegisteredParameters()

template<typename LambdaType >
void hydra::Lambda< LambdaType, 0 >::PrintRegisteredParameters ( )
inline

◆ SetNorm()

template<typename LambdaType >
__hydra_host__ __hydra_device__ void hydra::Lambda< LambdaType, 0 >::SetNorm ( double  norm)
inline

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