Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef EIGEN_SPARSETRANSPOSE_H
00011 #define EIGEN_SPARSETRANSPOSE_H
00012
00013 namespace Eigen {
00014
00015 template<typename MatrixType> class TransposeImpl<MatrixType,Sparse>
00016 : public SparseMatrixBase<Transpose<MatrixType> >
00017 {
00018 typedef typename internal::remove_all<typename MatrixType::Nested>::type _MatrixTypeNested;
00019 public:
00020
00021 EIGEN_SPARSE_PUBLIC_INTERFACE(Transpose<MatrixType> )
00022
00023 class InnerIterator;
00024 class ReverseInnerIterator;
00025
00026 inline Index nonZeros() const { return derived().nestedExpression().nonZeros(); }
00027 };
00028
00029
00030
00031
00032
00033 template<typename MatrixType> class TransposeImpl<MatrixType,Sparse>::InnerIterator
00034 : public _MatrixTypeNested::InnerIterator
00035 {
00036 typedef typename _MatrixTypeNested::InnerIterator Base;
00037 typedef typename TransposeImpl::Index Index;
00038 public:
00039
00040 EIGEN_STRONG_INLINE InnerIterator(const TransposeImpl& trans, typename TransposeImpl<MatrixType,Sparse>::Index outer)
00041 : Base(trans.derived().nestedExpression(), outer)
00042 {}
00043 typename TransposeImpl<MatrixType,Sparse>::Index row() const { return Base::col(); }
00044 typename TransposeImpl<MatrixType,Sparse>::Index col() const { return Base::row(); }
00045 };
00046
00047 template<typename MatrixType> class TransposeImpl<MatrixType,Sparse>::ReverseInnerIterator
00048 : public _MatrixTypeNested::ReverseInnerIterator
00049 {
00050 typedef typename _MatrixTypeNested::ReverseInnerIterator Base;
00051 typedef typename TransposeImpl::Index Index;
00052 public:
00053
00054 EIGEN_STRONG_INLINE ReverseInnerIterator(const TransposeImpl& xpr, typename TransposeImpl<MatrixType,Sparse>::Index outer)
00055 : Base(xpr.derived().nestedExpression(), outer)
00056 {}
00057 typename TransposeImpl<MatrixType,Sparse>::Index row() const { return Base::col(); }
00058 typename TransposeImpl<MatrixType,Sparse>::Index col() const { return Base::row(); }
00059 };
00060
00061 }
00062
00063 #endif // EIGEN_SPARSETRANSPOSE_H