22 #ifndef _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
23 #define _BLAZE_MATH_CONSTRAINTS_STORAGEORDER_H_
55 template<
bool >
struct CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED;
56 template<>
struct CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED<true> {
enum { value = 1 }; };
68 #define BLAZE_CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE(T) \
70 blaze::CONSTRAINT_TEST< \
71 blaze::CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_FAILED< \
72 blaze::IsRowMajorMatrix<T>::value >::value > \
73 BLAZE_JOIN( CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
95 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED;
96 template<>
struct CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED<true> {
enum { value = 1 }; };
108 #define BLAZE_CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE(T) \
110 blaze::CONSTRAINT_TEST< \
111 blaze::CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_FAILED< \
112 !blaze::IsRowMajorMatrix<T>::value >::value \
113 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_ROW_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
135 template<
bool >
struct CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED;
136 template<>
struct CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED<true> {
enum { value = 1 }; };
148 #define BLAZE_CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
150 blaze::CONSTRAINT_TEST< \
151 blaze::CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED< \
152 blaze::IsColumnMajorMatrix<T>::value >::value > \
153 BLAZE_JOIN( CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
175 template<
bool >
struct CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED;
176 template<>
struct CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED<true> {
enum { value = 1 }; };
188 #define BLAZE_CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE(T) \
190 blaze::CONSTRAINT_TEST< \
191 blaze::CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_FAILED< \
192 !blaze::IsColumnMajorMatrix<T>::value >::value > \
193 BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_COLUMN_MAJOR_MATRIX_TYPE_TYPEDEF, __LINE__ )
215 template<
bool >
struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED;
216 template<>
struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED<true> {
enum { value = 1 }; };
229 #define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T,SO) \
231 blaze::CONSTRAINT_TEST< \
232 blaze::CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED< \
233 blaze::IsMatrix<T>::value && \
234 blaze::IsColumnMajorMatrix<T>::value == SO >::value > \
235 BLAZE_JOIN( CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_TYPEDEF, __LINE__ )
257 template<
bool >
struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED;
258 template<>
struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED<true> {
enum { value = 1 }; };
270 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER(T1,T2) \
272 blaze::CONSTRAINT_TEST< \
273 blaze::CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED< \
274 blaze::IsMatrix<T1>::value && \
275 blaze::IsMatrix<T2>::value && \
276 static_cast<int>( blaze::IsRowMajorMatrix<T1>::value ) == static_cast<int>( blaze::IsRowMajorMatrix<T2>::value ) >::value > \
277 BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_TYPEDEF, __LINE__ )
299 template<
bool >
struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED;
300 template<>
struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED<true> {
enum { value = 1 }; };
312 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER(T1,T2) \
314 blaze::CONSTRAINT_TEST< \
315 blaze::CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED< \
316 blaze::IsMatrix<T1>::value && \
317 blaze::IsMatrix<T2>::value && \
318 static_cast<int>( blaze::IsRowMajorMatrix<T1>::value ) != static_cast<int>( blaze::IsRowMajorMatrix<T2>::value ) >::value > \
319 BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_TYPEDEF, __LINE__ )