StorageOrder.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
36 #define _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
47 #include <blaze/util/Suffix.h>
48 
49 
50 namespace blaze {
51 
52 //=================================================================================================
53 //
54 // MUST_BE_ROW_MAJOR_MATRIX_TYPE CONSTRAINT
55 //
56 //=================================================================================================
57 
58 //*************************************************************************************************
68 template< bool > struct CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED;
69 template<> struct CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED<true> { enum { value = 1 }; };
71 //*************************************************************************************************
72 
73 
74 //*************************************************************************************************
81 #define BLAZE_CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE(T) \
82  typedef \
83  blaze::CONSTRAINT_TEST< \
84  blaze::CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED< \
85  blaze::IsRowMajorMatrix<T>::value >::value > \
86  BLAZE_JOIN( CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
87 //*************************************************************************************************
88 
89 
90 
91 
92 //=================================================================================================
93 //
94 // MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE CONSTRAINT
95 //
96 //=================================================================================================
97 
98 //*************************************************************************************************
108 template< bool > struct CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED;
109 template<> struct CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED<true> { enum { value = 1 }; };
111 //*************************************************************************************************
112 
113 
114 //*************************************************************************************************
121 #define BLAZE_CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE(T) \
122  typedef \
123  blaze::CONSTRAINT_TEST< \
124  blaze::CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED< \
125  !blaze::IsRowMajorMatrix<T>::value >::value \
126  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
127 //*************************************************************************************************
128 
129 
130 
131 
132 //=================================================================================================
133 //
134 // MUST_BE_COLUMN_MAJOR_MATRIX_TYPE CONSTRAINT
135 //
136 //=================================================================================================
137 
138 //*************************************************************************************************
148 template< bool > struct CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED;
149 template<> struct CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED<true> { enum { value = 1 }; };
151 //*************************************************************************************************
152 
153 
154 //*************************************************************************************************
161 #define BLAZE_CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
162  typedef \
163  blaze::CONSTRAINT_TEST< \
164  blaze::CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED< \
165  blaze::IsColumnMajorMatrix<T>::value >::value > \
166  BLAZE_JOIN( CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
167 //*************************************************************************************************
168 
169 
170 
171 
172 //=================================================================================================
173 //
174 // MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE CONSTRAINT
175 //
176 //=================================================================================================
177 
178 //*************************************************************************************************
188 template< bool > struct CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED;
189 template<> struct CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED<true> { enum { value = 1 }; };
191 //*************************************************************************************************
192 
193 
194 //*************************************************************************************************
201 #define BLAZE_CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
202  typedef \
203  blaze::CONSTRAINT_TEST< \
204  blaze::CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED< \
205  !blaze::IsColumnMajorMatrix<T>::value >::value > \
206  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
207 //*************************************************************************************************
208 
209 
210 
211 
212 //=================================================================================================
213 //
214 // MUST_BE_MATRIX_WITH_STORAGE_ORDER CONSTRAINT
215 //
216 //=================================================================================================
217 
218 //*************************************************************************************************
228 template< bool > struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED;
229 template<> struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
231 //*************************************************************************************************
232 
233 
234 //*************************************************************************************************
242 #define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T,SO) \
243  typedef \
244  blaze::CONSTRAINT_TEST< \
245  blaze::CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED< \
246  blaze::IsMatrix<T>::value && \
247  blaze::IsColumnMajorMatrix<T>::value == SO >::value > \
248  BLAZE_JOIN( CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_TYPEDEF, __LINE__ )
249 //*************************************************************************************************
250 
251 
252 
253 
254 //=================================================================================================
255 //
256 // MATRICES_MUST_HAVE_SAME_STORAGE_ORDER CONSTRAINT
257 //
258 //=================================================================================================
259 
260 //*************************************************************************************************
270 template< bool > struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED;
271 template<> struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
273 //*************************************************************************************************
274 
275 
276 //*************************************************************************************************
283 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER(T1,T2) \
284  typedef \
285  blaze::CONSTRAINT_TEST< \
286  blaze::CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED< \
287  blaze::IsMatrix<T1>::value && \
288  blaze::IsMatrix<T2>::value && \
289  static_cast<int>( blaze::IsRowMajorMatrix<T1>::value ) == static_cast<int>( blaze::IsRowMajorMatrix<T2>::value ) >::value > \
290  BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_TYPEDEF, __LINE__ )
291 //*************************************************************************************************
292 
293 
294 
295 
296 //=================================================================================================
297 //
298 // MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER CONSTRAINT
299 //
300 //=================================================================================================
301 
302 //*************************************************************************************************
312 template< bool > struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED;
313 template<> struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
315 //*************************************************************************************************
316 
317 
318 //*************************************************************************************************
325 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER(T1,T2) \
326  typedef \
327  blaze::CONSTRAINT_TEST< \
328  blaze::CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED< \
329  blaze::IsMatrix<T1>::value && \
330  blaze::IsMatrix<T2>::value && \
331  static_cast<int>( blaze::IsRowMajorMatrix<T1>::value ) != static_cast<int>( blaze::IsRowMajorMatrix<T2>::value ) >::value > \
332  BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_TYPEDEF, __LINE__ )
333 //*************************************************************************************************
334 
335 } // namespace blaze
336 
337 #endif
Header file for the IsColumnMajorMatrix type trait.
Header file for the IsMatrix type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Constraint wrapper class.
Header file for the IsRowMajorMatrix type trait.
Header file for compile time constraints.