All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TransposeFlag.h
Go to the documentation of this file.
1 //=================================================================================================
20 //=================================================================================================
21 
22 #ifndef _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
23 #define _BLAZE_MATH_CONSTRAINTS_TRANSPOSEFLAG_H_
24 
25 
26 //*************************************************************************************************
27 // Includes
28 //*************************************************************************************************
29 
33 #include <blaze/util/Suffix.h>
34 
35 
36 namespace blaze {
37 
38 //=================================================================================================
39 //
40 // MUST_BE_TRANSPOSE_VECTOR_TYPE CONSTRAINT
41 //
42 //=================================================================================================
43 
44 //*************************************************************************************************
54 template< bool > struct CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED;
55 template<> struct CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
57 //*************************************************************************************************
58 
59 
60 //*************************************************************************************************
67 #define BLAZE_CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE(T) \
68  typedef \
69  blaze::CONSTRAINT_TEST< \
70  blaze::CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_FAILED< blaze::IsTransposeVector<T>::value >::value > \
71  BLAZE_JOIN( CONSTRAINT_MUST_BE_TRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
72 //*************************************************************************************************
73 
74 
75 
76 
77 //=================================================================================================
78 //
79 // MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE CONSTRAINT
80 //
81 //=================================================================================================
82 
83 //*************************************************************************************************
93 template< bool > struct CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED;
94 template<> struct CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
96 //*************************************************************************************************
97 
98 
99 //*************************************************************************************************
106 #define BLAZE_CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE(T) \
107  typedef \
108  blaze::CONSTRAINT_TEST< \
109  blaze::CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_FAILED< !blaze::IsTransposeVector<T>::value >::value > \
110  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_TRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
111 //*************************************************************************************************
112 
113 
114 
115 
116 //=================================================================================================
117 //
118 // MUST_BE_NONTRANSPOSE_VECTOR_TYPE CONSTRAINT
119 //
120 //=================================================================================================
121 
122 //*************************************************************************************************
132 template< bool > struct CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED;
133 template<> struct CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
135 //*************************************************************************************************
136 
137 
138 //*************************************************************************************************
145 #define BLAZE_CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE(T) \
146  typedef \
147  blaze::CONSTRAINT_TEST< \
148  blaze::CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED< \
149  blaze::IsVector<T>::value && \
150  !blaze::IsTransposeVector<T>::value >::value > \
151  BLAZE_JOIN( CONSTRAINT_MUST_BE_NONTRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
152 //*************************************************************************************************
153 
154 
155 
156 
157 //=================================================================================================
158 //
159 // MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE CONSTRAINT
160 //
161 //=================================================================================================
162 
163 //*************************************************************************************************
173 template< bool > struct CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED;
174 template<> struct CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED<true> { enum { value = 1 }; };
176 //*************************************************************************************************
177 
178 
179 //*************************************************************************************************
186 #define BLAZE_CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE(T) \
187  typedef \
188  blaze::CONSTRAINT_TEST< \
189  blaze::CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_FAILED< \
190  !blaze::IsVector<T>::value || \
191  blaze::IsTransposeVector<T>::value >::value > \
192  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_NONTRANSPOSE_VECTOR_TYPE_TYPEDEF, __LINE__ )
193 //*************************************************************************************************
194 
195 
196 
197 
198 //=================================================================================================
199 //
200 // MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG CONSTRAINT
201 //
202 //=================================================================================================
203 
204 //*************************************************************************************************
214 template< bool > struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED;
215 template<> struct CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED<true> { enum { value = 1 }; };
217 //*************************************************************************************************
218 
219 
220 //*************************************************************************************************
228 #define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T,TF) \
229  typedef \
230  blaze::CONSTRAINT_TEST< \
231  blaze::CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_FAILED< \
232  blaze::IsVector<T>::value && \
233  blaze::IsTransposeVector<T>::value == TF >::value > \
234  BLAZE_JOIN( CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
235 //*************************************************************************************************
236 
237 
238 
239 
240 //=================================================================================================
241 //
242 // VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG CONSTRAINT
243 //
244 //=================================================================================================
245 
246 //*************************************************************************************************
256 template< bool > struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED;
257 template<> struct CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED<true> { enum { value = 1 }; };
259 //*************************************************************************************************
260 
261 
262 //*************************************************************************************************
269 #define BLAZE_CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG(T1,T2) \
270  typedef \
271  blaze::CONSTRAINT_TEST< \
272  blaze::CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_FAILED< \
273  blaze::IsVector<T1>::value && \
274  blaze::IsVector<T2>::value && \
275  static_cast<int>( blaze::IsTransposeVector<T1>::value ) == static_cast<int>( blaze::IsTransposeVector<T2>::value ) >::value > \
276  BLAZE_JOIN( CONSTRAINT_VECTORS_MUST_HAVE_SAME_TRANSPOSE_FLAG_TYPEDEF, __LINE__ )
277 //*************************************************************************************************
278 
279 } // namespace blaze
280 
281 #endif