Extended sparse unit-test: nested blocks and InnerIterators.

Block specialization for sparse matrices.
InnerIterators for Blocks and fixes in CoreIterators.
This commit is contained in:
Daniel Gomez Ferro
2008-09-02 15:28:49 +00:00
parent 46fe7a3d9e
commit 8fb1678f0f
10 changed files with 276 additions and 13 deletions

View File

@@ -65,6 +65,8 @@ template<typename MatrixType, int BlockRows, int BlockCols, int _PacketAccess, i
struct ei_traits<Block<MatrixType, BlockRows, BlockCols, _PacketAccess, _DirectAccessStatus> >
{
typedef typename MatrixType::Scalar Scalar;
typedef typename MatrixType::Nested MatrixTypeNested;
typedef typename ei_unref<MatrixTypeNested>::type _MatrixTypeNested;
enum{
RowsAtCompileTime = MatrixType::RowsAtCompileTime == 1 ? 1 : BlockRows,
ColsAtCompileTime = MatrixType::ColsAtCompileTime == 1 ? 1 : BlockCols,
@@ -94,6 +96,8 @@ template<typename MatrixType, int BlockRows, int BlockCols, int PacketAccess, in
EIGEN_GENERIC_PUBLIC_INTERFACE(Block)
class InnerIterator;
/** Column or Row constructor
*/
inline Block(const MatrixType& matrix, int i)
@@ -217,6 +221,7 @@ class Block<MatrixType,BlockRows,BlockCols,PacketAccess,HasDirectAccess>
_EIGEN_GENERIC_PUBLIC_INTERFACE(Block, MapBase<Block>)
class InnerIterator;
typedef typename ei_traits<Block>::AlignedDerivedType AlignedDerivedType;
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)

View File

@@ -155,7 +155,7 @@ template<typename Derived> class MatrixBase
/** \returns the number of rows. \sa cols(), RowsAtCompileTime */
inline int rows() const { return derived().rows(); }
/** \returns the number of columns. \sa row(), ColsAtCompileTime*/
/** \returns the number of columns. \sa rows(), ColsAtCompileTime*/
inline int cols() const { return derived().cols(); }
/** \returns the number of coefficients, which is \a rows()*cols().
* \sa rows(), cols(), SizeAtCompileTime. */

View File

@@ -211,7 +211,8 @@ enum {
enum {
NoDirectAccess = 0,
HasDirectAccess = DirectAccessBit
HasDirectAccess = DirectAccessBit,
IsSparse = SparseBit
};
const int FullyCoherentAccessPattern = 0x1;

View File

@@ -36,7 +36,8 @@ template<typename ExpressionType> class NestByValue;
template<typename ExpressionType> class SwapWrapper;
template<typename MatrixType> class Minor;
template<typename MatrixType, int BlockRows=Dynamic, int BlockCols=Dynamic, int PacketAccess=AsRequested,
int _DirectAccessStatus = ei_traits<MatrixType>::Flags&DirectAccessBit> class Block;
int _DirectAccessStatus = ei_traits<MatrixType>::Flags&DirectAccessBit ? DirectAccessBit
: ei_traits<MatrixType>::Flags&SparseBit> class Block;
template<typename MatrixType> class Transpose;
template<typename MatrixType> class Conjugate;
template<typename NullaryOp, typename MatrixType> class CwiseNullaryOp;