Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
blaze
math
traits
EvalExprTrait.h
Go to the documentation of this file.
1
//=================================================================================================
20
//=================================================================================================
21
22
#ifndef _BLAZE_MATH_TRAITS_EVALEXPRTRAIT_H_
23
#define _BLAZE_MATH_TRAITS_EVALEXPRTRAIT_H_
24
25
26
//*************************************************************************************************
27
// Includes
28
//*************************************************************************************************
29
30
#include <
blaze/math/traits/DMatEvalExprTrait.h
>
31
#include <
blaze/math/traits/DVecEvalExprTrait.h
>
32
#include <
blaze/math/traits/SMatEvalExprTrait.h
>
33
#include <
blaze/math/traits/SVecEvalExprTrait.h
>
34
#include <
blaze/math/traits/TDMatEvalExprTrait.h
>
35
#include <
blaze/math/traits/TDVecEvalExprTrait.h
>
36
#include <
blaze/math/traits/TSMatEvalExprTrait.h
>
37
#include <
blaze/math/traits/TSVecEvalExprTrait.h
>
38
#include <
blaze/math/typetraits/IsDenseMatrix.h
>
39
#include <
blaze/math/typetraits/IsDenseVector.h
>
40
#include <
blaze/math/typetraits/IsMatrix.h
>
41
#include <
blaze/math/typetraits/IsRowMajorMatrix.h
>
42
#include <
blaze/math/typetraits/IsTransposeVector.h
>
43
#include <
blaze/math/typetraits/IsVector.h
>
44
#include <
blaze/util/InvalidType.h
>
45
#include <
blaze/util/mpl/If.h
>
46
#include <
blaze/util/typetraits/IsConst.h
>
47
#include <
blaze/util/typetraits/IsNumeric.h
>
48
#include <
blaze/util/typetraits/IsReference.h
>
49
#include <
blaze/util/typetraits/IsVolatile.h
>
50
#include <
blaze/util/typetraits/RemoveCV.h
>
51
#include <
blaze/util/typetraits/RemoveReference.h
>
52
53
54
namespace
blaze {
55
56
//=================================================================================================
57
//
58
// CLASS DEFINITION
59
//
60
//=================================================================================================
61
62
//*************************************************************************************************
72
template
<
typename
T >
// Type of the evaluation operand
73
struct
EvalExprTrait
74
{
75
private
:
76
//**struct Failure******************************************************************************
78
struct
Failure {
typedef
INVALID_TYPE Type; };
80
//**********************************************************************************************
81
82
//**********************************************************************************************
84
enum
{ qualified =
IsConst<T>::value
||
IsVolatile<T>::value
||
IsReference<T>::value
};
86
//**********************************************************************************************
87
88
//**********************************************************************************************
90
typedef
typename
If< IsMatrix<T>
91
,
typename
If< IsDenseMatrix<T>
92
,
typename
If< IsRowMajorMatrix<T>
93
,
DMatEvalExprTrait<T>
94
,
TDMatEvalExprTrait<T>
95
>::Type
96
,
typename
If< IsRowMajorMatrix<T>
97
,
SMatEvalExprTrait<T>
98
,
TSMatEvalExprTrait<T>
99
>::Type
100
>::Type
101
,
typename
If< IsVector<T>
102
,
typename
If< IsDenseVector<T>
103
,
typename
If< IsTransposeVector<T>
104
,
TDVecEvalExprTrait<T>
105
,
DVecEvalExprTrait<T>
106
>::Type
107
,
typename
If< IsTransposeVector<T>
108
,
TSVecEvalExprTrait<T>
109
,
SVecEvalExprTrait<T>
110
>::Type
111
>::Type
112
, Failure
113
>::Type
114
>::Type Tmp;
115
116
typedef
typename
RemoveReference< typename RemoveCV<T>::Type
>::Type Type1;
118
//**********************************************************************************************
119
120
public
:
121
//**********************************************************************************************
123
typedef
typename
SelectType< qualified, EvalExprTrait<Type1>
, Tmp >::Type::Type Type;
125
//**********************************************************************************************
126
};
127
//*************************************************************************************************
128
129
}
// namespace blaze
130
131
#endif
Generated on Fri May 24 2013 16:39:56 by
1.8.3.1