aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/MapBase.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-04-16 10:13:32 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-04-16 10:13:32 -0400
commitff6a46105d86e92753858c1b2aea8bcaf4575819 (patch)
treedb7644512aa5adaaba50dc3c7f420508951116e5 /Eigen/src/Core/MapBase.h
parent1803db6e8409dae534cca51433a6a0fd6e7c7665 (diff)
* Refactoring of the class hierarchy: introduction of DenseDirectAccessBase, removal of extra _Base/_Options template parameters.
* Introduction of strides-at-compile-time so for example the optimized code really knows when it needs to evaluate to a temporary * StorageKind / XprKind * Quaternion::setFromTwoVectors: use JacobiSVD instead of SVD * ComplexSchur: support the 1x1 case
Diffstat (limited to 'Eigen/src/Core/MapBase.h')
-rw-r--r--Eigen/src/Core/MapBase.h39
1 files changed, 36 insertions, 3 deletions
diff --git a/Eigen/src/Core/MapBase.h b/Eigen/src/Core/MapBase.h
index d735cfc47..283d19a58 100644
--- a/Eigen/src/Core/MapBase.h
+++ b/Eigen/src/Core/MapBase.h
@@ -32,11 +32,12 @@
*
* \sa class Map, class Block
*/
-template<typename Derived, typename Base> class MapBase
- : public Base
+template<typename Derived> class MapBase
+ : public DenseDirectAccessBase<Derived>
{
public:
+ typedef DenseDirectAccessBase<Derived> Base;
enum {
RowsAtCompileTime = ei_traits<Derived>::RowsAtCompileTime,
ColsAtCompileTime = ei_traits<Derived>::ColsAtCompileTime,
@@ -46,10 +47,41 @@ template<typename Derived, typename Base> class MapBase
typedef typename ei_traits<Derived>::Scalar Scalar;
typedef typename Base::PacketScalar PacketScalar;
using Base::derived;
+// using Base::RowsAtCompileTime;
+// using Base::ColsAtCompileTime;
+// using Base::SizeAtCompileTime;
+ using Base::MaxRowsAtCompileTime;
+ using Base::MaxColsAtCompileTime;
+ using Base::MaxSizeAtCompileTime;
+ using Base::IsVectorAtCompileTime;
+ using Base::Flags;
+ using Base::IsRowMajor;
+
+ using Base::CoeffReadCost;
+ using Base::_HasDirectAccess;
+
+// using Base::derived;
+ using Base::const_cast_derived;
+ using Base::rows;
+ using Base::cols;
+ using Base::size;
+ using Base::coeff;
+ using Base::coeffRef;
+ using Base::lazyAssign;
+ using Base::eval;
+// using Base::operator=;
+ using Base::operator+=;
+ using Base::operator-=;
+ using Base::operator*=;
+ using Base::operator/=;
+
using Base::innerStride;
using Base::outerStride;
using Base::rowStride;
using Base::colStride;
+
+
+ typedef typename Base::CoeffReturnType CoeffReturnType;
inline int rows() const { return m_rows.value(); }
inline int cols() const { return m_cols.value(); }
@@ -139,7 +171,8 @@ template<typename Derived, typename Base> class MapBase
Derived& operator=(const MapBase& other)
{
- return Base::operator=(other);
+ Base::operator=(other);
+ return derived();
}
using Base::operator=;