10 #ifndef EIGEN_SPARSETRANSPOSE_H
11 #define EIGEN_SPARSETRANSPOSE_H
15 template<
typename MatrixType>
class TransposeImpl<MatrixType,Sparse>
16 :
public SparseMatrixBase<Transpose<MatrixType> >
18 typedef typename internal::remove_all<typename MatrixType::Nested>::type _MatrixTypeNested;
21 EIGEN_SPARSE_PUBLIC_INTERFACE(Transpose<MatrixType>)
24 class ReverseInnerIterator;
26 inline Index nonZeros()
const {
return derived().nestedExpression().nonZeros(); }
33 template<
typename MatrixType>
class TransposeImpl<MatrixType,Sparse>::InnerIterator
34 :
public _MatrixTypeNested::InnerIterator
36 typedef typename _MatrixTypeNested::InnerIterator Base;
39 EIGEN_STRONG_INLINE InnerIterator(
const TransposeImpl& trans,
typename TransposeImpl<MatrixType,Sparse>::Index outer)
40 : Base(trans.derived().nestedExpression(), outer)
42 inline typename TransposeImpl<MatrixType,Sparse>::Index row()
const {
return Base::col(); }
43 inline typename TransposeImpl<MatrixType,Sparse>::Index col()
const {
return Base::row(); }
46 template<
typename MatrixType>
class TransposeImpl<MatrixType,Sparse>::ReverseInnerIterator
47 :
public _MatrixTypeNested::ReverseInnerIterator
49 typedef typename _MatrixTypeNested::ReverseInnerIterator Base;
52 EIGEN_STRONG_INLINE ReverseInnerIterator(
const TransposeImpl& xpr,
typename TransposeImpl<MatrixType,Sparse>::Index outer)
53 : Base(xpr.derived().nestedExpression(), outer)
55 inline typename TransposeImpl<MatrixType,Sparse>::Index row()
const {
return Base::col(); }
56 inline typename TransposeImpl<MatrixType,Sparse>::Index col()
const {
return Base::row(); }
61 #endif // EIGEN_SPARSETRANSPOSE_H