diff options
author | 2010-04-16 10:13:32 -0400 | |
---|---|---|
committer | 2010-04-16 10:13:32 -0400 | |
commit | ff6a46105d86e92753858c1b2aea8bcaf4575819 (patch) | |
tree | db7644512aa5adaaba50dc3c7f420508951116e5 /Eigen/src/Core/MapBase.h | |
parent | 1803db6e8409dae534cca51433a6a0fd6e7c7665 (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.h | 39 |
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=; |