* added a lazyAssign overload skipping .lazy() such that c = (<xpr>).lazy() such that

lazyAssign overloads of <xpr> are automatically called (this also reduces assign instansiations)
This commit is contained in:
Gael Guennebaud 2008-07-09 13:54:21 +00:00
parent 783eb6da9b
commit 5f55ab524c
2 changed files with 15 additions and 12 deletions

View File

@ -1,6 +1,6 @@
SET(Eigen_HEADERS Core CoreDeclarations LU Cholesky QR Geometry Sparse Array)
IF(TEST_LIB)
IF(BUILD_LIB)
SET(Eigen_SRCS
src/Core/CoreInstantiations.cpp
src/Cholesky/CholeskyInstantiations.cpp
@ -8,7 +8,12 @@ IF(TEST_LIB)
)
ADD_LIBRARY(Eigen2 SHARED ${Eigen_SRCS})
ENDIF(TEST_LIB)
INSTALL(TARGETS Eigen2
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
ENDIF(BUILD_LIB)
IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g1 -O2")
@ -26,11 +31,4 @@ INSTALL(FILES
DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen
)
IF(TEST_LIB)
INSTALL(TARGETS Eigen2
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
ENDIF(TEST_LIB)
ADD_SUBDIRECTORY(src)

View File

@ -212,9 +212,14 @@ template<typename Derived> class MatrixBase
return this->operator=<Derived>(other);
}
/** Overloaded for optimal product evaluation */
template<typename Derived1, typename Derived2>
Derived& lazyAssign(const Product<Derived1,Derived2,CacheFriendlyProduct>& product);
/** Overloaded for cache friendly product evaluation */
template<typename Lhs, typename Rhs>
Derived& lazyAssign(const Product<Lhs,Rhs,CacheFriendlyProduct>& product);
/** Overloaded for cache friendly product evaluation */
template<typename OtherDerived>
Derived& lazyAssign(const Flagged<OtherDerived, 0, EvalBeforeNestingBit | EvalBeforeAssigningBit>& other)
{ lazyAssign(other._expression()); }
/** Overloaded for sparse product evaluation */
template<typename Derived1, typename Derived2>