aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Core/MatrixRef.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2007-10-15 05:56:21 +0000
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2007-10-15 05:56:21 +0000
commit884a718b0a2faad2e34cd916704cbc6c2a23550e (patch)
treeede4aca3c0ea94364932cfb740cbb7ceb2c2c928 /src/Core/MatrixRef.h
parentf355ef2df0f51fc80565285a907f48925a554505 (diff)
make shameless use of const_cast to reduce code redundancy. This means Eigen2
gives up enforcing constness. I really tried to enforce it, but it really was much hassle because our expression templates can be lvalues (not only rvalues) and so much code had to be written twice.
Diffstat (limited to 'src/Core/MatrixRef.h')
-rw-r--r--src/Core/MatrixRef.h27
1 files changed, 1 insertions, 26 deletions
diff --git a/src/Core/MatrixRef.h b/src/Core/MatrixRef.h
index 7e6aea5e6..8fab9d06a 100644
--- a/src/Core/MatrixRef.h
+++ b/src/Core/MatrixRef.h
@@ -26,31 +26,6 @@
#ifndef EI_MATRIXREF_H
#define EI_MATRIXREF_H
-template<typename MatrixType> class MatrixConstRef
- : public Object<typename MatrixType::Scalar, MatrixConstRef<MatrixType> >
-{
- public:
- typedef typename MatrixType::Scalar Scalar;
- friend class Object<Scalar, MatrixConstRef>;
-
- MatrixConstRef(const MatrixType& matrix) : m_matrix(matrix) {}
- MatrixConstRef(const MatrixConstRef& other) : m_matrix(other.m_matrix) {}
- ~MatrixConstRef() {}
-
- EI_INHERIT_ASSIGNMENT_OPERATORS(MatrixConstRef)
-
- private:
- int _rows() const { return m_matrix.rows(); }
- int _cols() const { return m_matrix.cols(); }
-
- const Scalar& _read(int row, int col) const
- {
- return m_matrix._read(row, col);
- }
-
- const MatrixType& m_matrix;
-};
-
template<typename MatrixType> class MatrixRef
: public Object<typename MatrixType::Scalar, MatrixRef<MatrixType> >
{
@@ -58,7 +33,7 @@ template<typename MatrixType> class MatrixRef
typedef typename MatrixType::Scalar Scalar;
friend class Object<Scalar, MatrixRef>;
- MatrixRef(MatrixType& matrix) : m_matrix(matrix) {}
+ MatrixRef(const MatrixType& matrix) : m_matrix(*const_cast<MatrixType*>(&matrix)) {}
MatrixRef(const MatrixRef& other) : m_matrix(other.m_matrix) {}
~MatrixRef() {}