All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsMatMatSubExpr.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_ISMATMATSUBEXPR_H_
23 #define _BLAZE_MATH_TYPETRAITS_ISMATMATSUBEXPR_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
30 #include <boost/type_traits/remove_cv.hpp>
32 #include <blaze/util/FalseType.h>
33 #include <blaze/util/TrueType.h>
34 
35 
36 namespace blaze {
37 
38 //=================================================================================================
39 //
40 // CLASS DEFINITION
41 //
42 //=================================================================================================
43 
44 //*************************************************************************************************
49 template< typename T >
50 struct IsMatMatSubExprHelper
51 {
52  //**********************************************************************************************
53  enum { value = 0 };
54  typedef FalseType Type;
55  //**********************************************************************************************
56 };
58 //*************************************************************************************************
59 
60 
61 //*************************************************************************************************
63 
64 template< typename MT1, typename MT2, bool SO >
65 struct IsMatMatSubExprHelper< DMatDMatSubExpr<MT1,MT2,SO> > : public TrueType
66 {
67  public:
68  //**********************************************************************************************
69  enum { value = 1 };
70  typedef TrueType Type;
71  //**********************************************************************************************
72 };
74 //*************************************************************************************************
75 
76 
77 //*************************************************************************************************
79 
80 template< typename MT1, typename MT2, bool SO >
81 struct IsMatMatSubExprHelper< DMatSMatSubExpr<MT1,MT2,SO> > : public TrueType
82 {
83  public:
84  //**********************************************************************************************
85  enum { value = 1 };
86  typedef TrueType Type;
87  //**********************************************************************************************
88 };
90 //*************************************************************************************************
91 
92 
93 //*************************************************************************************************
95 
96 template< typename MT1, typename MT2 >
97 struct IsMatMatSubExprHelper< DMatTDMatSubExpr<MT1,MT2> > : public TrueType
98 {
99  public:
100  //**********************************************************************************************
101  enum { value = 1 };
102  typedef TrueType Type;
103  //**********************************************************************************************
104 };
106 //*************************************************************************************************
107 
108 
109 //*************************************************************************************************
111 
112 template< typename MT1, typename MT2 >
113 struct IsMatMatSubExprHelper< DMatTSMatSubExpr<MT1,MT2> > : public TrueType
114 {
115  public:
116  //**********************************************************************************************
117  enum { value = 1 };
118  typedef TrueType Type;
119  //**********************************************************************************************
120 };
122 //*************************************************************************************************
123 
124 
125 //*************************************************************************************************
127 
128 template< typename MT1, typename MT2, bool SO >
129 struct IsMatMatSubExprHelper< SMatDMatSubExpr<MT1,MT2,SO> > : public TrueType
130 {
131  public:
132  //**********************************************************************************************
133  enum { value = 1 };
134  typedef TrueType Type;
135  //**********************************************************************************************
136 };
138 //*************************************************************************************************
139 
140 
141 //*************************************************************************************************
143 
144 template< typename MT1, typename MT2 >
145 struct IsMatMatSubExprHelper< SMatSMatSubExpr<MT1,MT2> > : public TrueType
146 {
147  public:
148  //**********************************************************************************************
149  enum { value = 1 };
150  typedef TrueType Type;
151  //**********************************************************************************************
152 };
154 //*************************************************************************************************
155 
156 
157 //*************************************************************************************************
159 
160 template< typename MT1, typename MT2 >
161 struct IsMatMatSubExprHelper< SMatTDMatSubExpr<MT1,MT2> > : public TrueType
162 {
163  public:
164  //**********************************************************************************************
165  enum { value = 1 };
166  typedef TrueType Type;
167  //**********************************************************************************************
168 };
170 //*************************************************************************************************
171 
172 
173 //*************************************************************************************************
175 
176 template< typename MT1, typename MT2 >
177 struct IsMatMatSubExprHelper< SMatTSMatSubExpr<MT1,MT2> > : public TrueType
178 {
179  public:
180  //**********************************************************************************************
181  enum { value = 1 };
182  typedef TrueType Type;
183  //**********************************************************************************************
184 };
186 //*************************************************************************************************
187 
188 
189 //*************************************************************************************************
191 
192 template< typename MT1, typename MT2 >
193 struct IsMatMatSubExprHelper< TDMatSMatSubExpr<MT1,MT2> > : public TrueType
194 {
195  public:
196  //**********************************************************************************************
197  enum { value = 1 };
198  typedef TrueType Type;
199  //**********************************************************************************************
200 };
202 //*************************************************************************************************
203 
204 
205 //*************************************************************************************************
207 
208 template< typename MT1, typename MT2 >
209 struct IsMatMatSubExprHelper< TSMatDMatSubExpr<MT1,MT2> > : public TrueType
210 {
211  public:
212  //**********************************************************************************************
213  enum { value = 1 };
214  typedef TrueType Type;
215  //**********************************************************************************************
216 };
218 //*************************************************************************************************
219 
220 
221 //*************************************************************************************************
223 
224 template< typename MT1, typename MT2 >
225 struct IsMatMatSubExprHelper< TSMatSMatSubExpr<MT1,MT2> > : public TrueType
226 {
227  public:
228  //**********************************************************************************************
229  enum { value = 1 };
230  typedef TrueType Type;
231  //**********************************************************************************************
232 };
234 //*************************************************************************************************
235 
236 
237 //*************************************************************************************************
239 
240 template< typename MT1, typename MT2 >
241 struct IsMatMatSubExprHelper< TSMatTSMatSubExpr<MT1,MT2> > : public TrueType
242 {
243  public:
244  //**********************************************************************************************
245  enum { value = 1 };
246  typedef TrueType Type;
247  //**********************************************************************************************
248 };
250 //*************************************************************************************************
251 
252 
253 //*************************************************************************************************
263 template< typename T >
264 struct IsMatMatSubExpr : public IsMatMatSubExprHelper< typename boost::remove_cv<T>::type >::Type
265 {
266  public:
267  //**********************************************************************************************
269  enum { value = IsMatMatSubExprHelper< typename boost::remove_cv<T>::type >::value };
270  typedef typename IsMatMatSubExprHelper< typename boost::remove_cv<T>::type >::Type Type;
272  //**********************************************************************************************
273 };
274 //*************************************************************************************************
275 
276 } // namespace blaze
277 
278 #endif