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 
46 #include <blaze/util/Suffix.h>
47 
48 
49 namespace blaze {
50 
51 //=================================================================================================
52 //
53 // MUST_BE_MATRIX_WITH_STORAGE_ORDER CONSTRAINT
54 //
55 //=================================================================================================
56 
57 //*************************************************************************************************
67 template< bool > struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED;
68 template<> struct CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
70 //*************************************************************************************************
71 
72 
73 //*************************************************************************************************
81 #define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T,SO) \
82  typedef \
83  blaze::CONSTRAINT_TEST< \
84  blaze::CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_FAILED< \
85  blaze::IsMatrix<T>::value && \
86  blaze::StorageOrder<T>::value == SO >::value > \
87  BLAZE_JOIN( CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER_TYPEDEF, __LINE__ )
88 //*************************************************************************************************
89 
90 
91 
92 
93 //=================================================================================================
94 //
95 // MATRICES_MUST_HAVE_SAME_STORAGE_ORDER CONSTRAINT
96 //
97 //=================================================================================================
98 
99 //*************************************************************************************************
109 template< bool > struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED;
110 template<> struct CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
112 //*************************************************************************************************
113 
114 
115 //*************************************************************************************************
122 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER(T1,T2) \
123  typedef \
124  blaze::CONSTRAINT_TEST< \
125  blaze::CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_FAILED< \
126  blaze::IsMatrix<T1>::value && \
127  blaze::IsMatrix<T2>::value && \
128  blaze::StorageOrder<T1>::value == blaze::StorageOrder<T2>::value >::value > \
129  BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_SAME_STORAGE_ORDER_TYPEDEF, __LINE__ )
130 //*************************************************************************************************
131 
132 
133 
134 
135 //=================================================================================================
136 //
137 // MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER CONSTRAINT
138 //
139 //=================================================================================================
140 
141 //*************************************************************************************************
151 template< bool > struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED;
152 template<> struct CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED<true> { enum { value = 1 }; };
154 //*************************************************************************************************
155 
156 
157 //*************************************************************************************************
164 #define BLAZE_CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER(T1,T2) \
165  typedef \
166  blaze::CONSTRAINT_TEST< \
167  blaze::CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_FAILED< \
168  blaze::IsMatrix<T1>::value && \
169  blaze::IsMatrix<T2>::value && \
170  blaze::StorageOrder<T1>::value != blaze::StorageOrder<T2>::value >::value > \
171  BLAZE_JOIN( CONSTRAINT_MATRICES_MUST_HAVE_DIFFERENT_STORAGE_ORDER_TYPEDEF, __LINE__ )
172 //*************************************************************************************************
173 
174 } // namespace blaze
175 
176 #endif
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 StorageOrder type trait.
Header file for compile time constraints.