diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-03-12 17:17:36 +0000 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-03-12 17:17:36 +0000 |
commit | 2ee68a074efc1163358fb3b51fb4b23e83a05f97 (patch) | |
tree | 48df581770a55f8eb9f632aee54c777816478b64 /Eigen/src/Core/DiagonalMatrix.h | |
parent | 01572b9f54e769a7d1bb3d5073c264a5fbc7ce42 (diff) |
generalized ei_traits<>.
Finally the importing macro is named EIGEN_BASIC_PUBLIC_INTERFACE
because it does not only import the ei_traits, it also makes the base class
a friend, etc.
Diffstat (limited to 'Eigen/src/Core/DiagonalMatrix.h')
-rw-r--r-- | Eigen/src/Core/DiagonalMatrix.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/Eigen/src/Core/DiagonalMatrix.h b/Eigen/src/Core/DiagonalMatrix.h index 6b4e0b17a..e27d2c366 100644 --- a/Eigen/src/Core/DiagonalMatrix.h +++ b/Eigen/src/Core/DiagonalMatrix.h @@ -39,33 +39,34 @@ * \sa MatrixBase::diagonal(const OtherDerived&) */ template<typename CoeffsVectorType> -struct Scalar<DiagonalMatrix<CoeffsVectorType> > -{ typedef typename Scalar<CoeffsVectorType>::Type Type; }; +struct ei_traits<DiagonalMatrix<CoeffsVectorType> > +{ + typedef typename CoeffsVectorType::Scalar Scalar; + enum { + RowsAtCompileTime = CoeffsVectorType::SizeAtCompileTime, + ColsAtCompileTime = CoeffsVectorType::SizeAtCompileTime, + MaxRowsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime, + MaxColsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime + }; +}; template<typename CoeffsVectorType> class DiagonalMatrix : NoOperatorEquals, public MatrixBase<DiagonalMatrix<CoeffsVectorType> > { public: - typedef typename Scalar<CoeffsVectorType>::Type Scalar; + + EIGEN_BASIC_PUBLIC_INTERFACE(DiagonalMatrix) + typedef typename CoeffsVectorType::AsArg CoeffsVecRef; - friend class MatrixBase<DiagonalMatrix>; - friend class MatrixBase<DiagonalMatrix>::Traits; - typedef MatrixBase<DiagonalMatrix> Base; DiagonalMatrix(const CoeffsVecRef& coeffs) : m_coeffs(coeffs) { - assert(CoeffsVectorType::Traits::IsVectorAtCompileTime + assert(CoeffsVectorType::IsVectorAtCompileTime && coeffs.size() > 0); } private: - enum { - RowsAtCompileTime = CoeffsVectorType::Traits::SizeAtCompileTime, - ColsAtCompileTime = CoeffsVectorType::Traits::SizeAtCompileTime, - MaxRowsAtCompileTime = CoeffsVectorType::Traits::MaxSizeAtCompileTime, - MaxColsAtCompileTime = CoeffsVectorType::Traits::MaxSizeAtCompileTime - }; const DiagonalMatrix& _asArg() const { return *this; } int _rows() const { return m_coeffs.size(); } |