* Implement the ByOuterInner accessors

* use them (big simplification in Assign.h)
* axe (Inner|Outer)StrideAtCompileTime that were just introduced
* ei_int_if_dynamic now asserts that the size is the expected one: adapt to that in Block.h
* add rowStride() / colStride() in DenseBase
* implement innerStride() / outerStride() everywhere needed
This commit is contained in:
Benoit Jacob
2010-02-25 21:01:52 -05:00
parent 5491531a81
commit 769641bc58
28 changed files with 236 additions and 285 deletions

View File

@@ -56,14 +56,8 @@ struct ei_traits<Map<MatrixType, Options, StrideType> >
Flags0 = ei_traits<MatrixType>::Flags,
Flags1 = ((Options&Aligned)==Aligned ? Flags0 | AlignedBit
: Flags0 & ~AlignedBit),
Flags = int(StrideType::InnerStrideAtCompileTime)==1 ? Flags1 : (Flags1 & ~PacketAccessBit),
InnerStrideAtCompileTime = int(StrideType::InnerStrideAtCompileTime) != 0 ? int(StrideType::InnerStrideAtCompileTime) : 1,
OuterStrideAtCompileTime =
int(StrideType::OuterStrideAtCompileTime != 0) ? int(StrideType::OuterStrideAtCompileTime)
: int(MatrixType::IsVectorAtCompileTime) ? int(MatrixType::SizeAtCompileTime)
: int(Flags)&RowMajorBit ? int(MatrixType::ColsAtCompileTime)
: int(MatrixType::RowsAtCompileTime)
};
Flags = int(StrideType::InnerStrideAtCompileTime)==1 ? Flags1 : (Flags1 & ~PacketAccessBit)
};
};
template<typename MatrixType, int Options, typename StrideType> class Map