All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IsMatMatMultExpr.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_TYPETRAITS_ISMATMATMULTEXPR_H_
23 #define _BLAZE_MATH_TYPETRAITS_ISMATMATMULTEXPR_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 IsMatMatMultExprHelper
51 {
52  //**********************************************************************************************
53  enum { value = 0 };
54  typedef FalseType Type;
55  //**********************************************************************************************
56 };
58 //*************************************************************************************************
59 
60 
61 //*************************************************************************************************
63 
64 template< typename MT1, typename MT2 >
65 struct IsMatMatMultExprHelper< DMatDMatMultExpr<MT1,MT2> > : 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 >
81 struct IsMatMatMultExprHelper< DMatTDMatMultExpr<MT1,MT2> > : 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 IsMatMatMultExprHelper< TDMatDMatMultExpr<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 IsMatMatMultExprHelper< TDMatTDMatMultExpr<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 >
129 struct IsMatMatMultExprHelper< DMatSMatMultExpr<MT1,MT2> > : 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 IsMatMatMultExprHelper< DMatTSMatMultExpr<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 IsMatMatMultExprHelper< TDMatSMatMultExpr<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 IsMatMatMultExprHelper< TDMatTSMatMultExpr<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 IsMatMatMultExprHelper< SMatDMatMultExpr<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 IsMatMatMultExprHelper< SMatTDMatMultExpr<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 IsMatMatMultExprHelper< TSMatDMatMultExpr<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 IsMatMatMultExprHelper< TSMatTDMatMultExpr<MT1,MT2> > : public TrueType
242 {
243  public:
244  //**********************************************************************************************
245  enum { value = 1 };
246  typedef TrueType Type;
247  //**********************************************************************************************
248 };
250 //*************************************************************************************************
251 
252 
253 //*************************************************************************************************
255 
256 template< typename MT1, typename MT2 >
257 struct IsMatMatMultExprHelper< SMatSMatMultExpr<MT1,MT2> > : public TrueType
258 {
259  public:
260  //**********************************************************************************************
261  enum { value = 1 };
262  typedef TrueType Type;
263  //**********************************************************************************************
264 };
266 //*************************************************************************************************
267 
268 
269 //*************************************************************************************************
271 
272 template< typename MT1, typename MT2 >
273 struct IsMatMatMultExprHelper< SMatTSMatMultExpr<MT1,MT2> > : public TrueType
274 {
275  public:
276  //**********************************************************************************************
277  enum { value = 1 };
278  typedef TrueType Type;
279  //**********************************************************************************************
280 };
282 //*************************************************************************************************
283 
284 
285 //*************************************************************************************************
287 
288 template< typename MT1, typename MT2 >
289 struct IsMatMatMultExprHelper< TSMatSMatMultExpr<MT1,MT2> > : public TrueType
290 {
291  public:
292  //**********************************************************************************************
293  enum { value = 1 };
294  typedef TrueType Type;
295  //**********************************************************************************************
296 };
298 //*************************************************************************************************
299 
300 
301 //*************************************************************************************************
303 
304 template< typename MT1, typename MT2 >
305 struct IsMatMatMultExprHelper< TSMatTSMatMultExpr<MT1,MT2> > : public TrueType
306 {
307  public:
308  //**********************************************************************************************
309  enum { value = 1 };
310  typedef TrueType Type;
311  //**********************************************************************************************
312 };
314 //*************************************************************************************************
315 
316 
317 //*************************************************************************************************
327 template< typename T >
328 struct IsMatMatMultExpr : public IsMatMatMultExprHelper< typename boost::remove_cv<T>::type >::Type
329 {
330  public:
331  //**********************************************************************************************
333  enum { value = IsMatMatMultExprHelper< typename boost::remove_cv<T>::type >::value };
334  typedef typename IsMatMatMultExprHelper< typename boost::remove_cv<T>::type >::Type Type;
336  //**********************************************************************************************
337 };
338 //*************************************************************************************************
339 
340 } // namespace blaze
341 
342 #endif