10#ifndef EIGEN_SPARSETRANSPOSE_H
11#define EIGEN_SPARSETRANSPOSE_H
14#include "./InternalHeaderCheck.h"
19template <
typename MatrixType,
int CompressedAccess =
int(MatrixType::Flags & CompressedAccessBit)>
20class SparseTransposeImpl :
public SparseMatrixBase<Transpose<MatrixType> > {};
22template <
typename MatrixType>
23class SparseTransposeImpl<MatrixType,
CompressedAccessBit> :
public SparseCompressedBase<Transpose<MatrixType> > {
24 typedef SparseCompressedBase<Transpose<MatrixType> > Base;
28 typedef typename Base::Scalar Scalar;
31 inline Index nonZeros()
const {
return derived().nestedExpression().nonZeros(); }
33 inline const Scalar* valuePtr()
const {
return derived().nestedExpression().valuePtr(); }
34 inline const StorageIndex* innerIndexPtr()
const {
return derived().nestedExpression().innerIndexPtr(); }
35 inline const StorageIndex* outerIndexPtr()
const {
return derived().nestedExpression().outerIndexPtr(); }
36 inline const StorageIndex* innerNonZeroPtr()
const {
return derived().nestedExpression().innerNonZeroPtr(); }
38 inline Scalar* valuePtr() {
return derived().nestedExpression().valuePtr(); }
39 inline StorageIndex* innerIndexPtr() {
return derived().nestedExpression().innerIndexPtr(); }
40 inline StorageIndex* outerIndexPtr() {
return derived().nestedExpression().outerIndexPtr(); }
41 inline StorageIndex* innerNonZeroPtr() {
return derived().nestedExpression().innerNonZeroPtr(); }
45template <
typename MatrixType>
46class TransposeImpl<
MatrixType,
Sparse> :
public internal::SparseTransposeImpl<MatrixType> {
48 typedef internal::SparseTransposeImpl<MatrixType> Base;
53template <
typename ArgType>
54struct unary_evaluator<Transpose<ArgType>, IteratorBased> :
public evaluator_base<Transpose<ArgType> > {
55 typedef typename evaluator<ArgType>::InnerIterator EvalIterator;
58 typedef Transpose<ArgType> XprType;
60 inline Index nonZerosEstimate()
const {
return m_argImpl.nonZerosEstimate(); }
62 class InnerIterator :
public EvalIterator {
64 EIGEN_STRONG_INLINE InnerIterator(
const unary_evaluator& unaryOp, Index outer)
65 : EvalIterator(unaryOp.m_argImpl, outer) {}
67 Index row()
const {
return EvalIterator::col(); }
68 Index col()
const {
return EvalIterator::row(); }
71 enum { CoeffReadCost = evaluator<ArgType>::CoeffReadCost, Flags = XprType::Flags };
73 explicit unary_evaluator(
const XprType& op) : m_argImpl(op.nestedExpression()) {}
76 evaluator<ArgType> m_argImpl;
internal::traits< Transpose< MatrixType > >::StorageIndex StorageIndex
Definition SparseMatrixBase.h:44
const unsigned int CompressedAccessBit
Definition Constants.h:195
Namespace containing all symbols from the Eigen library.
Definition B01_Experimental.dox:1
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:82
constexpr Transpose< MatrixType > & derived()
Definition EigenBase.h:49
Eigen::Index Index
Definition EigenBase.h:43
Definition Constants.h:522