All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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.
Header file for the IsVector type trait.
Constraint wrapper class.
Header file for the IsColumnVector type trait.
Header file for compile time constraints.