All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VecTVecMultExpr.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_VECTVECMULTEXPR_H_
36 #define _BLAZE_MATH_CONSTRAINTS_VECTVECMULTEXPR_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
47 #include <blaze/util/mpl/And.h>
48 #include <blaze/util/mpl/Not.h>
49 #include <blaze/util/Suffix.h>
50 
51 
52 namespace blaze {
53 
54 //=================================================================================================
55 //
56 // MUST_BE_VECTVECMULTEXPR_TYPE CONSTRAINT
57 //
58 //=================================================================================================
59 
60 //*************************************************************************************************
70 template< bool > struct CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE_FAILED;
71 template<> struct CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE_FAILED<true> { enum { value = 1 }; };
73 //*************************************************************************************************
74 
75 
76 //*************************************************************************************************
83 #define BLAZE_CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE(T) \
84  typedef \
85  blaze::CONSTRAINT_TEST< \
86  blaze::CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE_FAILED< blaze::IsVecTVecMultExpr<T>::value >::value > \
87  BLAZE_JOIN( CONSTRAINT_MUST_BE_VECTVECMULTEXPR_TYPE_TYPEDEF, __LINE__ )
88 //*************************************************************************************************
89 
90 
91 
92 
93 //=================================================================================================
94 //
95 // MUST_NOT_BE_VECTVECMULTEXPR_TYPE CONSTRAINT
96 //
97 //=================================================================================================
98 
99 //*************************************************************************************************
109 template< bool > struct CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE_FAILED;
110 template<> struct CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE_FAILED<true> { enum { value = 1 }; };
112 //*************************************************************************************************
113 
114 
115 //*************************************************************************************************
122 #define BLAZE_CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE(T) \
123  typedef \
124  blaze::CONSTRAINT_TEST< \
125  blaze::CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE_FAILED< !blaze::IsVecTVecMultExpr<T>::value >::value > \
126  BLAZE_JOIN( CONSTRAINT_MUST_NOT_BE_VECTVECMULTEXPR_TYPE_TYPEDEF, __LINE__ )
127 //*************************************************************************************************
128 
129 
130 
131 
132 //=================================================================================================
133 //
134 // MUST_FORM_VALID_VECTVECMULTEXPR CONSTRAINT
135 //
136 //=================================================================================================
137 
138 //*************************************************************************************************
148 template< bool > struct CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR_FAILED;
149 template<> struct CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR_FAILED<true> { enum { value = 1 }; };
151 //*************************************************************************************************
152 
153 
154 //*************************************************************************************************
161 #define BLAZE_CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR(T1,T2) \
162  typedef \
163  blaze::CONSTRAINT_TEST< \
164  blaze::CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR_FAILED< ( \
165  blaze::And< blaze::IsColumnVector<T1> \
166  , blaze::IsRowVector<T2> \
167  >::value ) >::value > \
168  BLAZE_JOIN( CONSTRAINT_MUST_FORM_VALID_VECTVECMULTEXPR_TYPEDEF, __LINE__ )
169 //*************************************************************************************************
170 
171 
172 
173 
174 //=================================================================================================
175 //
176 // MUST_NOT_FORM_VALID_VECTVECMULTEXPR CONSTRAINT
177 //
178 //=================================================================================================
179 
180 //*************************************************************************************************
190 template< bool > struct CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR_FAILED;
191 template<> struct CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR_FAILED<true> { enum { value = 1 }; };
193 //*************************************************************************************************
194 
195 
196 //*************************************************************************************************
203 #define BLAZE_CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR(T1,T2) \
204  typedef \
205  blaze::CONSTRAINT_TEST< \
206  blaze::CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR_FAILED< ( \
207  blaze::Not< blaze::And< blaze::IsColumnVector<T1> \
208  , blaze::IsRowVector<T2> > \
209  >::value ) >::value > \
210  BLAZE_JOIN( CONSTRAINT_MUST_NOT_FORM_VALID_VECTVECMULTEXPR_TYPEDEF, __LINE__ )
211 //*************************************************************************************************
212 
213 } // namespace blaze
214 
215 #endif
Header file for the IsRowVector type trait.
Header file for the And class template.
Header file for the IsVecTVecMultExpr type trait class.
Header file for the Not class template.
Constraint wrapper class.
Header file for the IsColumnVector type trait.
Header file for compile time constraints.