From f0c8dcf1e2f01fb200a8e48463d9f73c77bc1436 Mon Sep 17 00:00:00 2001 From: Hauke Heibel Date: Sat, 20 Feb 2010 15:26:02 +0100 Subject: [PATCH] Renamed AnyMatrixBase to EigenBase. --- Eigen/Core | 2 +- Eigen/src/Array/Array.h | 6 ++--- Eigen/src/Core/BandMatrix.h | 2 +- Eigen/src/Core/DenseBase.h | 12 ++++----- Eigen/src/Core/DenseStorageBase.h | 8 +++--- Eigen/src/Core/DiagonalMatrix.h | 2 +- .../src/Core/{AnyMatrixBase.h => EigenBase.h} | 24 ++++++++--------- Eigen/src/Core/Matrix.h | 8 +++--- Eigen/src/Core/MatrixBase.h | 6 ++--- Eigen/src/Core/PermutationMatrix.h | 4 +-- Eigen/src/Core/TriangularMatrix.h | 2 +- Eigen/src/Core/util/ForwardDeclarations.h | 2 +- Eigen/src/Core/util/XprHelper.h | 26 +++++++++++++++++-- Eigen/src/Geometry/RotationBase.h | 4 +-- Eigen/src/Geometry/Transform.h | 12 ++++----- Eigen/src/Geometry/Translation.h | 6 ++--- Eigen/src/Householder/HouseholderSequence.h | 2 +- Eigen/src/Sparse/SparseMatrixBase.h | 2 +- .../Eigen/src/Skyline/SkylineMatrixBase.h | 2 +- 19 files changed, 77 insertions(+), 55 deletions(-) rename Eigen/src/Core/{AnyMatrixBase.h => EigenBase.h} (86%) diff --git a/Eigen/Core b/Eigen/Core index 18b0fafa9..cbca16640 100644 --- a/Eigen/Core +++ b/Eigen/Core @@ -164,7 +164,7 @@ struct Dense {}; #include "src/Core/Functors.h" #include "src/Core/DenseBase.h" #include "src/Core/MatrixBase.h" -#include "src/Core/AnyMatrixBase.h" +#include "src/Core/EigenBase.h" #include "src/Core/Coeffs.h" #ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874 diff --git a/Eigen/src/Array/Array.h b/Eigen/src/Array/Array.h index ceef71afd..77d0c41ac 100644 --- a/Eigen/src/Array/Array.h +++ b/Eigen/src/Array/Array.h @@ -61,7 +61,7 @@ class Array * the usage of 'using'. This should be done only for operator=. */ template - EIGEN_STRONG_INLINE Array& operator=(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE Array& operator=(const EigenBase &other) { return Base::operator=(other); } @@ -196,9 +196,9 @@ class Array other.evalTo(*this); } - /** \sa MatrixBase::operator=(const AnyMatrixBase&) */ + /** \sa MatrixBase::operator=(const EigenBase&) */ template - EIGEN_STRONG_INLINE Array(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE Array(const EigenBase &other) : Base(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols()) { Base::_check_template_params(); diff --git a/Eigen/src/Core/BandMatrix.h b/Eigen/src/Core/BandMatrix.h index 538e6dd76..432df0b34 100644 --- a/Eigen/src/Core/BandMatrix.h +++ b/Eigen/src/Core/BandMatrix.h @@ -57,7 +57,7 @@ struct ei_traits > }; template -class BandMatrix : public AnyMatrixBase > +class BandMatrix : public EigenBase > { public: diff --git a/Eigen/src/Core/DenseBase.h b/Eigen/src/Core/DenseBase.h index 21d792f49..2850c60cb 100644 --- a/Eigen/src/Core/DenseBase.h +++ b/Eigen/src/Core/DenseBase.h @@ -40,7 +40,7 @@ template class DenseBase : public ei_special_scalar_op_base::Scalar, typename NumTraits::Scalar>::Real> #else - : public AnyMatrixBase + : public EigenBase #endif // not EIGEN_PARSED_BY_DOXYGEN { public: @@ -53,8 +53,8 @@ template class DenseBase typedef typename ei_traits::Scalar Scalar; typedef typename ei_packet_traits::type PacketScalar; - using AnyMatrixBase::derived; - using AnyMatrixBase::const_cast_derived; + using EigenBase::derived; + using EigenBase::const_cast_derived; #endif // not EIGEN_PARSED_BY_DOXYGEN enum { @@ -214,13 +214,13 @@ template class DenseBase Derived& operator=(const DenseBase& other); template - Derived& operator=(const AnyMatrixBase &other); + Derived& operator=(const EigenBase &other); template - Derived& operator+=(const AnyMatrixBase &other); + Derived& operator+=(const EigenBase &other); template - Derived& operator-=(const AnyMatrixBase &other); + Derived& operator-=(const EigenBase &other); template Derived& operator=(const ReturnByValue& func); diff --git a/Eigen/src/Core/DenseStorageBase.h b/Eigen/src/Core/DenseStorageBase.h index 5c8e48768..530ddcd07 100644 --- a/Eigen/src/Core/DenseStorageBase.h +++ b/Eigen/src/Core/DenseStorageBase.h @@ -355,19 +355,19 @@ class DenseStorageBase : public _Base // EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED } - /** \copydoc MatrixBase::operator=(const AnyMatrixBase&) + /** \copydoc MatrixBase::operator=(const EigenBase&) */ template - EIGEN_STRONG_INLINE Derived& operator=(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE Derived& operator=(const EigenBase &other) { resize(other.derived().rows(), other.derived().cols()); Base::operator=(other.derived()); return this->derived(); } - /** \sa MatrixBase::operator=(const AnyMatrixBase&) */ + /** \sa MatrixBase::operator=(const EigenBase&) */ template - EIGEN_STRONG_INLINE DenseStorageBase(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE DenseStorageBase(const EigenBase &other) : m_storage(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols()) { _check_template_params(); diff --git a/Eigen/src/Core/DiagonalMatrix.h b/Eigen/src/Core/DiagonalMatrix.h index 08c046611..774b0d7ae 100644 --- a/Eigen/src/Core/DiagonalMatrix.h +++ b/Eigen/src/Core/DiagonalMatrix.h @@ -28,7 +28,7 @@ #ifndef EIGEN_PARSED_BY_DOXYGEN template -class DiagonalBase : public AnyMatrixBase +class DiagonalBase : public EigenBase { public: typedef typename ei_traits::DiagonalVectorType DiagonalVectorType; diff --git a/Eigen/src/Core/AnyMatrixBase.h b/Eigen/src/Core/EigenBase.h similarity index 86% rename from Eigen/src/Core/AnyMatrixBase.h rename to Eigen/src/Core/EigenBase.h index a5d1cfe9f..8b302b663 100644 --- a/Eigen/src/Core/AnyMatrixBase.h +++ b/Eigen/src/Core/EigenBase.h @@ -23,19 +23,19 @@ // License and a copy of the GNU General Public License along with // Eigen. If not, see . -#ifndef EIGEN_ANYMATRIXBASE_H -#define EIGEN_ANYMATRIXBASE_H +#ifndef EIGEN_EIGENBASE_H +#define EIGEN_EIGENBASE_H /** Common base class for all classes T such that MatrixBase has an operator=(T) and a constructor MatrixBase(T). * - * In other words, an AnyMatrixBase object is an object that can be copied into a MatrixBase. + * In other words, an EigenBase object is an object that can be copied into a MatrixBase. * * Besides MatrixBase-derived classes, this also includes special matrix classes such as diagonal matrices, etc. * * Notice that this class is trivial, it is only used to disambiguate overloaded functions. */ -template struct AnyMatrixBase +template struct EigenBase { // typedef typename ei_plain_matrix_type::type PlainMatrixType; @@ -45,7 +45,7 @@ template struct AnyMatrixBase const Derived& derived() const { return *static_cast(this); } inline Derived& const_cast_derived() const - { return *static_cast(const_cast(this)); } + { return *static_cast(const_cast(this)); } /** \returns the number of rows. \sa cols(), RowsAtCompileTime */ inline int rows() const { return derived().rows(); } @@ -108,7 +108,7 @@ template struct AnyMatrixBase */ template template -Derived& DenseBase::operator=(const AnyMatrixBase &other) +Derived& DenseBase::operator=(const EigenBase &other) { other.derived().evalTo(derived()); return derived(); @@ -116,7 +116,7 @@ Derived& DenseBase::operator=(const AnyMatrixBase &other) template template -Derived& DenseBase::operator+=(const AnyMatrixBase &other) +Derived& DenseBase::operator+=(const EigenBase &other) { other.derived().addTo(derived()); return derived(); @@ -124,7 +124,7 @@ Derived& DenseBase::operator+=(const AnyMatrixBase &other template template -Derived& DenseBase::operator-=(const AnyMatrixBase &other) +Derived& DenseBase::operator-=(const EigenBase &other) { other.derived().subTo(derived()); return derived(); @@ -137,7 +137,7 @@ Derived& DenseBase::operator-=(const AnyMatrixBase &other template template inline Derived& -MatrixBase::operator*=(const AnyMatrixBase &other) +MatrixBase::operator*=(const EigenBase &other) { other.derived().applyThisOnTheRight(derived()); return derived(); @@ -146,7 +146,7 @@ MatrixBase::operator*=(const AnyMatrixBase &other) /** replaces \c *this by \c *this * \a other. It is equivalent to MatrixBase::operator*=() */ template template -inline void MatrixBase::applyOnTheRight(const AnyMatrixBase &other) +inline void MatrixBase::applyOnTheRight(const EigenBase &other) { other.derived().applyThisOnTheRight(derived()); } @@ -154,9 +154,9 @@ inline void MatrixBase::applyOnTheRight(const AnyMatrixBase template -inline void MatrixBase::applyOnTheLeft(const AnyMatrixBase &other) +inline void MatrixBase::applyOnTheLeft(const EigenBase &other) { other.derived().applyThisOnTheLeft(derived()); } -#endif // EIGEN_ANYMATRIXBASE_H +#endif // EIGEN_EIGENBASE_H diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index 6f194ffba..1c43340a6 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -181,10 +181,10 @@ class Matrix /** * \brief Copies the generic expression \a other into *this. - * \copydetails DenseBase::operator=(const AnyMatrixBase &other) + * \copydetails DenseBase::operator=(const EigenBase &other) */ template - EIGEN_STRONG_INLINE Matrix& operator=(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE Matrix& operator=(const EigenBase &other) { return Base::operator=(other); } @@ -297,10 +297,10 @@ class Matrix } /** \brief Copy constructor for generic expressions. - * \sa MatrixBase::operator=(const AnyMatrixBase&) + * \sa MatrixBase::operator=(const EigenBase&) */ template - EIGEN_STRONG_INLINE Matrix(const AnyMatrixBase &other) + EIGEN_STRONG_INLINE Matrix(const EigenBase &other) : Base(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols()) { Base::_check_template_params(); diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index 229195046..122a2271b 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h @@ -193,13 +193,13 @@ template class MatrixBase lazyProduct(const MatrixBase &other) const; template - Derived& operator*=(const AnyMatrixBase& other); + Derived& operator*=(const EigenBase& other); template - void applyOnTheLeft(const AnyMatrixBase& other); + void applyOnTheLeft(const EigenBase& other); template - void applyOnTheRight(const AnyMatrixBase& other); + void applyOnTheRight(const EigenBase& other); template const DiagonalProduct diff --git a/Eigen/src/Core/PermutationMatrix.h b/Eigen/src/Core/PermutationMatrix.h index 284baf678..2d97c9c38 100644 --- a/Eigen/src/Core/PermutationMatrix.h +++ b/Eigen/src/Core/PermutationMatrix.h @@ -55,7 +55,7 @@ struct ei_traits > {}; template -class PermutationMatrix : public AnyMatrixBase > +class PermutationMatrix : public EigenBase > { public: @@ -144,7 +144,7 @@ class PermutationMatrix : public AnyMatrixBase class TriangularBase : public AnyMatrixBase +template class TriangularBase : public EigenBase { public: diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/Eigen/src/Core/util/ForwardDeclarations.h index aed0abe6d..a56e4fb84 100644 --- a/Eigen/src/Core/util/ForwardDeclarations.h +++ b/Eigen/src/Core/util/ForwardDeclarations.h @@ -28,7 +28,7 @@ template struct ei_traits; template struct NumTraits; -template struct AnyMatrixBase; +template struct EigenBase; template struct ei_plain_matrix_type_row_major // we should be able to get rid of this one too template struct ei_must_nest_by_value { enum { ret = false }; }; +template +struct ei_is_reference +{ +#ifndef NDEBUG + static void check() { std::cout << typeid(T).name() << std::endl; } +#else + static void check() {} +#endif + enum { ret = false }; +}; + +template +struct ei_is_reference +{ +#ifndef NDEBUG + static void check() { std::cout << typeid(T).name() << "&" << std::endl; } +#else + static void check() {} +#endif + enum { ret = true }; +}; + /** * The reference selector for template expressions. The idea is that we don't * need to use references for expressions since they are light weight proxy @@ -258,7 +280,7 @@ template struct ei_are_flags_consistent * overloads for complex types */ template::ret > -struct ei_special_scalar_op_base : public AnyMatrixBase +struct ei_special_scalar_op_base : public EigenBase { // dummy operator* so that the // "using ei_special_scalar_op_base::operator*" compiles @@ -266,7 +288,7 @@ struct ei_special_scalar_op_base : public AnyMatrixBase }; template -struct ei_special_scalar_op_base : public AnyMatrixBase +struct ei_special_scalar_op_base : public EigenBase { const CwiseUnaryOp, Derived> operator*(const OtherScalar& scalar) const diff --git a/Eigen/src/Geometry/RotationBase.h b/Eigen/src/Geometry/RotationBase.h index e8bb16f17..9b865889c 100644 --- a/Eigen/src/Geometry/RotationBase.h +++ b/Eigen/src/Geometry/RotationBase.h @@ -74,12 +74,12 @@ class RotationBase */ template EIGEN_STRONG_INLINE typename ei_rotation_base_generic_product_selector::ReturnType - operator*(const AnyMatrixBase& e) const + operator*(const EigenBase& e) const { return ei_rotation_base_generic_product_selector::run(derived(), e.derived()); } /** \returns the concatenation of a linear transformation \a l with the rotation \a r */ template friend - inline RotationMatrixType operator*(const AnyMatrixBase& l, const Derived& r) + inline RotationMatrixType operator*(const EigenBase& l, const Derived& r) { return l.derived() * r.toRotationMatrix(); } /** \returns the concatenation of the rotation \c *this with a transformation \a t */ diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h index 40bc7033a..1240a95bc 100644 --- a/Eigen/src/Geometry/Transform.h +++ b/Eigen/src/Geometry/Transform.h @@ -226,14 +226,14 @@ public: /** Constructs and initializes a transformation from a Dim^2 or a (Dim+1)^2 matrix. */ template - inline explicit Transform(const AnyMatrixBase& other) + inline explicit Transform(const EigenBase& other) { ei_transform_construct_from_matrix::run(this, other.derived()); } /** Set \c *this from a Dim^2 or (Dim+1)^2 matrix. */ template - inline Transform& operator=(const AnyMatrixBase& other) + inline Transform& operator=(const EigenBase& other) { ei_transform_construct_from_matrix::run(this, other.derived()); return *this; @@ -310,7 +310,7 @@ public: // note: this function is defined here because some compilers cannot find the respective declaration template inline const typename ei_transform_right_product_impl::ResultType - operator * (const AnyMatrixBase &other) const + operator * (const EigenBase &other) const { return ei_transform_right_product_impl::run(*this,other.derived()); } /** \returns the product expression of a transformation matrix \a a times a transform \a b @@ -322,11 +322,11 @@ public: */ template friend inline const typename ei_transform_left_product_impl::ResultType - operator * (const AnyMatrixBase &a, const Transform &b) + operator * (const EigenBase &a, const Transform &b) { return ei_transform_left_product_impl::run(a.derived(),b); } template - inline Transform& operator*=(const AnyMatrixBase& other) { return *this = *this * other; } + inline Transform& operator*=(const EigenBase& other) { return *this = *this * other; } /** Contatenates two transformations */ inline const Transform operator * (const Transform& other) const @@ -1021,7 +1021,7 @@ struct ei_transform_construct_from_matrix - inline AffineTransformType operator* (const AnyMatrixBase& linear) const; + inline AffineTransformType operator* (const EigenBase& linear) const; /** Concatenates a translation and a rotation */ template @@ -103,7 +103,7 @@ public: /** \returns the concatenation of a linear transformation \a l with the translation \a t */ // its a nightmare to define a templated friend function outside its declaration template friend - inline AffineTransformType operator*(const AnyMatrixBase& linear, const Translation& t) + inline AffineTransformType operator*(const EigenBase& linear, const Translation& t) { AffineTransformType res; res.matrix().setZero(); @@ -182,7 +182,7 @@ Translation::operator* (const UniformScaling& other) const template template inline typename Translation::AffineTransformType -Translation::operator* (const AnyMatrixBase& linear) const +Translation::operator* (const EigenBase& linear) const { AffineTransformType res; res.matrix().setZero(); diff --git a/Eigen/src/Householder/HouseholderSequence.h b/Eigen/src/Householder/HouseholderSequence.h index f8ae4136b..05e883168 100644 --- a/Eigen/src/Householder/HouseholderSequence.h +++ b/Eigen/src/Householder/HouseholderSequence.h @@ -97,7 +97,7 @@ template struct ei_matrix_type_ti }; template class HouseholderSequence - : public AnyMatrixBase > + : public EigenBase > { enum { RowsAtCompileTime = ei_traits::RowsAtCompileTime, diff --git a/Eigen/src/Sparse/SparseMatrixBase.h b/Eigen/src/Sparse/SparseMatrixBase.h index 205325939..7bf4ef836 100644 --- a/Eigen/src/Sparse/SparseMatrixBase.h +++ b/Eigen/src/Sparse/SparseMatrixBase.h @@ -36,7 +36,7 @@ * * */ -template class SparseMatrixBase : public AnyMatrixBase +template class SparseMatrixBase : public EigenBase { public: diff --git a/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h b/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h index b90a6f9e9..ff20b830c 100644 --- a/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +++ b/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h @@ -36,7 +36,7 @@ * \param Derived * */ -template class SkylineMatrixBase : public AnyMatrixBase { +template class SkylineMatrixBase : public EigenBase { public: typedef typename ei_traits::Scalar Scalar;