diff options
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(); } |