From 0a6c472335b593a227c3adbcf1d770187449a30f Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 13 Mar 2014 15:44:20 +0100 Subject: A bit of cleaning --- Eigen/src/Core/Assign.h | 82 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 26 deletions(-) (limited to 'Eigen/src/Core/Assign.h') diff --git a/Eigen/src/Core/Assign.h b/Eigen/src/Core/Assign.h index 95eb37dd5..0e10f125f 100644 --- a/Eigen/src/Core/Assign.h +++ b/Eigen/src/Core/Assign.h @@ -509,7 +509,7 @@ EIGEN_STRONG_INLINE Derived& DenseBase #ifdef EIGEN_TEST_EVALUATORS eigen_assert(rows() == other.rows() && cols() == other.cols()); - internal::call_dense_assignment_loop(derived(),other.derived()); + internal::call_assignment_no_alias(derived(),other.derived()); #else // EIGEN_TEST_EVALUATORS @@ -530,23 +530,7 @@ EIGEN_STRONG_INLINE Derived& DenseBase namespace internal { -#ifdef EIGEN_TEST_EVALUATORS - -// TODO remove this class which is now useless - -template -struct assign_selector { - EIGEN_DEVICE_FUNC - static EIGEN_STRONG_INLINE Derived& run(Derived& dst, const OtherDerived& other) { - call_assignment(dst, other.derived(), internal::assign_op()); - return dst; - } - template - EIGEN_DEVICE_FUNC - static EIGEN_STRONG_INLINE Derived& evalTo(ActualDerived& dst, const ActualOtherDerived& other) { other.evalTo(dst); return dst; } -}; - -#else // EIGEN_TEST_EVALUATORS +#ifndef EIGEN_TEST_EVALUATORS template::Flags) & EvalBeforeAssigningBit) != 0, bool NeedToTranspose = ((int(Derived::RowsAtCompileTime) == 1 && int(OtherDerived::ColsAtCompileTime) == 1) @@ -585,6 +569,59 @@ struct assign_selector { #endif // EIGEN_TEST_EVALUATORS } // end namespace internal +#ifdef EIGEN_TEST_EVALUATORS +template +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& DenseBase::operator=(const DenseBase& other) +{ + internal::call_assignment(derived(), other.derived()); + return derived(); +} + +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& DenseBase::operator=(const DenseBase& other) +{ + internal::call_assignment(derived(), other.derived()); + return derived(); +} + +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const MatrixBase& other) +{ + internal::call_assignment(derived(), other.derived()); + return derived(); +} + +template +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const DenseBase& other) +{ + internal::call_assignment(derived(), other.derived()); + return derived(); +} + +template +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const EigenBase& other) +{ + other.derived().evalTo(derived()); + return derived(); +} + +template +template +EIGEN_DEVICE_FUNC +EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const ReturnByValue& other) +{ + other.derived().evalTo(derived()); + return derived(); +} +#else // EIGEN_TEST_EVALUATORS template template EIGEN_DEVICE_FUNC @@ -620,11 +657,7 @@ template EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const EigenBase& other) { -#ifdef EIGEN_TEST_EVALUATORS - return internal::assign_selector::evalTo(derived(), other.derived()); -#else return internal::assign_selector::evalTo(derived(), other.derived()); -#endif } template @@ -632,12 +665,9 @@ template EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& MatrixBase::operator=(const ReturnByValue& other) { -#ifdef EIGEN_TEST_EVALUATORS - return internal::assign_selector::evalTo(derived(), other.derived()); -#else return internal::assign_selector::evalTo(derived(), other.derived()); -#endif } +#endif // EIGEN_TEST_EVALUATORS } // end namespace Eigen -- cgit v1.2.3