MADNESS  version 0.9
Classes | Namespaces | Macros | Functions | Variables
type_data.h File Reference

Defines and implements TensorTypeData, a type traits class. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  madness::TensorTypeData< T >
 Traits class to specify support of numeric types. More...
 
class  madness::TensorTypeFromId< id >
 This provides the reverse mapping from integer id to type name. More...
 
struct  madness::IsSupported< TypeData, typename, bool >
 
struct  madness::IsSupported< TypeData, ReturnType, true >
 
struct  madness::TensorResultType< leftT, rightT >
 TensorResultType<L,R>::type is the type of (L op R) where op is nominally multiplication. More...
 

Namespaces

 madness
 Holds machinery to set up Functions/FuncImpls using various Factories and Interfaces.
 

Macros

#define TYPEINFO(num, T, iscmplx, mcpyok, realT, floatrealT)
 
#define TENSOR_MAX_TYPE_ID   5
 
#define SPEC(L, R, T)
 
#define DPEC(L, R, T)   template <> struct TensorResultType<L,L> {typedef T type;}
 
#define TENSOR_RESULT_TYPE(L, R)   typename TensorResultType<L,R>::type
 This macro simplifies access to TensorResultType. More...
 

Functions

 madness::TYPEINFO (0, int, false, true, int, double)
 
 madness::TYPEINFO (1, long, false, true, long, double)
 
 madness::TYPEINFO (2, float, false, true, float, float)
 
 madness::TYPEINFO (3, double, false, true, double, double)
 
 madness::TYPEINFO (4, float_complex, true, true, float, float)
 
 madness::TYPEINFO (5, double_complex, true, true, double, double)
 
 madness::DPEC (int, int, int)
 
 madness::SPEC (int, long, long)
 
 madness::SPEC (int, float, float)
 
 madness::SPEC (int, double, double)
 
 madness::SPEC (int, float_complex, float_complex)
 
 madness::SPEC (int, double_complex, double_complex)
 
 madness::DPEC (long, long, long)
 
 madness::SPEC (long, float, float)
 
 madness::SPEC (long, double, double)
 
 madness::SPEC (long, float_complex, float_complex)
 
 madness::SPEC (long, double_complex, double_complex)
 
 madness::DPEC (float, float, float)
 
 madness::SPEC (float, double, double)
 
 madness::SPEC (float, float_complex, float_complex)
 
 madness::SPEC (float, double_complex, double_complex)
 
 madness::DPEC (double, double, double)
 
 madness::SPEC (double, float_complex, float_complex)
 
 madness::SPEC (double, double_complex, double_complex)
 
 madness::DPEC (float_complex, float_complex, float_complex)
 
 madness::SPEC (float_complex, double_complex, double_complex)
 
 madness::DPEC (double_complex, double_complex, double_complex)
 

Variables

const char * madness::tensor_type_names []
 

Detailed Description

Defines and implements TensorTypeData, a type traits class.

Macro Definition Documentation

#define DPEC (   L,
  R,
 
)    template <> struct TensorResultType<L,L> {typedef T type;}
#define SPEC (   L,
  R,
 
)
Value:
template <> struct TensorResultType<L,R> {typedef T type;}; \
template <> struct TensorResultType<R,L> {typedef T type;}
const double R
Definition: dielectric.cc:191
const double L
Definition: 3dharmonic.cc:123
const T1 &f1 return GTEST_2_TUPLE_() T(f0, f1)
#define TENSOR_MAX_TYPE_ID   5
#define TENSOR_RESULT_TYPE (   L,
  R 
)    typename TensorResultType<L,R>::type

This macro simplifies access to TensorResultType.

#define TYPEINFO (   num,
  T,
  iscmplx,
  mcpyok,
  realT,
  floatrealT 
)
Value:
template<> class TensorTypeData<T> {\
public: \
enum {id = num}; \
enum {supported = true}; \
enum {iscomplex = iscmplx}; \
enum {memcopyok = mcpyok}; \
typedef T type; \
typedef realT scalar_type; \
typedef floatrealT float_scalar_type; \
}; \
template<> class TensorTypeFromId<num> {\
public: \
typedef T type; \
}
const T1 &f1 return GTEST_2_TUPLE_() T(f0, f1)