All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Rows.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_CONSTRAINTS_ROWS_H_
36 #define _BLAZE_MATH_CONSTRAINTS_ROWS_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
45 #include <blaze/util/mpl/Equal.h>
46 #include <blaze/util/mpl/Or.h>
47 #include <blaze/util/mpl/SizeT.h>
48 #include <blaze/util/Suffix.h>
49 
50 
51 namespace blaze {
52 
53 //=================================================================================================
54 //
55 // MUST_HAVE_EQUAL_NUMBER_OF_ROWS CONSTRAINT
56 //
57 //=================================================================================================
58 
59 //*************************************************************************************************
69 template< bool > struct CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED;
70 template<> struct CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED<true> { enum { value = 1 }; };
72 //*************************************************************************************************
73 
74 
75 //*************************************************************************************************
84 #define BLAZE_CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS(T1,T2) \
85  typedef \
86  blaze::CONSTRAINT_TEST< \
87  blaze::CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED< ( \
88  blaze::Or< blaze::Equal< blaze::Rows<T1>, blaze::SizeT<0UL> > \
89  , blaze::Equal< blaze::Rows<T2>, blaze::SizeT<0UL> > \
90  , blaze::Equal< blaze::Rows<T1>, blaze::Rows<T2> > \
91  >::value ) >::value > \
92  BLAZE_JOIN( CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS_TYPEDEF, __LINE__ )
93 //*************************************************************************************************
94 
95 
96 
97 
98 //=================================================================================================
99 //
100 // MUST_NOT_HAVE_EQUAL_NUMBER_OF_ROWS CONSTRAINT
101 //
102 //=================================================================================================
103 
104 //*************************************************************************************************
114 template< bool > struct CONSTRAINT_MUST_NOT_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED;
115 template<> struct CONSTRAINT_MUST_NOT_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED<true> { enum { value = 1 }; };
117 //*************************************************************************************************
118 
119 
120 //*************************************************************************************************
129 #define BLAZE_CONSTRAINT_MUST_NOT_HAVE_EQUAL_NUMBER_OF_ROWS(T1,T2) \
130  typedef \
131  blaze::CONSTRAINT_TEST< \
132  blaze::CONSTRAINT_MUST_HAVE_EQUAL_NUMBER_OF_ROWS_FAILED< ( \
133  blaze::Or< blaze::Equal< blaze::Rows<T1>, blaze::SizeT<0UL> > \
134  , blaze::Equal< blaze::Rows<T2>, blaze::SizeT<0UL> > \
135  , blaze::Not< blaze::Equal< blaze::Rows<T1>, blaze::Rows<T2> > > \
136  >::value ) >::value > \
137  BLAZE_JOIN( CONSTRAINT_MUST_NOT_HAVE_EQUAL_NUMBER_OF_ROWS_TYPEDEF, __LINE__ )
138 //*************************************************************************************************
139 
140 } // namespace blaze
141 
142 #endif
Header file for the Rows type trait.
Header file for the SizeT class template.
Header file for the Or class template.
Constraint wrapper class.
Header file for compile time constraints.
Header file for the Equal class template.