mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-18 02:44:27 +08:00
EIGEN_MAKE_ALIGNED_OPERATOR_NEW didn't actually need to get the class
name as parameter
This commit is contained in:
parent
1d52bd4cad
commit
eb7dcbbfce
@ -135,7 +135,7 @@ class Matrix
|
|||||||
public:
|
public:
|
||||||
enum { NeedsToAlign = (Options&AutoAlign) == AutoAlign
|
enum { NeedsToAlign = (Options&AutoAlign) == AutoAlign
|
||||||
&& SizeAtCompileTime!=Dynamic && ((sizeof(Scalar)*SizeAtCompileTime)%16)==0 };
|
&& SizeAtCompileTime!=Dynamic && ((sizeof(Scalar)*SizeAtCompileTime)%16)==0 };
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Matrix,NeedsToAlign)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
|
||||||
|
|
||||||
EIGEN_STRONG_INLINE int rows() const { return m_storage.rows(); }
|
EIGEN_STRONG_INLINE int rows() const { return m_storage.rows(); }
|
||||||
EIGEN_STRONG_INLINE int cols() const { return m_storage.cols(); }
|
EIGEN_STRONG_INLINE int cols() const { return m_storage.cols(); }
|
||||||
|
@ -219,7 +219,7 @@ inline static int ei_alignmentOffset(const Scalar* ptr, int maxOffset)
|
|||||||
* Here is a similar safe example:
|
* Here is a similar safe example:
|
||||||
* \code
|
* \code
|
||||||
* struct Foo {
|
* struct Foo {
|
||||||
* EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Foo)
|
* EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
* char dummy;
|
* char dummy;
|
||||||
* Vector4f some_vector;
|
* Vector4f some_vector;
|
||||||
* };
|
* };
|
||||||
@ -229,7 +229,7 @@ inline static int ei_alignmentOffset(const Scalar* ptr, int maxOffset)
|
|||||||
*
|
*
|
||||||
* \sa class ei_new_allocator
|
* \sa class ei_new_allocator
|
||||||
*/
|
*/
|
||||||
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Type,NeedsToAlign) \
|
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign) \
|
||||||
void *operator new(size_t size) throw() { \
|
void *operator new(size_t size) throw() { \
|
||||||
return Eigen::ei_conditional_aligned_malloc<NeedsToAlign>(size); \
|
return Eigen::ei_conditional_aligned_malloc<NeedsToAlign>(size); \
|
||||||
} \
|
} \
|
||||||
@ -239,14 +239,14 @@ inline static int ei_alignmentOffset(const Scalar* ptr, int maxOffset)
|
|||||||
void operator delete(void * ptr) { Eigen::ei_aligned_free(ptr); } \
|
void operator delete(void * ptr) { Eigen::ei_aligned_free(ptr); } \
|
||||||
void operator delete[](void * ptr) { Eigen::ei_aligned_free(ptr); }
|
void operator delete[](void * ptr) { Eigen::ei_aligned_free(ptr); }
|
||||||
|
|
||||||
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Type) EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Type,true)
|
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(true)
|
||||||
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Type,Scalar,Size) \
|
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Scalar,Size) \
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Type,((Size)!=Eigen::Dynamic) && ((sizeof(Scalar)*(Size))%16==0))
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(((Size)!=Eigen::Dynamic) && ((sizeof(Scalar)*(Size))%16==0))
|
||||||
|
|
||||||
/** Deprecated, use the EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Class) macro instead in your own class */
|
/** Deprecated, use the EIGEN_MAKE_ALIGNED_OPERATOR_NEW macro instead in your own class */
|
||||||
struct WithAlignedOperatorNew
|
struct WithAlignedOperatorNew
|
||||||
{
|
{
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(WithAlignedOperatorNew)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \class ei_new_allocator
|
/** \class ei_new_allocator
|
||||||
|
@ -41,7 +41,7 @@ template <typename _Scalar, int _AmbientDim>
|
|||||||
class AlignedBox
|
class AlignedBox
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(AlignedBox,_Scalar,_AmbientDim==Dynamic ? Dynamic : _AmbientDim+1)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_AmbientDim==Dynamic ? Dynamic : _AmbientDim+1)
|
||||||
enum { AmbientDimAtCompileTime = _AmbientDim };
|
enum { AmbientDimAtCompileTime = _AmbientDim };
|
||||||
typedef _Scalar Scalar;
|
typedef _Scalar Scalar;
|
||||||
typedef typename NumTraits<Scalar>::Real RealScalar;
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
||||||
|
@ -47,7 +47,7 @@ template <typename _Scalar, int _AmbientDim>
|
|||||||
class Hyperplane
|
class Hyperplane
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Hyperplane,_Scalar,_AmbientDim==Dynamic ? Dynamic : _AmbientDim+1)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_AmbientDim==Dynamic ? Dynamic : _AmbientDim+1)
|
||||||
enum { AmbientDimAtCompileTime = _AmbientDim };
|
enum { AmbientDimAtCompileTime = _AmbientDim };
|
||||||
typedef _Scalar Scalar;
|
typedef _Scalar Scalar;
|
||||||
typedef typename NumTraits<Scalar>::Real RealScalar;
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
||||||
|
@ -43,7 +43,7 @@ template <typename _Scalar, int _AmbientDim>
|
|||||||
class ParametrizedLine
|
class ParametrizedLine
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(ParametrizedLine,_Scalar,_AmbientDim)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_AmbientDim)
|
||||||
enum { AmbientDimAtCompileTime = _AmbientDim };
|
enum { AmbientDimAtCompileTime = _AmbientDim };
|
||||||
typedef _Scalar Scalar;
|
typedef _Scalar Scalar;
|
||||||
typedef typename NumTraits<Scalar>::Real RealScalar;
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
||||||
|
@ -65,7 +65,7 @@ class Quaternion : public RotationBase<Quaternion<_Scalar>,3>
|
|||||||
Coefficients m_coeffs;
|
Coefficients m_coeffs;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Quaternion,_Scalar,4)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,4)
|
||||||
|
|
||||||
using Base::operator*;
|
using Base::operator*;
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ template<typename _Scalar, int _Dim>
|
|||||||
class Scaling
|
class Scaling
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Scaling,_Scalar,_Dim)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_Dim)
|
||||||
/** dimension of the space */
|
/** dimension of the space */
|
||||||
enum { Dim = _Dim };
|
enum { Dim = _Dim };
|
||||||
/** the scalar type of the coefficients */
|
/** the scalar type of the coefficients */
|
||||||
|
@ -63,7 +63,7 @@ template<typename _Scalar, int _Dim>
|
|||||||
class Transform
|
class Transform
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Transform,_Scalar,_Dim==Dynamic ? Dynamic : (_Dim+1)*(_Dim+1))
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_Dim==Dynamic ? Dynamic : (_Dim+1)*(_Dim+1))
|
||||||
enum {
|
enum {
|
||||||
Dim = _Dim, ///< space dimension in which the transformation holds
|
Dim = _Dim, ///< space dimension in which the transformation holds
|
||||||
HDim = _Dim+1 ///< size of a respective homogeneous vector
|
HDim = _Dim+1 ///< size of a respective homogeneous vector
|
||||||
|
@ -43,7 +43,7 @@ template<typename _Scalar, int _Dim>
|
|||||||
class Translation
|
class Translation
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(Translation,_Scalar,_Dim)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE(_Scalar,_Dim)
|
||||||
/** dimension of the space */
|
/** dimension of the space */
|
||||||
enum { Dim = _Dim };
|
enum { Dim = _Dim };
|
||||||
/** the scalar type of the coefficients */
|
/** the scalar type of the coefficients */
|
||||||
|
@ -54,7 +54,7 @@ class Foo
|
|||||||
Eigen::Vector2d v;
|
Eigen::Vector2d v;
|
||||||
...
|
...
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Foo)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
};
|
};
|
||||||
|
|
||||||
...
|
...
|
||||||
@ -144,7 +144,7 @@ class Foo
|
|||||||
double x;
|
double x;
|
||||||
Eigen::Vector2d v;
|
Eigen::Vector2d v;
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Foo)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
};
|
};
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ class Foo
|
|||||||
Eigen::Vector2d v;
|
Eigen::Vector2d v;
|
||||||
double x;
|
double x;
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Foo)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
};
|
};
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ template<int n> class Foo
|
|||||||
Vector v;
|
Vector v;
|
||||||
...
|
...
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Foo,NeedsToAlign)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
|
||||||
};
|
};
|
||||||
|
|
||||||
...
|
...
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
// test compilation with both a struct and a class...
|
// test compilation with both a struct and a class...
|
||||||
struct MyStruct
|
struct MyStruct
|
||||||
{
|
{
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(MyStruct)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
char dummychar;
|
char dummychar;
|
||||||
Vector4f avec;
|
Vector4f avec;
|
||||||
};
|
};
|
||||||
@ -35,7 +35,7 @@ struct MyStruct
|
|||||||
class MyClassA
|
class MyClassA
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(MyClassA)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
char dummychar;
|
char dummychar;
|
||||||
Vector4f avec;
|
Vector4f avec;
|
||||||
};
|
};
|
||||||
|
@ -57,14 +57,14 @@ struct Bad6
|
|||||||
|
|
||||||
struct Good7
|
struct Good7
|
||||||
{
|
{
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Good7)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
Vector2d m;
|
Vector2d m;
|
||||||
float f; // make the struct have sizeof%16!=0 to make it a little more tricky when we allow an array of 2 such objects
|
float f; // make the struct have sizeof%16!=0 to make it a little more tricky when we allow an array of 2 such objects
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Good8
|
struct Good8
|
||||||
{
|
{
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW(Good8)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||||
float f; // try the f at first -- the EIGEN_ALIGN_128 attribute of m should make that still work
|
float f; // try the f at first -- the EIGEN_ALIGN_128 attribute of m should make that still work
|
||||||
Matrix4f m;
|
Matrix4f m;
|
||||||
};
|
};
|
||||||
@ -77,7 +77,7 @@ struct Good9
|
|||||||
|
|
||||||
template<bool Align> struct Depends
|
template<bool Align> struct Depends
|
||||||
{
|
{
|
||||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Depends,Align)
|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(Align)
|
||||||
Vector2d m;
|
Vector2d m;
|
||||||
float f;
|
float f;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user