TransposeFlag.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
36 #define _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_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_VECTOR_TYPE CONSTRAINT
55 //
56 //=================================================================================================
57 
58 //*************************************************************************************************
68 template< bool > struct CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED;
69 template<> struct CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
71 //*************************************************************************************************
72 
73 
74 //*************************************************************************************************
81 #define BLAZE_CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE(T) \
82  typedef \
83  blaze::CONSTRAINT_TEST< \
84  blaze::CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_FAILED< blaze::IsRowVector<T>::value >::value > \
85  BLAZE_JOIN( CONSTRAINT_MUST_BE_ROW_VECTOR_TYPE_TYPEDEF, __LINE__ )
86 //*************************************************************************************************
87 
88 
89 
90 
91 //=================================================================================================
92 //
93 // MUST_NOT_BE_ROW_VECTOR_TYPE CONSTRAINT
94 //
95 //=================================================================================================
96 
97 //*************************************************************************************************
107 template< bool > struct CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED;
108 template<> struct CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
110 //*************************************************************************************************
111 
112 
113 //*************************************************************************************************
120 #define BLAZE_CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE(T) \
121  typedef \
122  blaze::CONSTRAINT_TEST< \
123  blaze::CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_FAILED< !blaze::IsRowVector<T>::value >::value > \
124  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_ROW_VECTOR_TYPE_TYPEDEF, __LINE__ )
125 //*************************************************************************************************
126 
127 
128 
129 
130 //=================================================================================================
131 //
132 // MUST_BE_COLUMN_VECTOR_TYPE CONSTRAINT
133 //
134 //=================================================================================================
135 
136 //*************************************************************************************************
146 template< bool > struct CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED;
147 template<> struct CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
149 //*************************************************************************************************
150 
151 
152 //*************************************************************************************************
159 #define BLAZE_CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE(T) \
160  typedef \
161  blaze::CONSTRAINT_TEST< \
162  blaze::CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_FAILED< blaze::IsColumnVector<T>::value >::value > \
163  BLAZE_JOIN( CONSTRAINT_MUST_BE_COLUMN_VECTOR_TYPE_TYPEDEF, __LINE__ )
164 //*************************************************************************************************
165 
166 
167 
168 
169 //=================================================================================================
170 //
171 // MUST_NOT_BE_COLUMN_VECTOR_TYPE CONSTRAINT
172 //
173 //=================================================================================================
174 
175 //*************************************************************************************************
185 template< bool > struct CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED;
186 template<> struct CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
188 //*************************************************************************************************
189 
190 
191 //*************************************************************************************************
198 #define BLAZE_CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE(T) \
199  typedef \
200  blaze::CONSTRAINT_TEST< \
201  blaze::CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_FAILED< !blaze::IsColumnVector<T>::value >::value > \
202  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_COLUMN_VECTOR_TYPE_TYPEDEF, __LINE__ )
203 //*************************************************************************************************
204 
205 
206 
207 
208 //=================================================================================================
209 //
210 // MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG CONSTRAINT
211 //
212 //=================================================================================================
213 
214 //*************************************************************************************************
224 template< bool > struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED;
225 template<> struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED<true> { enum { value = 1 }; };
227 //*************************************************************************************************
228 
229 
230 //*************************************************************************************************
238 #define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T,TF) \
239  typedef \
240  blaze::CONSTRAINT_TEST< \
241  blaze::CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED< \
242  blaze::IsVector<T>::value && \
243  blaze::IsRowVector<T>::value == TF >::value > \
244  BLAZE_JOIN( CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
245 //*************************************************************************************************
246 
247 
248 
249 
250 //=================================================================================================
251 //
252 // VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG CONSTRAINT
253 //
254 //=================================================================================================
255 
256 //*************************************************************************************************
266 template< bool > struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED;
267 template<> struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED<true> { enum { value = 1 }; };
269 //*************************************************************************************************
270 
271 
272 //*************************************************************************************************
279 #define BLAZE_CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG(T1,T2) \
280  typedef \
281  blaze::CONSTRAINT_TEST< \
282  blaze::CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED< \
283  blaze::IsVector<T1>::value && \
284  blaze::IsVector<T2>::value && \
285  static_cast<int>( blaze::IsColumnVector<T1>::value ) == static_cast<int>( blaze::IsColumnVector<T2>::value ) >::value > \
286  BLAZE_JOIN( CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
287 //*************************************************************************************************
288 
289 } // namespace blaze
290 
291 #endif
Header file for the IsRowVector type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the IsVector type trait.
Constraint wrapper class.
Header file for the IsColumnVector type trait.
Header file for compile time constraints.