diff options
author | Gael Guennebaud <g.gael@free.fr> | 2009-01-11 22:03:40 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2009-01-11 22:03:40 +0000 |
commit | f268e79709ca696d843564595416098bf1a445c0 (patch) | |
tree | 48e7f66d8e4e3820fcb81dab418e51abb55a480f | |
parent | 9e8f437a6f3f2184a8b62cd193c5611a9a9b8127 (diff) |
simplify some ei_traits<> using inheritance
(less loc and slight compilation speed up)
-rw-r--r-- | Eigen/src/Core/CwiseNullaryOp.h | 7 | ||||
-rw-r--r-- | Eigen/src/Core/CwiseUnaryOp.h | 11 | ||||
-rw-r--r-- | Eigen/src/Core/Flagged.h | 13 | ||||
-rw-r--r-- | Eigen/src/Core/NestByValue.h | 14 | ||||
-rw-r--r-- | Eigen/src/Core/Part.h | 7 |
5 files changed, 9 insertions, 43 deletions
diff --git a/Eigen/src/Core/CwiseNullaryOp.h b/Eigen/src/Core/CwiseNullaryOp.h index a92e3bb48..0f914e7ca 100644 --- a/Eigen/src/Core/CwiseNullaryOp.h +++ b/Eigen/src/Core/CwiseNullaryOp.h @@ -41,14 +41,9 @@ * \sa class CwiseUnaryOp, class CwiseBinaryOp, MatrixBase::NullaryExpr() */ template<typename NullaryOp, typename MatrixType> -struct ei_traits<CwiseNullaryOp<NullaryOp, MatrixType> > +struct ei_traits<CwiseNullaryOp<NullaryOp, MatrixType> > : ei_traits<MatrixType> { - typedef typename ei_traits<MatrixType>::Scalar Scalar; enum { - RowsAtCompileTime = ei_traits<MatrixType>::RowsAtCompileTime, - ColsAtCompileTime = ei_traits<MatrixType>::ColsAtCompileTime, - MaxRowsAtCompileTime = ei_traits<MatrixType>::MaxRowsAtCompileTime, - MaxColsAtCompileTime = ei_traits<MatrixType>::MaxColsAtCompileTime, Flags = (ei_traits<MatrixType>::Flags & ( HereditaryBits | (ei_functor_has_linear_access<NullaryOp>::ret ? LinearAccessBit : 0) diff --git a/Eigen/src/Core/CwiseUnaryOp.h b/Eigen/src/Core/CwiseUnaryOp.h index 701bc34b0..68be2ac54 100644 --- a/Eigen/src/Core/CwiseUnaryOp.h +++ b/Eigen/src/Core/CwiseUnaryOp.h @@ -41,6 +41,7 @@ */ template<typename UnaryOp, typename MatrixType> struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> > + : ei_traits<MatrixType> { typedef typename ei_result_of< UnaryOp(typename MatrixType::Scalar) @@ -48,16 +49,10 @@ struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> > typedef typename MatrixType::Nested MatrixTypeNested; typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested; enum { - MatrixTypeCoeffReadCost = _MatrixTypeNested::CoeffReadCost, - MatrixTypeFlags = _MatrixTypeNested::Flags, - RowsAtCompileTime = MatrixType::RowsAtCompileTime, - ColsAtCompileTime = MatrixType::ColsAtCompileTime, - MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime, - MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime, - Flags = (MatrixTypeFlags & ( + Flags = (_MatrixTypeNested::Flags & ( HereditaryBits | LinearAccessBit | AlignedBit | (ei_functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0))), - CoeffReadCost = MatrixTypeCoeffReadCost + ei_functor_traits<UnaryOp>::Cost + CoeffReadCost = _MatrixTypeNested::CoeffReadCost + ei_functor_traits<UnaryOp>::Cost }; }; diff --git a/Eigen/src/Core/Flagged.h b/Eigen/src/Core/Flagged.h index 189304d54..ce50246cb 100644 --- a/Eigen/src/Core/Flagged.h +++ b/Eigen/src/Core/Flagged.h @@ -40,18 +40,9 @@ * \sa MatrixBase::flagged() */ template<typename ExpressionType, unsigned int Added, unsigned int Removed> -struct ei_traits<Flagged<ExpressionType, Added, Removed> > +struct ei_traits<Flagged<ExpressionType, Added, Removed> > : ei_traits<ExpressionType> { - typedef typename ExpressionType::Scalar Scalar; - - enum { - RowsAtCompileTime = ExpressionType::RowsAtCompileTime, - ColsAtCompileTime = ExpressionType::ColsAtCompileTime, - MaxRowsAtCompileTime = ExpressionType::MaxRowsAtCompileTime, - MaxColsAtCompileTime = ExpressionType::MaxColsAtCompileTime, - Flags = (ExpressionType::Flags | Added) & ~Removed, - CoeffReadCost = ExpressionType::CoeffReadCost - }; + enum { Flags = (ExpressionType::Flags | Added) & ~Removed }; }; template<typename ExpressionType, unsigned int Added, unsigned int Removed> class Flagged diff --git a/Eigen/src/Core/NestByValue.h b/Eigen/src/Core/NestByValue.h index 0c4ceb701..da79315bf 100644 --- a/Eigen/src/Core/NestByValue.h +++ b/Eigen/src/Core/NestByValue.h @@ -38,18 +38,8 @@ * \sa MatrixBase::nestByValue() */ template<typename ExpressionType> -struct ei_traits<NestByValue<ExpressionType> > -{ - typedef typename ExpressionType::Scalar Scalar; - enum { - RowsAtCompileTime = ExpressionType::RowsAtCompileTime, - ColsAtCompileTime = ExpressionType::ColsAtCompileTime, - MaxRowsAtCompileTime = ExpressionType::MaxRowsAtCompileTime, - MaxColsAtCompileTime = ExpressionType::MaxColsAtCompileTime, - Flags = ExpressionType::Flags, - CoeffReadCost = ExpressionType::CoeffReadCost - }; -}; +struct ei_traits<NestByValue<ExpressionType> > : public ei_traits<ExpressionType> +{}; template<typename ExpressionType> class NestByValue : public MatrixBase<NestByValue<ExpressionType> > diff --git a/Eigen/src/Core/Part.h b/Eigen/src/Core/Part.h index 883b92a98..b0ef1ff3d 100644 --- a/Eigen/src/Core/Part.h +++ b/Eigen/src/Core/Part.h @@ -43,16 +43,11 @@ * \sa MatrixBase::part() */ template<typename MatrixType, unsigned int Mode> -struct ei_traits<Part<MatrixType, Mode> > +struct ei_traits<Part<MatrixType, Mode> > : ei_traits<MatrixType> { - typedef typename MatrixType::Scalar Scalar; typedef typename ei_nested<MatrixType>::type MatrixTypeNested; typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested; enum { - RowsAtCompileTime = MatrixType::RowsAtCompileTime, - ColsAtCompileTime = MatrixType::ColsAtCompileTime, - MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime, - MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime, Flags = (_MatrixTypeNested::Flags & (HereditaryBits) & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit))) | Mode, CoeffReadCost = _MatrixTypeNested::CoeffReadCost }; |