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.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the Or class template.
Constraint wrapper class.
Header file for compile time constraints.
Header file for the Equal class template.