diff options
author | Gael Guennebaud <g.gael@free.fr> | 2013-06-28 15:56:43 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2013-06-28 15:56:43 +0200 |
commit | 4cf742525f47129878fe561f56be9bd6ec83feb1 (patch) | |
tree | 21ac5ba0b56450e3b7b57f955f200f4f500dcbff /Eigen/src/SparseCore/SparseUtil.h | |
parent | 487d94f495628f557a1a7456cc2793c1fe043108 (diff) |
bug #626: add compiletime check of the Options template parameter of SparseMatrix and SparseVector. Fix eval and plain_object for sparse objects.
Diffstat (limited to 'Eigen/src/SparseCore/SparseUtil.h')
-rw-r--r-- | Eigen/src/SparseCore/SparseUtil.h | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Eigen/src/SparseCore/SparseUtil.h b/Eigen/src/SparseCore/SparseUtil.h index d58b51356..064a40707 100644 --- a/Eigen/src/SparseCore/SparseUtil.h +++ b/Eigen/src/SparseCore/SparseUtil.h @@ -98,16 +98,16 @@ template<typename T> struct eval<T,Sparse> template<typename T,int Cols> struct sparse_eval<T,1,Cols> { typedef typename traits<T>::Scalar _Scalar; - enum { _Flags = traits<T>::Flags| RowMajorBit }; + typedef typename traits<T>::Index _Index; public: - typedef SparseVector<_Scalar, _Flags> type; + typedef SparseVector<_Scalar, RowMajor, _Index> type; }; template<typename T,int Rows> struct sparse_eval<T,Rows,1> { typedef typename traits<T>::Scalar _Scalar; - enum { _Flags = traits<T>::Flags & (~RowMajorBit) }; + typedef typename traits<T>::Index _Index; public: - typedef SparseVector<_Scalar, _Flags> type; + typedef SparseVector<_Scalar, ColMajor, _Index> type; }; template<typename T,int Rows,int Cols> struct sparse_eval { @@ -127,12 +127,10 @@ template<typename T> struct sparse_eval<T,1,1> { template<typename T> struct plain_matrix_type<T,Sparse> { typedef typename traits<T>::Scalar _Scalar; - enum { - _Flags = traits<T>::Flags - }; - + typedef typename traits<T>::Index _Index; + enum { _Options = ((traits<T>::Flags&RowMajorBit)==RowMajorBit) ? RowMajor : ColMajor }; public: - typedef SparseMatrix<_Scalar, _Flags> type; + typedef SparseMatrix<_Scalar, _Options, _Index> type; }; } // end namespace internal |