35 #ifndef _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
36 #define _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
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 }; };
81 #define BLAZE_CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE(T) \
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__ )
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 }; };
121 #define BLAZE_CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE(T) \
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__ )
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 }; };
161 #define BLAZE_CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
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__ )
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 }; };
201 #define BLAZE_CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
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__ )
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 }; };
242 #define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T,SO) \
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__ )
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 }; };
283 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER(T1,T2) \
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__ )
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 }; };
325 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER(T1,T2) \
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__ )
Header file for the IsColumnMajorMatrix type trait.
Header file for the IsMatrix type trait.
Constraint wrapper class.
Header file for the IsRowMajorMatrix type trait.
Header file for compile time constraints.