26 #ifndef EIGEN_MATRIX_H
27 #define EIGEN_MATRIX_H
120 template<
typename _Scalar,
int _Rows,
int _Cols,
int _Options,
int _MaxRows,
int _MaxCols>
121 struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
123 typedef _Scalar Scalar;
124 typedef Dense StorageKind;
126 typedef MatrixXpr XprKind;
128 RowsAtCompileTime = _Rows,
129 ColsAtCompileTime = _Cols,
130 MaxRowsAtCompileTime = _MaxRows,
131 MaxColsAtCompileTime = _MaxCols,
132 Flags = compute_matrix_flags<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::ret,
135 InnerStrideAtCompileTime = 1,
136 OuterStrideAtCompileTime = (Options&
RowMajor) ? ColsAtCompileTime : RowsAtCompileTime
141 template<
typename _Scalar,
int _Rows,
int _Cols,
int _Options,
int _MaxRows,
int _MaxCols>
143 :
public PlainObjectBase<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
152 enum { Options = _Options };
159 using
Base::coeffRef;
171 return Base::_set(other);
184 template<
typename OtherDerived>
187 return Base::_set(other);
196 template<
typename OtherDerived>
199 return Base::operator=(other);
202 template<
typename OtherDerived>
205 return Base::operator=(func);
220 Base::_check_template_params();
225 Matrix(internal::constructor_without_unaligned_array_assert)
226 :
Base(internal::constructor_without_unaligned_array_assert())
236 :
Base(dim, RowsAtCompileTime == 1 ? 1 : dim, ColsAtCompileTime == 1 ? 1 : dim)
238 Base::_check_template_params();
245 #ifndef EIGEN_PARSED_BY_DOXYGEN
246 template<
typename T0,
typename T1>
249 Base::_check_template_params();
250 Base::template _init2<T0,T1>(x,
y);
258 Matrix(Index rows, Index cols);
260 Matrix(
const Scalar& x,
const Scalar&
y);
266 Base::_check_template_params();
268 m_storage.data()[0] = x;
269 m_storage.data()[1] =
y;
270 m_storage.data()[2] = z;
275 Base::_check_template_params();
277 m_storage.data()[0] = x;
278 m_storage.data()[1] =
y;
279 m_storage.data()[2] = z;
280 m_storage.data()[3] = w;
283 explicit Matrix(
const Scalar *data);
286 template<
typename OtherDerived>
288 :
Base(other.rows() * other.cols(), other.rows(), other.cols())
293 YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
295 Base::_check_template_params();
296 Base::_set_noalias(other);
300 :
Base(other.rows() * other.cols(), other.rows(), other.cols())
302 Base::_check_template_params();
303 Base::_set_noalias(other);
306 template<
typename OtherDerived>
309 Base::_check_template_params();
310 Base::resize(other.
rows(), other.
cols());
317 template<
typename OtherDerived>
319 :
Base(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols())
321 Base::_check_template_params();
322 Base::resize(other.
rows(), other.
cols());
332 template<
typename OtherDerived>
334 { this->_swap(other.derived()); }
341 template<
typename OtherDerived>
343 template<
typename OtherDerived>
346 #ifdef EIGEN2_SUPPORT
347 template<
typename OtherDerived>
348 explicit Matrix(
const eigen2_RotationBase<OtherDerived,ColsAtCompileTime>& r);
349 template<
typename OtherDerived>
350 Matrix& operator=(
const eigen2_RotationBase<OtherDerived,ColsAtCompileTime>& r);
354 #ifdef EIGEN_MATRIX_PLUGIN
355 #include EIGEN_MATRIX_PLUGIN
359 template <
typename Derived,
typename OtherDerived,
bool IsVector>
360 friend struct internal::conservative_resize_like_impl;
362 using Base::m_storage;
385 #define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
387 typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \
389 typedef Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \
391 typedef Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;
393 #define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
395 typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix; \
397 typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix;
399 #define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
400 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
401 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
402 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
403 EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
404 EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
405 EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
406 EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
414 #undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
415 #undef EIGEN_MAKE_TYPEDEFS
416 #undef EIGEN_MAKE_FIXED_TYPEDEFS
420 #endif // EIGEN_MATRIX_H