bug #1089: add a warning when using a MatrixBase method which is implemented within another module by declaring them inline.

This commit is contained in:
Gael Guennebaud 2015-10-22 16:10:28 +02:00
parent e78bc111f1
commit 6df8e99470

View File

@ -328,23 +328,26 @@ template<typename Derived> class MatrixBase
/////////// LU module /////////// /////////// LU module ///////////
EIGEN_DEVICE_FUNC const FullPivLU<PlainObject> fullPivLu() const; EIGEN_DEVICE_FUNC
EIGEN_DEVICE_FUNC const PartialPivLU<PlainObject> partialPivLu() const; inline const FullPivLU<PlainObject> fullPivLu() const;
EIGEN_DEVICE_FUNC
const PartialPivLU<PlainObject> lu() const; inline const PartialPivLU<PlainObject> partialPivLu() const;
EIGEN_DEVICE_FUNC EIGEN_DEVICE_FUNC
const Inverse<Derived> inverse() const; inline const PartialPivLU<PlainObject> lu() const;
EIGEN_DEVICE_FUNC
inline const Inverse<Derived> inverse() const;
template<typename ResultType> template<typename ResultType>
void computeInverseAndDetWithCheck( inline void computeInverseAndDetWithCheck(
ResultType& inverse, ResultType& inverse,
typename ResultType::Scalar& determinant, typename ResultType::Scalar& determinant,
bool& invertible, bool& invertible,
const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision() const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
) const; ) const;
template<typename ResultType> template<typename ResultType>
void computeInverseWithCheck( inline void computeInverseWithCheck(
ResultType& inverse, ResultType& inverse,
bool& invertible, bool& invertible,
const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision() const RealScalar& absDeterminantThreshold = NumTraits<Scalar>::dummy_precision()
@ -353,22 +356,24 @@ template<typename Derived> class MatrixBase
/////////// Cholesky module /////////// /////////// Cholesky module ///////////
const LLT<PlainObject> llt() const; inline const LLT<PlainObject> llt() const;
const LDLT<PlainObject> ldlt() const; inline const LDLT<PlainObject> ldlt() const;
/////////// QR module /////////// /////////// QR module ///////////
const HouseholderQR<PlainObject> householderQr() const; inline const HouseholderQR<PlainObject> householderQr() const;
const ColPivHouseholderQR<PlainObject> colPivHouseholderQr() const; inline const ColPivHouseholderQR<PlainObject> colPivHouseholderQr() const;
const FullPivHouseholderQR<PlainObject> fullPivHouseholderQr() const; inline const FullPivHouseholderQR<PlainObject> fullPivHouseholderQr() const;
EigenvaluesReturnType eigenvalues() const; /////////// Eigenvalues module ///////////
RealScalar operatorNorm() const;
inline EigenvaluesReturnType eigenvalues() const;
inline RealScalar operatorNorm() const;
/////////// SVD module /////////// /////////// SVD module ///////////
JacobiSVD<PlainObject> jacobiSvd(unsigned int computationOptions = 0) const; inline JacobiSVD<PlainObject> jacobiSvd(unsigned int computationOptions = 0) const;
BDCSVD<PlainObject> bdcSvd(unsigned int computationOptions = 0) const; inline BDCSVD<PlainObject> bdcSvd(unsigned int computationOptions = 0) const;
/////////// Geometry module /////////// /////////// Geometry module ///////////
@ -381,24 +386,24 @@ template<typename Derived> class MatrixBase
#endif // EIGEN_PARSED_BY_DOXYGEN #endif // EIGEN_PARSED_BY_DOXYGEN
template<typename OtherDerived> template<typename OtherDerived>
EIGEN_DEVICE_FUNC EIGEN_DEVICE_FUNC
typename cross_product_return_type<OtherDerived>::type inline typename cross_product_return_type<OtherDerived>::type
cross(const MatrixBase<OtherDerived>& other) const; cross(const MatrixBase<OtherDerived>& other) const;
template<typename OtherDerived> template<typename OtherDerived>
EIGEN_DEVICE_FUNC EIGEN_DEVICE_FUNC
PlainObject cross3(const MatrixBase<OtherDerived>& other) const; inline PlainObject cross3(const MatrixBase<OtherDerived>& other) const;
EIGEN_DEVICE_FUNC EIGEN_DEVICE_FUNC
PlainObject unitOrthogonal(void) const; inline PlainObject unitOrthogonal(void) const;
Matrix<Scalar,3,1> eulerAngles(Index a0, Index a1, Index a2) const; inline Matrix<Scalar,3,1> eulerAngles(Index a0, Index a1, Index a2) const;
ScalarMultipleReturnType operator*(const UniformScaling<Scalar>& s) const; inline ScalarMultipleReturnType operator*(const UniformScaling<Scalar>& s) const;
// put this as separate enum value to work around possible GCC 4.3 bug (?) // put this as separate enum value to work around possible GCC 4.3 bug (?)
enum { HomogeneousReturnTypeDirection = ColsAtCompileTime==1&&RowsAtCompileTime==1 ? ((internal::traits<Derived>::Flags&RowMajorBit)==RowMajorBit ? Horizontal : Vertical) enum { HomogeneousReturnTypeDirection = ColsAtCompileTime==1&&RowsAtCompileTime==1 ? ((internal::traits<Derived>::Flags&RowMajorBit)==RowMajorBit ? Horizontal : Vertical)
: ColsAtCompileTime==1 ? Vertical : Horizontal }; : ColsAtCompileTime==1 ? Vertical : Horizontal };
typedef Homogeneous<Derived, HomogeneousReturnTypeDirection> HomogeneousReturnType; typedef Homogeneous<Derived, HomogeneousReturnTypeDirection> HomogeneousReturnType;
HomogeneousReturnType homogeneous() const; inline HomogeneousReturnType homogeneous() const;
enum { enum {
SizeMinusOne = SizeAtCompileTime==Dynamic ? Dynamic : SizeAtCompileTime-1 SizeMinusOne = SizeAtCompileTime==Dynamic ? Dynamic : SizeAtCompileTime-1
@ -409,7 +414,7 @@ template<typename Derived> class MatrixBase
typedef CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>, typedef CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>,
const ConstStartMinusOne > HNormalizedReturnType; const ConstStartMinusOne > HNormalizedReturnType;
const HNormalizedReturnType hnormalized() const; inline const HNormalizedReturnType hnormalized() const;
////////// Householder module /////////// ////////// Householder module ///////////