aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/AlignedVector3
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2014-09-18 22:46:46 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2014-09-18 22:46:46 +0200
commite70506dd8f63241d92ebc3df2d9c01c9af5564c8 (patch)
tree97ca7cee5986c114f344469240a12578722f78da /unsupported/Eigen/AlignedVector3
parent2ae20d558b33653b8ef2fe17255ed171997bcf79 (diff)
Fix inner-stride of AlignedVector3
Diffstat (limited to 'unsupported/Eigen/AlignedVector3')
-rw-r--r--unsupported/Eigen/AlignedVector316
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()) {}
};
}