mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-16 11:23:14 +08:00
simplify some ei_traits<> using inheritance
(less loc and slight compilation speed up)
This commit is contained in:
parent
9e8f437a6f
commit
f268e79709
@ -41,14 +41,9 @@
|
|||||||
* \sa class CwiseUnaryOp, class CwiseBinaryOp, MatrixBase::NullaryExpr()
|
* \sa class CwiseUnaryOp, class CwiseBinaryOp, MatrixBase::NullaryExpr()
|
||||||
*/
|
*/
|
||||||
template<typename NullaryOp, typename MatrixType>
|
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 {
|
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
|
Flags = (ei_traits<MatrixType>::Flags
|
||||||
& ( HereditaryBits
|
& ( HereditaryBits
|
||||||
| (ei_functor_has_linear_access<NullaryOp>::ret ? LinearAccessBit : 0)
|
| (ei_functor_has_linear_access<NullaryOp>::ret ? LinearAccessBit : 0)
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
*/
|
*/
|
||||||
template<typename UnaryOp, typename MatrixType>
|
template<typename UnaryOp, typename MatrixType>
|
||||||
struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> >
|
struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> >
|
||||||
|
: ei_traits<MatrixType>
|
||||||
{
|
{
|
||||||
typedef typename ei_result_of<
|
typedef typename ei_result_of<
|
||||||
UnaryOp(typename MatrixType::Scalar)
|
UnaryOp(typename MatrixType::Scalar)
|
||||||
@ -48,16 +49,10 @@ struct ei_traits<CwiseUnaryOp<UnaryOp, MatrixType> >
|
|||||||
typedef typename MatrixType::Nested MatrixTypeNested;
|
typedef typename MatrixType::Nested MatrixTypeNested;
|
||||||
typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
|
typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
|
||||||
enum {
|
enum {
|
||||||
MatrixTypeCoeffReadCost = _MatrixTypeNested::CoeffReadCost,
|
Flags = (_MatrixTypeNested::Flags & (
|
||||||
MatrixTypeFlags = _MatrixTypeNested::Flags,
|
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
|
||||||
Flags = (MatrixTypeFlags & (
|
|
||||||
HereditaryBits | LinearAccessBit | AlignedBit
|
HereditaryBits | LinearAccessBit | AlignedBit
|
||||||
| (ei_functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0))),
|
| (ei_functor_traits<UnaryOp>::PacketAccess ? PacketAccessBit : 0))),
|
||||||
CoeffReadCost = MatrixTypeCoeffReadCost + ei_functor_traits<UnaryOp>::Cost
|
CoeffReadCost = _MatrixTypeNested::CoeffReadCost + ei_functor_traits<UnaryOp>::Cost
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,18 +40,9 @@
|
|||||||
* \sa MatrixBase::flagged()
|
* \sa MatrixBase::flagged()
|
||||||
*/
|
*/
|
||||||
template<typename ExpressionType, unsigned int Added, unsigned int Removed>
|
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 { Flags = (ExpressionType::Flags | Added) & ~Removed };
|
||||||
|
|
||||||
enum {
|
|
||||||
RowsAtCompileTime = ExpressionType::RowsAtCompileTime,
|
|
||||||
ColsAtCompileTime = ExpressionType::ColsAtCompileTime,
|
|
||||||
MaxRowsAtCompileTime = ExpressionType::MaxRowsAtCompileTime,
|
|
||||||
MaxColsAtCompileTime = ExpressionType::MaxColsAtCompileTime,
|
|
||||||
Flags = (ExpressionType::Flags | Added) & ~Removed,
|
|
||||||
CoeffReadCost = ExpressionType::CoeffReadCost
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename ExpressionType, unsigned int Added, unsigned int Removed> class Flagged
|
template<typename ExpressionType, unsigned int Added, unsigned int Removed> class Flagged
|
||||||
|
@ -38,18 +38,8 @@
|
|||||||
* \sa MatrixBase::nestByValue()
|
* \sa MatrixBase::nestByValue()
|
||||||
*/
|
*/
|
||||||
template<typename ExpressionType>
|
template<typename ExpressionType>
|
||||||
struct ei_traits<NestByValue<ExpressionType> >
|
struct ei_traits<NestByValue<ExpressionType> > : public ei_traits<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
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename ExpressionType> class NestByValue
|
template<typename ExpressionType> class NestByValue
|
||||||
: public MatrixBase<NestByValue<ExpressionType> >
|
: public MatrixBase<NestByValue<ExpressionType> >
|
||||||
|
@ -43,16 +43,11 @@
|
|||||||
* \sa MatrixBase::part()
|
* \sa MatrixBase::part()
|
||||||
*/
|
*/
|
||||||
template<typename MatrixType, unsigned int Mode>
|
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_nested<MatrixType>::type MatrixTypeNested;
|
||||||
typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
|
typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
|
||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = MatrixType::RowsAtCompileTime,
|
|
||||||
ColsAtCompileTime = MatrixType::ColsAtCompileTime,
|
|
||||||
MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
|
|
||||||
MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime,
|
|
||||||
Flags = (_MatrixTypeNested::Flags & (HereditaryBits) & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit))) | Mode,
|
Flags = (_MatrixTypeNested::Flags & (HereditaryBits) & (~(PacketAccessBit | DirectAccessBit | LinearAccessBit))) | Mode,
|
||||||
CoeffReadCost = _MatrixTypeNested::CoeffReadCost
|
CoeffReadCost = _MatrixTypeNested::CoeffReadCost
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user