11 template<typename>struct A;
12 template<typename, int, int, int = 0 ? : 0, int = 0, int = 0>class N;
13 template<typename>class O;
14 template<typename>struct B;
31 template<typename Derived>struct G
33 typedef O<Derived>type;
42 { RequireInitialization = C::value ? : 0, ReadCost };
44 template<typename Derived>struct J
47 { ret = A<Derived>::InnerStrideAtCompileTime };
49 template<typename Derived>struct K
52 { ret = A<Derived>::OuterStrideAtCompileTime };
54 template<typename Derived>class P : H
58 typedef typename A<Derived>::Scalar Scalar;
61 A<Derived>::RowsAtCompileTime, ColsAtCompileTime =
62 A<Derived>::ColsAtCompileTime, SizeAtCompileTime =
63 F::ret, MaxRowsAtCompileTime =
64 A<Derived>::MaxRowsAtCompileTime, MaxColsAtCompileTime =
65 A<Derived>::MaxColsAtCompileTime, MaxSizeAtCompileTime =
67 A<Derived>::Flags ? : 0 ? : 0, CoeffReadCost =
68 A<Derived>::CoeffReadCost, InnerStrideAtCompileTime =
69 J<Derived>::ret, OuterStrideAtCompileTime = K<Derived>::ret };
70 B<Derived> operator << (const Scalar&);
73 template<typename Derived>class O : public P<Derived>
76 template<int _Cols>class L
85 template<typename Derived>class Q : public G<Derived>::type
88 typedef typename G<Derived>::type Base;
89 typedef typename A<Derived>::Index Index;
90 typedef typename A<Derived>::Scalar Scalar;
91 L<Base::ColsAtCompileTime> m_storage;
94 return m_storage.cols();
97 Scalar& coeffRef(Index,
101 template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows,
102 int _MaxCols>struct A<N<_Scalar, _Rows, _Cols, _Options, _MaxRows,
105 typedef _Scalar Scalar;
108 { RowsAtCompileTime, ColsAtCompileTime =
109 _Cols, MaxRowsAtCompileTime, MaxColsAtCompileTime, Flags =
110 D::ret, CoeffReadCost =
111 I::ReadCost, InnerStrideAtCompileTime, OuterStrideAtCompileTime =
114 template<typename _Scalar, int, int _Cols, int, int,
115 int>class N : public Q<N<_Scalar, 0, _Cols> >
119 template<typename T0, typename T1>N(const T0&,
124 throw() __attribute__((__noreturn__));
125 template<typename XprType>struct B
127 typedef typename XprType::Scalar Scalar;
128 typedef typename XprType::Index Index;
129 B(XprType & p1, const Scalar &) : m_xpr(p1), m_col(),
130 m_currentBlockRows(1)
131 {} B& operator, (const Scalar&)
135 if (m_col == m_xpr.cols())
138 m_currentBlockRows = 1;
139 a && "Too " ? static_cast<void>(0) : __assert_fail(0);
142 && "Too " ? static_cast<void>(0) : __assert_fail(1);
143 m_currentBlockRows ? static_cast<void>(0) : __assert_fail(4);
144 m_xpr.coeffRef(0, m_col++) = 0;
149 1 + m_currentBlockRows && m_col
150 && "Too " ? static_cast<void>(0) : __assert_fail(0);
155 Index m_currentBlockRows;
158 template<typename Derived>B<Derived>P<
159 Derived >::operator << (const Scalar&)
161 return B<Derived>(*static_cast<Derived *>(this), 0);
164 template<class NT, int s>void
171 template<class NT>void check()