diff options
author | Gael Guennebaud <g.gael@free.fr> | 2018-10-02 23:44:36 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2018-10-02 23:44:36 +0200 |
commit | 0481900e25764f16e8723d2588f818d3a610cfad (patch) | |
tree | ddfa9c7bdbefe56b146093389568945c65cc5282 /Eigen/src/Core/DenseBase.h | |
parent | 8c385281689c51d997a99cabe76672b7c2efe91d (diff) |
Add pointer-based iterator for direct-access expressions
Diffstat (limited to 'Eigen/src/Core/DenseBase.h')
-rw-r--r-- | Eigen/src/Core/DenseBase.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Eigen/src/Core/DenseBase.h b/Eigen/src/Core/DenseBase.h index c0699f97d..f69c0b2dc 100644 --- a/Eigen/src/Core/DenseBase.h +++ b/Eigen/src/Core/DenseBase.h @@ -572,12 +572,21 @@ template<typename Derived> class DenseBase } EIGEN_DEVICE_FUNC void reverseInPlace(); - inline DenseStlIterator<Derived> begin(); - inline DenseStlIterator<const Derived> begin() const; - inline DenseStlIterator<const Derived> cbegin() const; - inline DenseStlIterator<Derived> end(); - inline DenseStlIterator<const Derived> end() const; - inline DenseStlIterator<const Derived> cend() const; + typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit, + PointerBasedStlIterator<Derived>, + DenseStlIterator<Derived> + >::type iterator; + + typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit, + PointerBasedStlIterator<const Derived>, + DenseStlIterator<const Derived> + >::type const_iterator; + inline iterator begin(); + inline const_iterator begin() const; + inline const_iterator cbegin() const; + inline iterator end(); + inline const_iterator end() const; + inline const_iterator cend() const; inline SubVectorsProxy<Derived,Vertical> allCols(); inline SubVectorsProxy<const Derived,Vertical> allCols() const; inline SubVectorsProxy<Derived,Horizontal> allRows(); |