aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/src/SparseExtra
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2014-09-01 17:21:05 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2014-09-01 17:21:05 +0200
commitb3d63b4db21e746ef3ef260caa28773c8d3ae77b (patch)
tree1fec553a809fb1ab1e2e77303765ba80b1cfdc9c /unsupported/Eigen/src/SparseExtra
parent1c4b69c5fb4ec6a8b71a64f39ea82dacf50a8bfd (diff)
Add evaluator for DynamicSparseMatrix
Diffstat (limited to 'unsupported/Eigen/src/SparseExtra')
-rw-r--r--unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h b/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
index dec16df28..4210df68a 100644
--- a/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
+++ b/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
@@ -352,6 +352,38 @@ class DynamicSparseMatrix<Scalar,_Options,_Index>::ReverseInnerIterator : public
const Index m_outer;
};
+#ifdef EIGEN_ENABLE_EVALUATORS
+namespace internal {
+
+template<typename _Scalar, int _Options, typename _Index>
+struct evaluator<DynamicSparseMatrix<_Scalar,_Options,_Index> >
+ : evaluator_base<DynamicSparseMatrix<_Scalar,_Options,_Index> >
+{
+ typedef _Scalar Scalar;
+ typedef _Index Index;
+ typedef DynamicSparseMatrix<_Scalar,_Options,_Index> SparseMatrixType;
+ typedef typename SparseMatrixType::InnerIterator InnerIterator;
+ typedef typename SparseMatrixType::ReverseInnerIterator ReverseInnerIterator;
+
+ enum {
+ CoeffReadCost = NumTraits<_Scalar>::ReadCost,
+ Flags = SparseMatrixType::Flags
+ };
+
+ evaluator() : m_matrix(0) {}
+ evaluator(const SparseMatrixType &mat) : m_matrix(&mat) {}
+
+ operator SparseMatrixType&() { return m_matrix->const_cast_derived(); }
+ operator const SparseMatrixType&() const { return *m_matrix; }
+
+ Scalar coeff(Index row, Index col) const { return m_matrix->coeff(row,col); }
+
+ const SparseMatrixType *m_matrix;
+};
+
+}
+#endif
+
} // end namespace Eigen
#endif // EIGEN_DYNAMIC_SPARSEMATRIX_H