diff options
Diffstat (limited to 'unsupported/Eigen/AlignedVector3')
-rw-r--r-- | unsupported/Eigen/AlignedVector3 | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/unsupported/Eigen/AlignedVector3 b/unsupported/Eigen/AlignedVector3 index cd5f49edb..35493e87b 100644 --- a/unsupported/Eigen/AlignedVector3 +++ b/unsupported/Eigen/AlignedVector3 @@ -60,6 +60,7 @@ template<typename _Scalar> class AlignedVector3 Scalar* data() { return m_coeffs.data(); } const Scalar* data() const { return m_coeffs.data(); } + Index innerStride() const { return 1; } inline const Scalar& coeff(Index row, Index col) const { return m_coeffs.coeff(row, col); } @@ -184,27 +185,24 @@ template<typename _Scalar> class AlignedVector3 { return m_coeffs.template head<3>().isApprox(other,eps); } + + CoeffType& coeffs() { return m_coeffs; } + const CoeffType& coeffs() const { return m_coeffs; } }; namespace internal { template<typename Scalar> struct evaluator<AlignedVector3<Scalar> > - : evaluator<Map<const Matrix<Scalar,3,1>,Aligned> >::type + : evaluator<Matrix<Scalar,4,1> >::type { typedef AlignedVector3<Scalar> XprType; - typedef Map<const Matrix<Scalar,3,1>,Aligned> MapType; - typedef typename evaluator<MapType>::type Base; + typedef typename evaluator<Matrix<Scalar,4,1> >::type Base; typedef evaluator type; typedef evaluator nestedType; - evaluator(const XprType &m) : Base(MapType(m.data())), m_map(m.data()) - { - ::new (static_cast<Base*>(this)) Base(m_map); - } - - const MapType m_map; + evaluator(const XprType &m) : Base(m.coeffs()) {} }; } |