diff options
author | 2011-11-22 09:04:31 -0500 | |
---|---|---|
committer | 2011-11-22 09:04:31 -0500 | |
commit | ffe6d1f901566e0c7e34c1f6fcccd35864197cc1 (patch) | |
tree | c4dd026663fdc61f6da59209fb11f32e86705b6e /Eigen/src/Core/PlainObjectBase.h | |
parent | f278a3eabaa6553825daafbee0a92515c90b0b74 (diff) |
Alignment fixes:
* Fix AlignedBit computation for Plain Objects
* use it for the conditional alignment of operator new
* only overload new in PlainObjectBase, don't overload again in Matrix and Array
Diffstat (limited to 'Eigen/src/Core/PlainObjectBase.h')
-rw-r--r-- | Eigen/src/Core/PlainObjectBase.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/Eigen/src/Core/PlainObjectBase.h b/Eigen/src/Core/PlainObjectBase.h index f4d7b672c..da58395ca 100644 --- a/Eigen/src/Core/PlainObjectBase.h +++ b/Eigen/src/Core/PlainObjectBase.h @@ -97,14 +97,12 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type template<typename StrideType> struct StridedConstMapType { typedef Eigen::Map<const Derived, Unaligned, StrideType> type; }; template<typename StrideType> struct StridedAlignedMapType { typedef Eigen::Map<Derived, Aligned, StrideType> type; }; template<typename StrideType> struct StridedConstAlignedMapType { typedef Eigen::Map<const Derived, Aligned, StrideType> type; }; - protected: DenseStorage<Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options> m_storage; public: - enum { NeedsToAlign = (!(Options&DontAlign)) - && SizeAtCompileTime!=Dynamic && ((static_cast<int>(sizeof(Scalar))*SizeAtCompileTime)%16)==0 }; + enum { NeedsToAlign = SizeAtCompileTime != Dynamic && (internal::traits<Derived>::Flags & AlignedBit) != 0 }; EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign) Base& base() { return *static_cast<Base*>(this); } |