Cycles: svn merge -r41225:41232 ^/trunk/blender
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 24 Oct 2011 22:32:00 +0000 (22:32 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 24 Oct 2011 22:32:00 +0000 (22:32 +0000)
873 files changed:
CMakeLists.txt
GNUmakefile
SConstruct
build_files/cmake/Modules/FindOpenImageIO.cmake [new file with mode: 0644]
build_files/cmake/cmake_consistency_check.py
build_files/cmake/macros.cmake
build_files/cmake/project_info.py
build_files/cmake/project_source_info.py
extern/CMakeLists.txt
extern/Eigen2/Eigen/Array [new file with mode: 0644]
extern/Eigen2/Eigen/Cholesky [new file with mode: 0644]
extern/Eigen2/Eigen/Core [new file with mode: 0644]
extern/Eigen2/Eigen/Dense [moved from extern/Eigen3/Eigen/Dense with 70% similarity]
extern/Eigen2/Eigen/Eigen [new file with mode: 0644]
extern/Eigen2/Eigen/Geometry [new file with mode: 0644]
extern/Eigen2/Eigen/LU [moved from extern/Eigen3/Eigen/LU with 54% similarity]
extern/Eigen2/Eigen/LeastSquares [new file with mode: 0644]
extern/Eigen2/Eigen/NewStdVector [moved from extern/Eigen3/Eigen/src/StlSupport/StdVector.h with 58% similarity]
extern/Eigen2/Eigen/QR [new file with mode: 0644]
extern/Eigen2/Eigen/QtAlignedMalloc [new file with mode: 0644]
extern/Eigen2/Eigen/SVD [moved from extern/Eigen3/Eigen/SVD with 52% similarity]
extern/Eigen2/Eigen/Sparse [new file with mode: 0644]
extern/Eigen2/Eigen/StdVector [new file with mode: 0644]
extern/Eigen2/Eigen/src/Array/BooleanRedux.h [moved from extern/Eigen3/Eigen/src/Core/BooleanRedux.h with 60% similarity]
extern/Eigen2/Eigen/src/Array/CwiseOperators.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Array/Functors.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Array/Norms.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Array/PartialRedux.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Array/Random.h [moved from extern/Eigen3/Eigen/src/Core/Random.h with 52% similarity]
extern/Eigen2/Eigen/src/Array/Select.h [moved from extern/Eigen3/Eigen/src/Core/Select.h with 59% similarity]
extern/Eigen2/Eigen/src/Cholesky/CholeskyInstantiations.cpp [moved from extern/Eigen3/Eigen/src/Eigenvalues/EigenvaluesCommon.h with 75% similarity]
extern/Eigen2/Eigen/src/Cholesky/LDLT.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Cholesky/LLT.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Assign.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Block.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/CacheFriendlyProduct.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Coeffs.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/CommaInitializer.h [moved from extern/Eigen3/Eigen/src/Core/CommaInitializer.h with 67% similarity]
extern/Eigen2/Eigen/src/Core/CoreInstantiations.cpp [moved from extern/Eigen3/Eigen/StdVector with 59% similarity]
extern/Eigen2/Eigen/src/Core/Cwise.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Cwise.h with 67% similarity]
extern/Eigen2/Eigen/src/Core/CwiseBinaryOp.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/CwiseNullaryOp.h [moved from extern/Eigen3/Eigen/src/Core/CwiseNullaryOp.h with 57% similarity]
extern/Eigen2/Eigen/src/Core/CwiseUnaryOp.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/DiagonalCoeffs.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/DiagonalMatrix.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/DiagonalProduct.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Dot.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Flagged.h [moved from extern/Eigen3/Eigen/src/Core/Flagged.h with 61% similarity]
extern/Eigen2/Eigen/src/Core/Functors.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Fuzzy.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/GenericPacketMath.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/IO.h [moved from extern/Eigen3/Eigen/src/Core/IO.h with 58% similarity]
extern/Eigen2/Eigen/src/Core/Map.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/MapBase.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/MathFunctions.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Matrix.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/MatrixBase.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/MatrixStorage.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Minor.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Minor.h with 73% similarity]
extern/Eigen2/Eigen/src/Core/NestByValue.h [moved from extern/Eigen3/Eigen/src/Core/NestByValue.h with 67% similarity]
extern/Eigen2/Eigen/src/Core/NumTraits.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Part.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Product.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Redux.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/SolveTriangular.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Sum.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Swap.h [moved from extern/Eigen3/Eigen/src/Core/Swap.h with 59% similarity]
extern/Eigen2/Eigen/src/Core/Transpose.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/Visitor.h [moved from extern/Eigen3/Eigen/src/Core/Visitor.h with 56% similarity]
extern/Eigen2/Eigen/src/Core/arch/AltiVec/PacketMath.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/arch/SSE/PacketMath.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/Constants.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/DisableMSVCWarnings.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/EnableMSVCWarnings.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/ForwardDeclarations.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/Macros.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/Memory.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/Meta.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Core/util/StaticAssert.h [moved from extern/Eigen3/Eigen/src/Core/util/StaticAssert.h with 60% similarity]
extern/Eigen2/Eigen/src/Core/util/XprHelper.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Geometry/AlignedBox.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AlignedBox.h with 84% similarity]
extern/Eigen2/Eigen/src/Geometry/AngleAxis.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/AngleAxis.h with 96% similarity]
extern/Eigen2/Eigen/src/Geometry/EulerAngles.h [moved from extern/Eigen3/Eigen/src/Geometry/EulerAngles.h with 75% similarity]
extern/Eigen2/Eigen/src/Geometry/Hyperplane.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Hyperplane.h with 92% similarity]
extern/Eigen2/Eigen/src/Geometry/OrthoMethods.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Geometry/ParametrizedLine.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h with 92% similarity]
extern/Eigen2/Eigen/src/Geometry/Quaternion.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Quaternion.h with 88% similarity]
extern/Eigen2/Eigen/src/Geometry/Rotation2D.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Rotation2D.h with 94% similarity]
extern/Eigen2/Eigen/src/Geometry/RotationBase.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/RotationBase.h with 98% similarity]
extern/Eigen2/Eigen/src/Geometry/Scaling.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Scaling.h with 95% similarity]
extern/Eigen2/Eigen/src/Geometry/Transform.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Transform.h with 93% similarity]
extern/Eigen2/Eigen/src/Geometry/Translation.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/Geometry/Translation.h with 95% similarity]
extern/Eigen2/Eigen/src/LU/Determinant.h [moved from extern/Eigen3/Eigen/src/LU/Determinant.h with 50% similarity]
extern/Eigen2/Eigen/src/LU/Inverse.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/LU/LU.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/LeastSquares/LeastSquares.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/LeastSquares.h with 98% similarity]
extern/Eigen2/Eigen/src/QR/EigenSolver.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/QR/HessenbergDecomposition.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/QR/QR.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/QR/QrInstantiations.cpp [moved from extern/Eigen3/Eigen/StdList with 59% similarity]
extern/Eigen2/Eigen/src/QR/SelfAdjointEigenSolver.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/QR/Tridiagonalization.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/SVD/SVD.h [moved from extern/Eigen3/Eigen/src/Eigen2Support/SVD.h with 92% similarity]
extern/Eigen2/Eigen/src/Sparse/AmbiVector.h [moved from extern/Eigen3/Eigen/src/Sparse/AmbiVector.h with 70% similarity]
extern/Eigen2/Eigen/src/Sparse/CholmodSupport.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/CompressedStorage.h [moved from extern/Eigen3/Eigen/src/Sparse/CompressedStorage.h with 81% similarity]
extern/Eigen2/Eigen/src/Sparse/CoreIterators.h [moved from extern/Eigen3/Eigen/src/Sparse/CoreIterators.h with 77% similarity]
extern/Eigen2/Eigen/src/Sparse/DynamicSparseMatrix.h [moved from extern/Eigen3/Eigen/src/Sparse/DynamicSparseMatrix.h with 53% similarity]
extern/Eigen2/Eigen/src/Sparse/MappedSparseMatrix.h [moved from extern/Eigen3/Eigen/src/Sparse/MappedSparseMatrix.h with 51% similarity]
extern/Eigen2/Eigen/src/Sparse/RandomSetter.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseAssign.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseAssign.h with 100% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseBlock.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseBlock.h with 50% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseCwise.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseCwiseBinaryOp.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseCwiseUnaryOp.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseDiagonalProduct.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseDot.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseDot.h with 74% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseFlagged.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseFuzzy.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseFuzzy.h with 79% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseLDLT.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseLLT.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseLU.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseMatrix.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseMatrixBase.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseMatrixBase.h with 56% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseProduct.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseRedux.h [moved from extern/Eigen3/Eigen/StdDeque with 65% similarity]
extern/Eigen2/Eigen/src/Sparse/SparseTranspose.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseUtil.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/SparseVector.h [moved from extern/Eigen3/Eigen/src/Sparse/SparseVector.h with 55% similarity]
extern/Eigen2/Eigen/src/Sparse/SuperLUSupport.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/TaucsSupport.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/TriangularSolver.h [new file with mode: 0644]
extern/Eigen2/Eigen/src/Sparse/UmfPackSupport.h [new file with mode: 0644]
extern/Eigen2/eigen-update.sh [moved from extern/Eigen3/eigen-update.sh with 71% similarity]
extern/Eigen3/Eigen/Array [deleted file]
extern/Eigen3/Eigen/Cholesky [deleted file]
extern/Eigen3/Eigen/Core [deleted file]
extern/Eigen3/Eigen/Eigen [deleted file]
extern/Eigen3/Eigen/Eigen2Support [deleted file]
extern/Eigen3/Eigen/Eigenvalues [deleted file]
extern/Eigen3/Eigen/Geometry [deleted file]
extern/Eigen3/Eigen/Householder [deleted file]
extern/Eigen3/Eigen/Jacobi [deleted file]
extern/Eigen3/Eigen/LeastSquares [deleted file]
extern/Eigen3/Eigen/QR [deleted file]
extern/Eigen3/Eigen/QtAlignedMalloc [deleted file]
extern/Eigen3/Eigen/Sparse [deleted file]
extern/Eigen3/Eigen/src/Cholesky/LDLT.h [deleted file]
extern/Eigen3/Eigen/src/Cholesky/LLT.h [deleted file]
extern/Eigen3/Eigen/src/Core/Array.h [deleted file]
extern/Eigen3/Eigen/src/Core/ArrayBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/ArrayWrapper.h [deleted file]
extern/Eigen3/Eigen/src/Core/Assign.h [deleted file]
extern/Eigen3/Eigen/src/Core/BandMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/Block.h [deleted file]
extern/Eigen3/Eigen/src/Core/CwiseBinaryOp.h [deleted file]
extern/Eigen3/Eigen/src/Core/CwiseUnaryOp.h [deleted file]
extern/Eigen3/Eigen/src/Core/CwiseUnaryView.h [deleted file]
extern/Eigen3/Eigen/src/Core/DenseBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/DenseCoeffsBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/DenseStorage.h [deleted file]
extern/Eigen3/Eigen/src/Core/Diagonal.h [deleted file]
extern/Eigen3/Eigen/src/Core/DiagonalMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/DiagonalProduct.h [deleted file]
extern/Eigen3/Eigen/src/Core/Dot.h [deleted file]
extern/Eigen3/Eigen/src/Core/EigenBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/ForceAlignedAccess.h [deleted file]
extern/Eigen3/Eigen/src/Core/Functors.h [deleted file]
extern/Eigen3/Eigen/src/Core/Fuzzy.h [deleted file]
extern/Eigen3/Eigen/src/Core/GenericPacketMath.h [deleted file]
extern/Eigen3/Eigen/src/Core/GlobalFunctions.h [deleted file]
extern/Eigen3/Eigen/src/Core/Map.h [deleted file]
extern/Eigen3/Eigen/src/Core/MapBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/MathFunctions.h [deleted file]
extern/Eigen3/Eigen/src/Core/Matrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/MatrixBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/NoAlias.h [deleted file]
extern/Eigen3/Eigen/src/Core/NumTraits.h [deleted file]
extern/Eigen3/Eigen/src/Core/PermutationMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/PlainObjectBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/Product.h [deleted file]
extern/Eigen3/Eigen/src/Core/ProductBase.h [deleted file]
extern/Eigen3/Eigen/src/Core/Redux.h [deleted file]
extern/Eigen3/Eigen/src/Core/Replicate.h [deleted file]
extern/Eigen3/Eigen/src/Core/ReturnByValue.h [deleted file]
extern/Eigen3/Eigen/src/Core/Reverse.h [deleted file]
extern/Eigen3/Eigen/src/Core/SelfAdjointView.h [deleted file]
extern/Eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h [deleted file]
extern/Eigen3/Eigen/src/Core/SolveTriangular.h [deleted file]
extern/Eigen3/Eigen/src/Core/StableNorm.h [deleted file]
extern/Eigen3/Eigen/src/Core/Stride.h [deleted file]
extern/Eigen3/Eigen/src/Core/Transpose.h [deleted file]
extern/Eigen3/Eigen/src/Core/Transpositions.h [deleted file]
extern/Eigen3/Eigen/src/Core/TriangularMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/VectorBlock.h [deleted file]
extern/Eigen3/Eigen/src/Core/VectorwiseOp.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/AltiVec/Complex.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/Default/Settings.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/NEON/Complex.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/NEON/PacketMath.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/SSE/Complex.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h [deleted file]
extern/Eigen3/Eigen/src/Core/arch/SSE/PacketMath.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/CoeffBasedProduct.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/GeneralMatrixVector.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/Parallelizer.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/SelfadjointProduct.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/TriangularMatrixVector.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Core/products/TriangularSolverVector.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/BlasUtil.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/Constants.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/DisableStupidWarnings.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/ForwardDeclarations.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/Macros.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/Memory.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/Meta.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h [deleted file]
extern/Eigen3/Eigen/src/Core/util/XprHelper.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Block.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/CwiseOperators.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Geometry/All.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/LU.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Lazy.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Macros.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/MathFunctions.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Memory.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/Meta.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/QR.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/TriangularSolver.h [deleted file]
extern/Eigen3/Eigen/src/Eigen2Support/VectorBlock.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/ComplexSchur.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/EigenSolver.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/RealSchur.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h [deleted file]
extern/Eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/AlignedBox.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/AngleAxis.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Homogeneous.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Hyperplane.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/OrthoMethods.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/ParametrizedLine.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Quaternion.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Rotation2D.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/RotationBase.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Scaling.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Transform.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Translation.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/Umeyama.h [deleted file]
extern/Eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h [deleted file]
extern/Eigen3/Eigen/src/Householder/BlockHouseholder.h [deleted file]
extern/Eigen3/Eigen/src/Householder/Householder.h [deleted file]
extern/Eigen3/Eigen/src/Householder/HouseholderSequence.h [deleted file]
extern/Eigen3/Eigen/src/Jacobi/Jacobi.h [deleted file]
extern/Eigen3/Eigen/src/LU/FullPivLU.h [deleted file]
extern/Eigen3/Eigen/src/LU/Inverse.h [deleted file]
extern/Eigen3/Eigen/src/LU/PartialPivLU.h [deleted file]
extern/Eigen3/Eigen/src/LU/arch/Inverse_SSE.h [deleted file]
extern/Eigen3/Eigen/src/QR/ColPivHouseholderQR.h [deleted file]
extern/Eigen3/Eigen/src/QR/FullPivHouseholderQR.h [deleted file]
extern/Eigen3/Eigen/src/QR/HouseholderQR.h [deleted file]
extern/Eigen3/Eigen/src/SVD/JacobiSVD.h [deleted file]
extern/Eigen3/Eigen/src/SVD/UpperBidiagonalization.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseCwiseBinaryOp.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseCwiseUnaryOp.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseDenseProduct.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseDiagonalProduct.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseMatrix.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseProduct.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseRedux.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseSelfAdjointView.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseSparseProduct.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseTranspose.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseTriangularView.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseUtil.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/SparseView.h [deleted file]
extern/Eigen3/Eigen/src/Sparse/TriangularSolver.h [deleted file]
extern/Eigen3/Eigen/src/StlSupport/StdDeque.h [deleted file]
extern/Eigen3/Eigen/src/StlSupport/StdList.h [deleted file]
extern/Eigen3/Eigen/src/StlSupport/details.h [deleted file]
extern/Eigen3/Eigen/src/misc/Image.h [deleted file]
extern/Eigen3/Eigen/src/misc/Kernel.h [deleted file]
extern/Eigen3/Eigen/src/misc/Solve.h [deleted file]
extern/Eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h [deleted file]
extern/Eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h [deleted file]
extern/Eigen3/Eigen/src/plugins/BlockMethods.h [deleted file]
extern/Eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h [deleted file]
extern/Eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h [deleted file]
extern/Eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h [deleted file]
extern/Eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h [deleted file]
extern/SConscript
extern/colamd/CMakeLists.txt [deleted file]
extern/colamd/Doc/ChangeLog [deleted file]
extern/colamd/Doc/lesser.txt [deleted file]
extern/colamd/Include/UFconfig.h [deleted file]
extern/colamd/Include/colamd.h [deleted file]
extern/colamd/README.txt [deleted file]
extern/colamd/SConscript [deleted file]
extern/colamd/Source/colamd.c [deleted file]
extern/colamd/Source/colamd_global.c [deleted file]
intern/CMakeLists.txt
intern/cycles/CMakeLists.txt [new file with mode: 0644]
intern/cycles/app/CMakeLists.txt [new file with mode: 0644]
intern/cycles/app/cycles_server.cpp [new file with mode: 0644]
intern/cycles/app/cycles_test.cpp [new file with mode: 0644]
intern/cycles/app/cycles_xml.cpp [new file with mode: 0644]
intern/cycles/app/cycles_xml.h [new file with mode: 0644]
intern/cycles/blender/CMakeLists.txt [new file with mode: 0644]
intern/cycles/blender/addon/__init__.py [new file with mode: 0644]
intern/cycles/blender/addon/engine.py [new file with mode: 0644]
intern/cycles/blender/addon/enums.py [new file with mode: 0644]
intern/cycles/blender/addon/presets.py [new file with mode: 0644]
intern/cycles/blender/addon/properties.py [new file with mode: 0644]
intern/cycles/blender/addon/ui.py [new file with mode: 0644]
intern/cycles/blender/addon/xml.py [new file with mode: 0644]
intern/cycles/blender/blender_camera.cpp [new file with mode: 0644]
intern/cycles/blender/blender_mesh.cpp [new file with mode: 0644]
intern/cycles/blender/blender_object.cpp [new file with mode: 0644]
intern/cycles/blender/blender_python.cpp [new file with mode: 0644]
intern/cycles/blender/blender_session.cpp [new file with mode: 0644]
intern/cycles/blender/blender_session.h [new file with mode: 0644]
intern/cycles/blender/blender_shader.cpp [new file with mode: 0644]
intern/cycles/blender/blender_sync.cpp [new file with mode: 0644]
intern/cycles/blender/blender_sync.h [new file with mode: 0644]
intern/cycles/blender/blender_util.h [new file with mode: 0644]
intern/cycles/bvh/CMakeLists.txt [new file with mode: 0644]
intern/cycles/bvh/bvh.cpp [new file with mode: 0644]
intern/cycles/bvh/bvh.h [new file with mode: 0644]
intern/cycles/bvh/bvh_build.cpp [new file with mode: 0644]
intern/cycles/bvh/bvh_build.h [new file with mode: 0644]
intern/cycles/bvh/bvh_node.cpp [new file with mode: 0644]
intern/cycles/bvh/bvh_node.h [new file with mode: 0644]
intern/cycles/bvh/bvh_params.h [new file with mode: 0644]
intern/cycles/bvh/bvh_sort.cpp [new file with mode: 0644]
intern/cycles/bvh/bvh_sort.h [new file with mode: 0644]
intern/cycles/cmake/external_libs.cmake [new file with mode: 0644]
intern/cycles/device/CMakeLists.txt [new file with mode: 0644]
intern/cycles/device/device.cpp [new file with mode: 0644]
intern/cycles/device/device.h [new file with mode: 0644]
intern/cycles/device/device_cpu.cpp [new file with mode: 0644]
intern/cycles/device/device_cuda.cpp [new file with mode: 0644]
intern/cycles/device/device_intern.h [new file with mode: 0644]
intern/cycles/device/device_memory.h [new file with mode: 0644]
intern/cycles/device/device_multi.cpp [new file with mode: 0644]
intern/cycles/device/device_network.cpp [new file with mode: 0644]
intern/cycles/device/device_network.h [new file with mode: 0644]
intern/cycles/device/device_opencl.cpp [new file with mode: 0644]
intern/cycles/doc/CMakeLists.txt [new file with mode: 0644]
intern/cycles/doc/license/Apache_2.0.txt [new file with mode: 0644]
intern/cycles/doc/license/Blender.txt [new file with mode: 0644]
intern/cycles/doc/license/Boost.txt [new file with mode: 0644]
intern/cycles/doc/license/CMakeLists.txt [new file with mode: 0644]
intern/cycles/doc/license/GPL.txt [new file with mode: 0644]
intern/cycles/doc/license/ILM.txt [new file with mode: 0644]
intern/cycles/doc/license/NVidia.txt [new file with mode: 0644]
intern/cycles/doc/license/OSL.txt [new file with mode: 0644]
intern/cycles/doc/license/Sobol.txt [new file with mode: 0644]
intern/cycles/doc/license/readme.txt [new file with mode: 0644]
intern/cycles/kernel/CMakeLists.txt [new file with mode: 0644]
intern/cycles/kernel/kernel.cl [new file with mode: 0644]
intern/cycles/kernel/kernel.cpp [new file with mode: 0644]
intern/cycles/kernel/kernel.cu [new file with mode: 0644]
intern/cycles/kernel/kernel.h [new file with mode: 0644]
intern/cycles/kernel/kernel_bvh.h [new file with mode: 0644]
intern/cycles/kernel/kernel_camera.h [new file with mode: 0644]
intern/cycles/kernel/kernel_compat_cpu.h [new file with mode: 0644]
intern/cycles/kernel/kernel_compat_cuda.h [new file with mode: 0644]
intern/cycles/kernel/kernel_compat_opencl.h [new file with mode: 0644]
intern/cycles/kernel/kernel_differential.h [new file with mode: 0644]
intern/cycles/kernel/kernel_displace.h [new file with mode: 0644]
intern/cycles/kernel/kernel_emission.h [new file with mode: 0644]
intern/cycles/kernel/kernel_film.h [new file with mode: 0644]
intern/cycles/kernel/kernel_globals.h [new file with mode: 0644]
intern/cycles/kernel/kernel_light.h [new file with mode: 0644]
intern/cycles/kernel/kernel_math.h [new file with mode: 0644]
intern/cycles/kernel/kernel_mbvh.h [new file with mode: 0644]
intern/cycles/kernel/kernel_montecarlo.h [new file with mode: 0644]
intern/cycles/kernel/kernel_object.h [new file with mode: 0644]
intern/cycles/kernel/kernel_path.h [new file with mode: 0644]
intern/cycles/kernel/kernel_qbvh.h [new file with mode: 0644]
intern/cycles/kernel/kernel_random.h [new file with mode: 0644]
intern/cycles/kernel/kernel_shader.h [new file with mode: 0644]
intern/cycles/kernel/kernel_textures.h [new file with mode: 0644]
intern/cycles/kernel/kernel_triangle.h [new file with mode: 0644]
intern/cycles/kernel/kernel_types.h [new file with mode: 0644]
intern/cycles/kernel/osl/CMakeLists.txt [new file with mode: 0644]
intern/cycles/kernel/osl/background.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_ashikhmin_velvet.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_diffuse.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_microfacet.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_reflection.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_refraction.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_transparent.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_ward.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bsdf_westin.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/bssrdf.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/debug.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/emissive.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/CMakeLists.txt [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_add_closure.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_attribute.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_background.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_blend_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_blend_weight.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_bump.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_clouds_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_color.h [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_convert_from_color.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_convert_from_float.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_convert_from_normal.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_convert_from_point.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_convert_from_vector.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_diffuse_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_distorted_noise_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_emission.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_environment_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_fresnel.h [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_fresnel.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_geometry.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_glass_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_glossy_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_holdout.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_image_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_light_path.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_magic_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_mapping.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_marble_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_math.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_mix.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_mix_closure.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_musgrave_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_noise_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_output_displacement.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_output_surface.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_output_volume.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_sky_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_stucci_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_texture.h [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_texture_coordinate.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_translucent_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_transparent_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_value.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_vector_math.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_velvet_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_voronoi_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_ward_bsdf.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/node_wood_texture.osl [new file with mode: 0644]
intern/cycles/kernel/osl/nodes/stdosl.h [new file with mode: 0644]
intern/cycles/kernel/osl/osl_closures.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/osl_closures.h [new file with mode: 0644]
intern/cycles/kernel/osl/osl_globals.h [new file with mode: 0644]
intern/cycles/kernel/osl/osl_services.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/osl_services.h [new file with mode: 0644]
intern/cycles/kernel/osl/osl_shader.cpp [new file with mode: 0644]
intern/cycles/kernel/osl/osl_shader.h [new file with mode: 0644]
intern/cycles/kernel/osl/vol_subsurface.cpp [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_diffuse.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_microfacet.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_reflection.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_refraction.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_transparent.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_ward.h [new file with mode: 0644]
intern/cycles/kernel/svm/bsdf_westin.h [new file with mode: 0644]
intern/cycles/kernel/svm/emissive.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_attribute.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_blend.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_bsdf.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_closure.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_clouds.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_convert.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_displace.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_distorted_noise.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_fresnel.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_geometry.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_image.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_light_path.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_magic.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_mapping.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_marble.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_math.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_mix.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_musgrave.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_noise.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_noisetex.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_sky.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_stucci.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_tex_coord.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_texture.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_types.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_value.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_voronoi.h [new file with mode: 0644]
intern/cycles/kernel/svm/svm_wood.h [new file with mode: 0644]
intern/cycles/kernel/svm/volume.h [new file with mode: 0644]
intern/cycles/render/CMakeLists.txt [new file with mode: 0644]
intern/cycles/render/attribute.cpp [new file with mode: 0644]
intern/cycles/render/attribute.h [new file with mode: 0644]
intern/cycles/render/background.cpp [new file with mode: 0644]
intern/cycles/render/background.h [new file with mode: 0644]
intern/cycles/render/buffers.cpp [new file with mode: 0644]
intern/cycles/render/buffers.h [new file with mode: 0644]
intern/cycles/render/camera.cpp [new file with mode: 0644]
intern/cycles/render/camera.h [new file with mode: 0644]
intern/cycles/render/film.cpp [new file with mode: 0644]
intern/cycles/render/film.h [new file with mode: 0644]
intern/cycles/render/filter.cpp [new file with mode: 0644]
intern/cycles/render/filter.h [new file with mode: 0644]
intern/cycles/render/graph.cpp [new file with mode: 0644]
intern/cycles/render/graph.h [new file with mode: 0644]
intern/cycles/render/image.cpp [new file with mode: 0644]
intern/cycles/render/image.h [new file with mode: 0644]
intern/cycles/render/integrator.cpp [new file with mode: 0644]
intern/cycles/render/integrator.h [new file with mode: 0644]
intern/cycles/render/light.cpp [new file with mode: 0644]
intern/cycles/render/light.h [new file with mode: 0644]
intern/cycles/render/mesh.cpp [new file with mode: 0644]
intern/cycles/render/mesh.h [new file with mode: 0644]
intern/cycles/render/mesh_displace.cpp [new file with mode: 0644]
intern/cycles/render/nodes.cpp [new file with mode: 0644]
intern/cycles/render/nodes.h [new file with mode: 0644]
intern/cycles/render/object.cpp [new file with mode: 0644]
intern/cycles/render/object.h [new file with mode: 0644]
intern/cycles/render/osl.cpp [new file with mode: 0644]
intern/cycles/render/osl.h [new file with mode: 0644]
intern/cycles/render/scene.cpp [new file with mode: 0644]
intern/cycles/render/scene.h [new file with mode: 0644]
intern/cycles/render/session.cpp [new file with mode: 0644]
intern/cycles/render/session.h [new file with mode: 0644]
intern/cycles/render/shader.cpp [new file with mode: 0644]
intern/cycles/render/shader.h [new file with mode: 0644]
intern/cycles/render/sobol.cpp [new file with mode: 0644]
intern/cycles/render/sobol.h [new file with mode: 0644]
intern/cycles/render/svm.cpp [new file with mode: 0644]
intern/cycles/render/svm.h [new file with mode: 0644]
intern/cycles/render/tile.cpp [new file with mode: 0644]
intern/cycles/render/tile.h [new file with mode: 0644]
intern/cycles/subd/CMakeLists.txt [new file with mode: 0644]
intern/cycles/subd/subd_build.cpp [new file with mode: 0644]
intern/cycles/subd/subd_build.h [new file with mode: 0644]
intern/cycles/subd/subd_dice.cpp [new file with mode: 0644]
intern/cycles/subd/subd_dice.h [new file with mode: 0644]
intern/cycles/subd/subd_edge.h [new file with mode: 0644]
intern/cycles/subd/subd_face.h [new file with mode: 0644]
intern/cycles/subd/subd_mesh.cpp [new file with mode: 0644]
intern/cycles/subd/subd_mesh.h [new file with mode: 0644]
intern/cycles/subd/subd_patch.cpp [new file with mode: 0644]
intern/cycles/subd/subd_patch.h [new file with mode: 0644]
intern/cycles/subd/subd_ring.cpp [new file with mode: 0644]
intern/cycles/subd/subd_ring.h [new file with mode: 0644]
intern/cycles/subd/subd_split.cpp [new file with mode: 0644]
intern/cycles/subd/subd_split.h [new file with mode: 0644]
intern/cycles/subd/subd_stencil.cpp [new file with mode: 0644]
intern/cycles/subd/subd_stencil.h [new file with mode: 0644]
intern/cycles/subd/subd_vert.h [new file with mode: 0644]
intern/cycles/util/CMakeLists.txt [new file with mode: 0644]
intern/cycles/util/util_algorithm.h [new file with mode: 0644]
intern/cycles/util/util_args.h [new file with mode: 0644]
intern/cycles/util/util_boundbox.h [new file with mode: 0644]
intern/cycles/util/util_cache.cpp [new file with mode: 0644]
intern/cycles/util/util_cache.h [new file with mode: 0644]
intern/cycles/util/util_color.h [new file with mode: 0644]
intern/cycles/util/util_cuda.cpp [new file with mode: 0644]
intern/cycles/util/util_cuda.h [new file with mode: 0644]
intern/cycles/util/util_debug.h [new file with mode: 0644]
intern/cycles/util/util_dynlib.cpp [new file with mode: 0644]
intern/cycles/util/util_dynlib.h [new file with mode: 0644]
intern/cycles/util/util_foreach.h [new file with mode: 0644]
intern/cycles/util/util_function.h [new file with mode: 0644]
intern/cycles/util/util_hash.h [new file with mode: 0644]
intern/cycles/util/util_image.h [new file with mode: 0644]
intern/cycles/util/util_list.h [new file with mode: 0644]
intern/cycles/util/util_map.h [new file with mode: 0644]
intern/cycles/util/util_math.h [new file with mode: 0644]
intern/cycles/util/util_md5.cpp [new file with mode: 0644]
intern/cycles/util/util_md5.h [new file with mode: 0644]
intern/cycles/util/util_memarena.cpp [new file with mode: 0644]
intern/cycles/util/util_memarena.h [new file with mode: 0644]
intern/cycles/util/util_opencl.c [new file with mode: 0755]
intern/cycles/util/util_opencl.h [new file with mode: 0755]
intern/cycles/util/util_opengl.h [new file with mode: 0644]
intern/cycles/util/util_param.h [new file with mode: 0644]
intern/cycles/util/util_path.cpp [new file with mode: 0644]
intern/cycles/util/util_path.h [new file with mode: 0644]
intern/cycles/util/util_progress.h [new file with mode: 0644]
intern/cycles/util/util_set.h [new file with mode: 0644]
intern/cycles/util/util_string.cpp [new file with mode: 0644]
intern/cycles/util/util_string.h [new file with mode: 0644]
intern/cycles/util/util_system.cpp [new file with mode: 0644]
intern/cycles/util/util_system.h [new file with mode: 0644]
intern/cycles/util/util_thread.h [new file with mode: 0644]
intern/cycles/util/util_time.cpp [new file with mode: 0644]
intern/cycles/util/util_time.h [new file with mode: 0644]
intern/cycles/util/util_transform.cpp [new file with mode: 0644]
intern/cycles/util/util_transform.h [new file with mode: 0644]
intern/cycles/util/util_types.h [new file with mode: 0644]
intern/cycles/util/util_vector.h [new file with mode: 0644]
intern/cycles/util/util_view.cpp [new file with mode: 0644]
intern/cycles/util/util_view.h [new file with mode: 0644]
intern/cycles/util/util_xml.h [new file with mode: 0644]
intern/ffmpeg/ffmpeg_compat.h
intern/ghost/GHOST_ISystem.h
intern/ghost/intern/GHOST_System.cpp
intern/ghost/intern/GHOST_System.h
intern/ghost/intern/GHOST_SystemCocoa.mm
intern/itasc/CMakeLists.txt
intern/itasc/ConstraintSet.cpp
intern/itasc/ControlledObject.cpp
intern/itasc/CopyPose.cpp
intern/itasc/SConscript
intern/itasc/Scene.cpp
intern/itasc/WDLSSolver.cpp
intern/itasc/WSDLSSolver.cpp
intern/itasc/kdl/inertia.cpp
intern/itasc/kdl/inertia.hpp
intern/itasc/kdl/utilities/svd_eigen_HH.hpp
intern/memutil/MEM_CacheLimiter.h
intern/memutil/MEM_CacheLimiterC-Api.h
intern/memutil/intern/MEM_CacheLimiterC-Api.cpp
intern/moto/CMakeLists.txt
intern/opennl/CMakeLists.txt
intern/opennl/SConscript
intern/opennl/superlu/colamd.c [new file with mode: 0644]
intern/opennl/superlu/colamd.h [new file with mode: 0644]
intern/opennl/superlu/get_perm_c.c
release/bin/blender-softwaregl [deleted file]
release/scripts/presets/cycles/integrator/direct_light.py [new file with mode: 0644]
release/scripts/presets/cycles/integrator/full_global_illumination.py [new file with mode: 0644]
release/scripts/presets/cycles/integrator/limited_global_illumination.py [new file with mode: 0644]
release/scripts/startup/bl_operators/wm.py
release/scripts/startup/bl_ui/properties_data_camera.py
release/scripts/startup/bl_ui/properties_particle.py
release/scripts/startup/bl_ui/space_node.py
release/scripts/startup/bl_ui/space_view3d.py
source/blender/blenfont/intern/blf_lang.c
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/BKE_depsgraph.h
source/blender/blenkernel/BKE_fcurve.h
source/blender/blenkernel/BKE_image.h
source/blender/blenkernel/BKE_library.h
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/BKE_scene.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/action.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/armature.c
source/blender/blenkernel/intern/blender.c
source/blender/blenkernel/intern/brush.c
source/blender/blenkernel/intern/cdderivedmesh.c
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/fcurve.c
source/blender/blenkernel/intern/image.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/mball.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/mesh_validate.c
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/seqcache.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/speaker.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/texture.c
source/blender/blenkernel/intern/world.c
source/blender/blenkernel/intern/writeffmpeg.c
source/blender/blenlib/BLI_bpath.h
source/blender/blenlib/BLI_math_vector.h
source/blender/blenlib/intern/bpath.c
source/blender/blenlib/intern/math_vector_inline.c
source/blender/blenlib/intern/string_utf8.c
source/blender/blenloader/intern/readfile.c
source/blender/blenloader/intern/writefile.c
source/blender/editors/animation/keyingsets.c
source/blender/editors/datafiles/startup.blend.c
source/blender/editors/include/ED_node.h
source/blender/editors/include/ED_render.h
source/blender/editors/include/ED_uvedit.h
source/blender/editors/include/UI_interface.h
source/blender/editors/interface/CMakeLists.txt
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_icons.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_node.c [new file with mode: 0644]
source/blender/editors/interface/interface_panel.c
source/blender/editors/interface/interface_style.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/mesh/mesh_data.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_edit.c
source/blender/editors/render/render_internal.c
source/blender/editors/render/render_preview.c
source/blender/editors/render/render_shading.c
source/blender/editors/render/render_update.c
source/blender/editors/screen/area.c
source/blender/editors/sculpt_paint/paint_image.c
source/blender/editors/space_action/action_edit.c
source/blender/editors/space_buttons/CMakeLists.txt
source/blender/editors/space_buttons/buttons_context.c
source/blender/editors/space_buttons/buttons_intern.h
source/blender/editors/space_buttons/buttons_texture.c [new file with mode: 0644]
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_node/CMakeLists.txt
source/blender/editors/space_node/SConscript
source/blender/editors/space_node/drawnode.c
source/blender/editors/space_node/node_draw.c
source/blender/editors/space_node/node_edit.c
source/blender/editors/space_node/node_header.c
source/blender/editors/space_node/node_intern.h
source/blender/editors/space_node/node_layout.c [new file with mode: 0644]
source/blender/editors/space_node/node_ops.c
source/blender/editors/space_node/node_select.c
source/blender/editors/space_node/space_node.c
source/blender/editors/space_outliner/outliner_draw.c
source/blender/editors/space_outliner/outliner_tools.c
source/blender/editors/space_text/text_ops.c
source/blender/editors/space_view3d/drawmesh.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/space_view3d.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_ops.c
source/blender/editors/uvedit/uvedit_ops.c
source/blender/editors/uvedit/uvedit_unwrap_ops.c
source/blender/gpu/intern/gpu_draw.c
source/blender/gpu/intern/gpu_material.c
source/blender/gpu/intern/gpu_shader_material.glsl
source/blender/gpu/intern/gpu_shader_material.glsl.c
source/blender/ikplugin/CMakeLists.txt
source/blender/ikplugin/SConscript
source/blender/imbuf/CMakeLists.txt
source/blender/imbuf/IMB_imbuf.h
source/blender/imbuf/IMB_moviecache.h [deleted file]
source/blender/imbuf/intern/IMB_filetype.h
source/blender/imbuf/intern/allocimbuf.c
source/blender/imbuf/intern/filetype.c
source/blender/imbuf/intern/indexer.c
source/blender/imbuf/intern/module.c
source/blender/imbuf/intern/moviecache.c [deleted file]
source/blender/imbuf/intern/openimageio.cpp [new file with mode: 0644]
source/blender/imbuf/intern/readimage.c
source/blender/imbuf/intern/util.c
source/blender/imbuf/intern/writeimage.c
source/blender/makesdna/DNA_ID.h
source/blender/makesdna/DNA_lamp_types.h
source/blender/makesdna/DNA_node_types.h
source/blender/makesdna/DNA_object_types.h
source/blender/makesdna/DNA_space_types.h
source/blender/makesdna/DNA_view3d_types.h
source/blender/makesdna/DNA_world_types.h
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_fcurve.c
source/blender/makesrna/intern/rna_lamp.c
source/blender/makesrna/intern/rna_main_api.c
source/blender/makesrna/intern/rna_material.c
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_nodetree_types.h
source/blender/makesrna/intern/rna_object.c
source/blender/makesrna/intern/rna_object_api.c
source/blender/makesrna/intern/rna_render.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_scene_api.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_texture.c
source/blender/makesrna/intern/rna_ui_api.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/makesrna/intern/rna_world.c
source/blender/nodes/CMakeLists.txt
source/blender/nodes/NOD_shader.h
source/blender/nodes/intern/node_common.c
source/blender/nodes/intern/node_socket.c
source/blender/nodes/shader/node_shader_tree.c
source/blender/nodes/shader/node_shader_util.c
source/blender/nodes/shader/node_shader_util.h
source/blender/nodes/shader/nodes/node_shader_add_shader.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_attribute.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_background.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_blend_weight.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_camera.c
source/blender/nodes/shader/nodes/node_shader_common.c
source/blender/nodes/shader/nodes/node_shader_curves.c
source/blender/nodes/shader/nodes/node_shader_dynamic.c
source/blender/nodes/shader/nodes/node_shader_emission.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_fresnel.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_geom.c
source/blender/nodes/shader/nodes/node_shader_geometry.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_holdout.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_hueSatVal.c
source/blender/nodes/shader/nodes/node_shader_invert.c
source/blender/nodes/shader/nodes/node_shader_light_path.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_mapping.c
source/blender/nodes/shader/nodes/node_shader_material.c
source/blender/nodes/shader/nodes/node_shader_math.c
source/blender/nodes/shader/nodes/node_shader_mixRgb.c
source/blender/nodes/shader/nodes/node_shader_mix_shader.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_noise.h [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_normal.c
source/blender/nodes/shader/nodes/node_shader_output.c
source/blender/nodes/shader/nodes/node_shader_output_lamp.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_output_material.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_output_texture.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_output_world.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_rgb.c
source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c
source/blender/nodes/shader/nodes/node_shader_squeeze.c
source/blender/nodes/shader/nodes/node_shader_tex_blend.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_clouds.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_coord.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_distnoise.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_environment.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_image.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_magic.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_marble.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_noise.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_sky.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_stucci.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_tex_wood.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_texture.c
source/blender/nodes/shader/nodes/node_shader_valToRgb.c
source/blender/nodes/shader/nodes/node_shader_value.c
source/blender/nodes/shader/nodes/node_shader_vectMath.c
source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c [new file with mode: 0644]
source/blender/nodes/shader/nodes/node_shader_volume_transparent.c [new file with mode: 0644]
source/blender/python/intern/CMakeLists.txt
source/blender/python/intern/bpy_interface.c
source/blender/render/extern/include/RE_engine.h
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/external_engine.c
source/blender/render/intern/source/pipeline.c
source/blender/windowmanager/intern/wm_draw.c
source/blender/windowmanager/intern/wm_event_system.c
source/blenderplayer/CMakeLists.txt
source/blenderplayer/bad_level_call_stubs/stubs.c
source/creator/CMakeLists.txt
source/gameengine/Converter/BL_ActionActuator.cpp
source/gameengine/Converter/BL_SkinDeformer.cpp
source/gameengine/Converter/CMakeLists.txt
source/gameengine/Converter/SConscript
source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
source/gameengine/Ketsji/BL_Action.cpp
source/gameengine/Ketsji/BL_BlenderShader.cpp
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
source/tests/check_deprecated.py

index 7631b24..9b78ff6 100644 (file)
@@ -61,13 +61,6 @@ set(CMAKE_BUILD_TYPE_INIT "Release")
 # quiet output for Makefiles, 'make -s' helps too
 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
 
-# global compile definitions since add_definitions() adds for all.
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG           DEBUG _DEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE         NDEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL      NDEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO  DEBUG _DEBUG)
-
-
 #-----------------------------------------------------------------------------
 # Set policy
 
@@ -105,6 +98,7 @@ enable_testing()
 
 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
+set(INCLUDE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/include CACHE INTERNAL "" FORCE )
 
 #-----------------------------------------------------------------------------
 # Set default config options
@@ -155,7 +149,7 @@ else()
 endif()
 
 if(UNIX AND NOT APPLE)
-       option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)"   ON)
+       option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support)"     ON)
        option(WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON)
 else()
        # not an option for other OS's
@@ -208,6 +202,15 @@ if(UNIX AND NOT APPLE)
 endif()
 option(WITH_PYTHON_INSTALL       "Copy system python into the blender install folder" ON)
 
+# Cycles
+option(WITH_CYCLES                     "Enable Cycles Render Engine" ON)
+OPTION(WITH_CYCLES_OSL         "Build with Open Shading Language support" OFF)
+OPTION(WITH_CYCLES_CUDA                "Build with CUDA binaries" OFF)
+OPTION(WITH_CYCLES_BLENDER     "Build Blender Python extension" ON)
+OPTION(WITH_CYCLES_PARTIO      "Build with Partio point cloud support (unfinished)" OFF)
+OPTION(WITH_CYCLES_NETWORK     "Build with network rendering support (unfinished)" OFF)
+OPTION(WITH_CYCLES_TEST                "Build cycles test application" OFF)
+
 # disable for now, but plan to support on all platforms eventually
 option(WITH_MEM_JEMALLOC   "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
 mark_as_advanced(WITH_MEM_JEMALLOC)
@@ -279,6 +282,16 @@ if(WITH_PYTHON_MODULE)
        set(WITH_HEADLESS ON)
 endif()
 
+# auto enable openimageio and boost for cycles
+if(WITH_CYCLES)
+       set(WITH_OPENIMAGEIO ON)
+       set(WITH_BOOST ON)
+endif()
+
+if(WITH_OPENIMAGEIO)
+       set(WITH_BOOST ON)
+endif()
+
 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
 
 # don't store paths to libs for portable distrobution
@@ -483,6 +496,47 @@ if(UNIX AND NOT APPLE)
                endif()
        endif()
 
+       if(WITH_BOOST)
+               if(CYCLES_BOOST)
+                       set(BOOST ${CYCLES_BOOST} CACHE PATH "Boost Directory")
+                       unset(CYCLES_BOOST CACHE)
+               else()
+                       set(BOOST "/usr" CACHE PATH "Boost Directory")
+               endif()
+
+               if(NOT BOOST_CUSTOM)
+                       set(BOOST_ROOT ${BOOST})
+                       set(Boost_USE_MULTITHREADED ON)
+                       find_package(Boost 1.34 REQUIRED COMPONENTS filesystem regex system thread)
+               endif()
+
+               set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
+               set(BOOST_LIBRARIES ${Boost_LIBRARIES})
+               set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
+               set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+       endif()
+
+       if(WITH_OPENIMAGEIO)
+
+               # temp, update
+               if(CYCLES_OIIO)
+                       set(OPENIMAGEIO ${CYCLES_OIIO})
+                       unset(CYCLES_OIIO CACHE)
+               endif()
+
+               set(OPENIMAGEIO_ROOT_DIR ${OPENIMAGEIO})
+               find_package(OpenImageIO REQUIRED)
+
+               set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
+               set(OPENIMAGEIO_LIBPATH)  # TODO, remove and reference the absolute path everywhere
+               set(OPENIMAGEIO_DEFINITIONS)
+
+               if(NOT OPENIMAGEIO_FOUND)
+                       set(WITH_OPENIMAGEIO OFF)
+               endif()
+
+       endif()
+
        # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
        set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
 
@@ -510,8 +564,8 @@ if(UNIX AND NOT APPLE)
 
        set(PLATFORM_LINKFLAGS "-pthread")
 
-       # lfs on glibc, all compilers should use
-       add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
+       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE")
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE")
 
        # GNU Compiler
        if(CMAKE_COMPILER_IS_GNUCC)
@@ -619,21 +673,21 @@ elseif(WIN32)
                set(CMAKE_C_FLAGS   "/nologo /J /W0 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013 /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
 
                if(CMAKE_CL_64)
-                       set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
+                       set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
                else()
-                       set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
+                       set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
                endif()
-               set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
-               set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
-               set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
                if(CMAKE_CL_64)
-                       set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
+                       set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
                else()
-                       set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
+                       set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
                endif()
-               set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
-               set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
-               set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
+               set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
 
                if(WITH_INTERNATIONAL)
                        set(GETTEXT ${LIBDIR}/gettext)
@@ -769,6 +823,33 @@ elseif(WIN32)
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
                endif()
 
+               if(WITH_BOOST)
+                       set(BOOST ${LIBDIR}/boost)
+                       set(BOOST_INCLUDE_DIR ${BOOST}/include)
+                       if(CMAKE_CL_64)
+                               set(BOOST_POSTFIX "vc90-mt-s-1_45.lib")
+                               set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_45.lib")
+                       else()
+                               set(BOOST_POSTFIX "vc90-mt-s-1_46_1.lib")
+                               set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_46_1.lib")
+                       endif()
+                       set(BOOST_LIBRARIES
+                               optimized libboost_date_time-${BOOST_POSTFIX} libboost_filesystem-${BOOST_POSTFIX}
+                               libboost_regex-${BOOST_POSTFIX} libboost_system-${BOOST_POSTFIX} libboost_thread-${BOOST_POSTFIX}
+                               debug libboost_date_time-${BOOST_DEBUG_POSTFIX} libboost_filesystem-${BOOST_DEBUG_POSTFIX}
+                               libboost_regex-${BOOST_DEBUG_POSTFIX} libboost_system-${BOOST_DEBUG_POSTFIX} libboost_thread-${BOOST_DEBUG_POSTFIX})
+                       set(BOOST_LIBPATH ${BOOST}/lib)
+                       set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+               endif()
+                       
+               if(WITH_OPENIMAGEIO)
+                       set(OPENIMAGEIO ${LIBDIR}/openimageio)
+                       set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
+                       set(OPENIMAGEIO_LIBRARIES OpenImageIO)
+                       set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
+                       set(OPENIMAGEIO_DEFINITIONS)
+               endif()
+
                set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
 
                # MSVC only, Mingw doesnt need
@@ -791,6 +872,9 @@ elseif(WIN32)
 
                add_definitions(-DFREE_WINDOWS)
 
+               set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
+               set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
+
                if(WITH_INTERNATIONAL)
                        set(GETTEXT ${LIBDIR}/gcc/gettext)
                        set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include)
@@ -879,6 +963,28 @@ elseif(WIN32)
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
                endif()
 
+               if(WITH_BOOST)
+                       set(BOOST ${LIBDIR}/boost)
+                       set(BOOST_INCLUDE_DIR ${BOOST}/include)
+                       set(BOOST_POSTFIX "vc90-mt-s-1_46_1")
+                       set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_46_1")
+                       set(BOOST_LIBRARIES
+                               optimized libboost_date_time-${BOOST_POSTFIX} libboost_filesystem-${BOOST_POSTFIX}
+                               libboost_regex-${BOOST_POSTFIX} libboost_system-${BOOST_POSTFIX} libboost_thread-${BOOST_POSTFIX}
+                               debug libboost_date_time-${BOOST_DEBUG_POSTFIX} libboost_filesystem-${BOOST_DEBUG_POSTFIX}
+                               libboost_regex-${BOOST_DEBUG_POSTFIX} libboost_system-${BOOST_DEBUG_POSTFIX} libboost_thread-${BOOST_DEBUG_POSTFIX})
+                       set(BOOST_LIBPATH ${BOOST}/lib)
+                       set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+               endif()
+                       
+               if(WITH_OPENIMAGEIO)
+                       set(OPENIMAGEIO ${LIBDIR}/openimageio)
+                       set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
+                       set(OPENIMAGEIO_LIBRARIES OpenImageIO)
+                       set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
+                       set(OPENIMAGEIO_DEFINITIONS)
+               endif()
+
                set(PLATFORM_LINKFLAGS "--stack,2097152")
 
        endif()
@@ -1082,6 +1188,22 @@ elseif(APPLE)
                # linker needs "-weak_framework 3DconnexionClient"
        endif()
 
+       if(WITH_BOOST)
+               set(BOOST ${LIBDIR}/boost)
+               set(BOOST_INCLUDE_DIR ${BOOST}/include)
+               set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt)
+               set(BOOST_LIBPATH ${BOOST}/lib)
+               set(BOOST_DEFINITIONS)
+       endif()
+
+       if(WITH_OPENIMAGEIO)
+               set(OPENIMAGEIO ${LIBDIR}/openimageio)
+               set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
+               set(OPENIMAGEIO_LIBRARIES OpenImageIO ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
+               set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
+               set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
+       endif()
+
        set(EXETYPE MACOSX_BUNDLE)
 
        set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
@@ -1221,6 +1343,21 @@ endif()
 #-----------------------------------------------------------------------------
 # Extra compile flags
 
+if((NOT WIN32) AND (NOT MSVC))
+       # used for internal debug checks
+       set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
+       set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
+
+       # assert() checks for this.
+       set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
+       set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -DNDEBUG")
+       set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DNDEBUG")
+
+       set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
+       set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -DNDEBUG")
+       set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DNDEBUG")
+endif()
+
 if(CMAKE_COMPILER_IS_GNUCC)
 
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
@@ -1396,6 +1533,7 @@ if(FIRST_RUN)
        info_cfg_option(WITH_IMAGE_OPENJPEG)
        info_cfg_option(WITH_IMAGE_REDCODE)
        info_cfg_option(WITH_IMAGE_TIFF)
+       info_cfg_option(WITH_OPENIMAGEIO)
 
        info_cfg_text("Audio:")
        info_cfg_option(WITH_OPENAL)
index b06344c..5d1e5fe 100644 (file)
@@ -1,5 +1,6 @@
 # -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*-
-# vim: tabstop=4
+# vim: tabstop=8
+# $Id: GNUmakefile 41122 2011-10-19 21:55:27Z campbellbarton $
 #
 # ##### BEGIN GPL LICENSE BLOCK #####
 #
index 93787cd..0db3236 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-#
+# $Id: SConstruct 41169 2011-10-21 04:23:26Z campbellbarton $
 # ***** BEGIN GPL LICENSE BLOCK *****
 #
 # This program is free software; you can redistribute it and/or
@@ -30,8 +30,6 @@
 # Then read all SConscripts and build
 #
 # TODO: fix /FORCE:MULTIPLE on windows to get proper debug builds.
-# TODO: directory copy functions are far too complicated, see:
-#       http://wiki.blender.org/index.php/User:Ideasman42/SConsNotSimpleInstallingFiles
 
 import platform as pltfrm
 
diff --git a/build_files/cmake/Modules/FindOpenImageIO.cmake b/build_files/cmake/Modules/FindOpenImageIO.cmake
new file mode 100644 (file)
index 0000000..7512b93
--- /dev/null
@@ -0,0 +1,70 @@
+# - Find OpenImageIO library
+# Find the native OpenImageIO includes and library
+# This module defines
+#  OPENIMAGEIO_INCLUDE_DIRS, where to find openimageio.h, Set when
+#                            OPENIMAGEIO_INCLUDE_DIR is found.
+#  OPENIMAGEIO_LIBRARIES, libraries to link against to use OpenImageIO.
+#  OPENIMAGEIO_ROOT_DIR, The base directory to search for OpenImageIO.
+#                        This can also be an environment variable.
+#  OPENIMAGEIO_FOUND, If false, do not try to use OpenImageIO.
+#
+# also defined, but not for general use are
+#  OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library.
+
+#=============================================================================
+# Copyright 2011 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# If OPENIMAGEIO_ROOT_DIR was defined in the environment, use it.
+IF(NOT OPENIMAGEIO_ROOT_DIR AND NOT $ENV{OPENIMAGEIO_ROOT_DIR} STREQUAL "")
+  SET(OPENIMAGEIO_ROOT_DIR $ENV{OPENIMAGEIO_ROOT_DIR})
+ENDIF()
+
+SET(_openimageio_SEARCH_DIRS
+  ${OPENIMAGEIO_ROOT_DIR}
+  /usr/local
+  /sw # Fink
+  /opt/local # DarwinPorts
+  /opt/csw # Blastwave
+)
+
+FIND_PATH(OPENIMAGEIO_INCLUDE_DIR
+  NAMES
+    OpenImageIO/imageio.h
+  HINTS
+    ${_openimageio_SEARCH_DIRS}
+  PATH_SUFFIXES
+    include
+)
+
+FIND_LIBRARY(OPENIMAGEIO_LIBRARY
+  NAMES
+    OpenImageIO
+  HINTS
+    ${_openimageio_SEARCH_DIRS}
+  PATH_SUFFIXES
+    lib64 lib
+  )
+
+# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if 
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageIO DEFAULT_MSG
+    OPENIMAGEIO_LIBRARY OPENIMAGEIO_INCLUDE_DIR)
+
+IF(OPENIMAGEIO_FOUND)
+  SET(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARY})
+  SET(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR})
+ENDIF(OPENIMAGEIO_FOUND)
+
+MARK_AS_ADVANCED(
+  OPENIMAGEIO_INCLUDE_DIR
+  OPENIMAGEIO_LIBRARY
+)
index b1fc88b..f4a6e88 100755 (executable)
@@ -74,7 +74,7 @@ def is_c_header(filename):
 
 def is_c(filename):
     ext = splitext(filename)[1]
-    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc", ".cc", ".inl"))
+    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
 
 
 def is_c_any(filename):
index bf90ef8..58107fe 100644 (file)
@@ -16,7 +16,7 @@ macro(file_suffix
        unset(_file_name_EXT)
 endmacro()
 
-# useful for adding debug suffix to library lists:
+# usefil for adding debug suffix to library lists:
 # /somepath/foo.lib --> /somepath/foo_d.lib
 macro(file_list_suffix
        fp_list_new fp_list fn_suffix
@@ -165,6 +165,12 @@ macro(SETUP_LIBDIRS)
        if(WITH_IMAGE_TIFF)
                link_directories(${TIFF_LIBPATH})
        endif()
+       if(WITH_BOOST)
+               link_directories(${BOOST_LIBPATH})
+       endif()
+       if(WITH_OPENIMAGEIO)
+               link_directories(${OPENIMAGEIO_LIBPATH})
+       endif()
        if(WITH_IMAGE_OPENJPEG AND UNIX AND NOT APPLE)
                link_directories(${OPENJPEG_LIBPATH})
        endif()
@@ -259,6 +265,12 @@ macro(setup_liblinks
        if(WITH_IMAGE_TIFF)
                target_link_libraries(${target} ${TIFF_LIBRARY})
        endif()
+       if(WITH_OPENIMAGEIO)
+               target_link_libraries(${target} ${OPENIMAGEIO_LIBRARIES})
+       endif()
+       if(WITH_BOOST)
+               target_link_libraries(${target} ${BOOST_LIBRARIES})
+       endif()
        if(WITH_IMAGE_OPENEXR)
                if(WIN32 AND NOT UNIX)
                        file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d")
@@ -412,32 +424,6 @@ macro(remove_strict_flags)
 
 endmacro()
 
-# note, we can only append flags on a single file so we need to negate the options.
-# at the moment we cant shut up ffmpeg deprecations, so use this, but will
-# probably add more removals here.
-macro(remove_strict_flags_file
-       filenames)
-
-       foreach(_SOURCE ${ARGV})
-
-               if(CMAKE_COMPILER_IS_GNUCC)
-                       set_source_files_properties(${_SOURCE}
-                               PROPERTIES
-                                       COMPILE_FLAGS "-Wno-deprecated-declarations"
-                       )
-               endif()
-
-               if(MSVC)
-                       # TODO
-               endif()
-
-       endforeach()    
-
-       unset(_SOURCE)
-
-endmacro()
-
-
 macro(ADD_CHECK_C_COMPILER_FLAG
        _CFLAGS
        _CACHE_VAR
@@ -608,3 +594,38 @@ macro(blender_project_hack_post)
        endif()
 
 endmacro()
+
+# pair of macros to allow libraries to be specify files to install, but to
+# only install them at the end so the directories don't get cleared with
+# the files in them. used by cycles to install addon.
+macro(delayed_install
+       base
+       files
+       destination)
+
+       foreach(f ${files})
+               set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f})
+               set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination})
+       endforeach()
+endmacro()
+
+# note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir
+# does not get expanded in calling but is preserved
+function(delayed_do_install
+       targetdir)
+
+       get_property(files GLOBAL PROPERTY DELAYED_INSTALL_FILES)
+       get_property(destinations GLOBAL PROPERTY DELAYED_INSTALL_DESTINATIONS)
+
+       if(files)
+               list(LENGTH files n)
+               math(EXPR n "${n}-1")
+
+               foreach(i RANGE ${n})
+                       list(GET files ${i} f)
+                       list(GET destinations ${i} d)
+                       install(FILES ${f} DESTINATION ${targetdir}/${d})
+               endforeach()
+       endif()
+endfunction()
+
index 8e813d3..76183c0 100755 (executable)
@@ -104,7 +104,7 @@ def is_glsl(filename):
 
 def is_c(filename):
     ext = splitext(filename)[1]
-    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc", ".cc", ".inl"))
+    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
 
 
 def is_c_any(filename):
index 5d646ee..501cdd1 100644 (file)
@@ -40,7 +40,7 @@ def is_c_header(filename):
 
 def is_c(filename):
     ext = os.path.splitext(filename)[1]
-    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc", ".cc", ".inl"))
+    return (ext in (".c", ".cpp", ".cxx", ".m", ".mm", ".rc"))
 
 
 def is_c_any(filename):
index 321ebc1..c8429c0 100644 (file)
@@ -26,8 +26,6 @@
 # Otherwise we get warnings here that we cant fix in external projects
 remove_strict_flags()
 
-add_subdirectory(colamd)
-
 if(WITH_BULLET)
        add_subdirectory(bullet2)
 endif()
diff --git a/extern/Eigen2/Eigen/Array b/extern/Eigen2/Eigen/Array
new file mode 100644 (file)
index 0000000..c847f95
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef EIGEN_ARRAY_MODULE_H
+#define EIGEN_ARRAY_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+namespace Eigen {
+
+/** \defgroup Array_Module Array module
+  * This module provides several handy features to manipulate matrices as simple array of values.
+  * In addition to listed classes, it defines various methods of the Cwise interface
+  * (accessible from MatrixBase::cwise()), including:
+  *  - matrix-scalar sum,
+  *  - coeff-wise comparison operators,
+  *  - sin, cos, sqrt, pow, exp, log, square, cube, inverse (reciprocal).
+  *
+  * This module also provides various MatrixBase methods, including:
+  *  - \ref MatrixBase::all() "all", \ref MatrixBase::any() "any",
+  *  - \ref MatrixBase::Random() "random matrix initialization"
+  *
+  * \code
+  * #include <Eigen/Array>
+  * \endcode
+  */
+
+#include "src/Array/CwiseOperators.h"
+#include "src/Array/Functors.h"
+#include "src/Array/BooleanRedux.h"
+#include "src/Array/Select.h"
+#include "src/Array/PartialRedux.h"
+#include "src/Array/Random.h"
+#include "src/Array/Norms.h"
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_ARRAY_MODULE_H
diff --git a/extern/Eigen2/Eigen/Cholesky b/extern/Eigen2/Eigen/Cholesky
new file mode 100644 (file)
index 0000000..f1806f7
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef EIGEN_CHOLESKY_MODULE_H
+#define EIGEN_CHOLESKY_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+// Note that EIGEN_HIDE_HEAVY_CODE has to be defined per module
+#if (defined EIGEN_EXTERN_INSTANTIATIONS) && (EIGEN_EXTERN_INSTANTIATIONS>=2)
+  #ifndef EIGEN_HIDE_HEAVY_CODE
+  #define EIGEN_HIDE_HEAVY_CODE
+  #endif
+#elif defined EIGEN_HIDE_HEAVY_CODE
+  #undef EIGEN_HIDE_HEAVY_CODE
+#endif
+
+namespace Eigen {
+
+/** \defgroup Cholesky_Module Cholesky module
+  *
+  * \nonstableyet
+  *
+  * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
+  * Those decompositions are accessible via the following MatrixBase methods:
+  *  - MatrixBase::llt(),
+  *  - MatrixBase::ldlt()
+  *
+  * \code
+  * #include <Eigen/Cholesky>
+  * \endcode
+  */
+
+#include "src/Array/CwiseOperators.h"
+#include "src/Array/Functors.h"
+#include "src/Cholesky/LLT.h"
+#include "src/Cholesky/LDLT.h"
+
+} // namespace Eigen
+
+#define EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MATRIXTYPE,PREFIX) \
+  PREFIX template class LLT<MATRIXTYPE>; \
+  PREFIX template class LDLT<MATRIXTYPE>
+
+#define EIGEN_CHOLESKY_MODULE_INSTANTIATE(PREFIX) \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix2f,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix2d,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix3f,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix3d,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix4f,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(Matrix4d,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXf,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXd,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXcf,PREFIX); \
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE_TYPE(MatrixXcd,PREFIX)
+
+#ifdef EIGEN_EXTERN_INSTANTIATIONS
+
+namespace Eigen {
+  EIGEN_CHOLESKY_MODULE_INSTANTIATE(extern);
+} // namespace Eigen
+#endif
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_CHOLESKY_MODULE_H
diff --git a/extern/Eigen2/Eigen/Core b/extern/Eigen2/Eigen/Core
new file mode 100644 (file)
index 0000000..060c60f
--- /dev/null
@@ -0,0 +1,155 @@
+#ifndef EIGEN_CORE_H
+#define EIGEN_CORE_H
+
+// first thing Eigen does: prevent MSVC from committing suicide
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+#ifdef _MSC_VER
+  #include <malloc.h> // for _aligned_malloc -- need it regardless of whether vectorization is enabled
+  #if (_MSC_VER >= 1500) // 2008 or later
+    // Remember that usage of defined() in a #define is undefined by the standard.
+    // a user reported that in 64-bit mode, MSVC doesn't care to define _M_IX86_FP.
+    #if (defined(_M_IX86_FP) && (_M_IX86_FP >= 2)) || defined(_M_X64)
+      #define EIGEN_SSE2_ON_MSVC_2008_OR_LATER
+    #endif   
+  #endif
+#endif
+
+#ifdef __GNUC__
+  #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x)
+#else
+  #define EIGEN_GNUC_AT_LEAST(x,y) 0
+#endif
+
+// Remember that usage of defined() in a #define is undefined by the standard
+#if (defined __SSE2__) && ( (!defined __GNUC__) || EIGEN_GNUC_AT_LEAST(4,2) )
+  #define EIGEN_SSE2_BUT_NOT_OLD_GCC
+#endif
+
+#ifndef EIGEN_DONT_VECTORIZE
+  #if defined (EIGEN_SSE2_BUT_NOT_OLD_GCC) || defined(EIGEN_SSE2_ON_MSVC_2008_OR_LATER)
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_SSE
+    #include <emmintrin.h>
+    #include <xmmintrin.h>
+    #ifdef __SSE3__
+      #include <pmmintrin.h>
+    #endif
+    #ifdef __SSSE3__
+      #include <tmmintrin.h>
+    #endif
+  #elif defined __ALTIVEC__
+    #define EIGEN_VECTORIZE
+    #define EIGEN_VECTORIZE_ALTIVEC
+    #include <altivec.h>
+    // We need to #undef all these ugly tokens defined in <altivec.h>
+    // => use __vector instead of vector
+    #undef bool
+    #undef vector
+    #undef pixel
+  #endif
+#endif
+
+#include <cstdlib>
+#include <cmath>
+#include <complex>
+#include <cassert>
+#include <functional>
+#include <iostream>
+#include <cstring>
+#include <string>
+#include <limits>
+#include <cstddef>
+
+#if (defined(_CPPUNWIND) || defined(__EXCEPTIONS)) && !defined(EIGEN_NO_EXCEPTIONS)
+  #define EIGEN_EXCEPTIONS
+#endif
+
+#ifdef EIGEN_EXCEPTIONS
+  #include <new>
+#endif
+
+// this needs to be done after all possible windows C header includes and before any Eigen source includes
+// (system C++ includes are supposed to be able to deal with this already):
+// windows.h defines min and max macros which would make Eigen fail to compile.
+#if defined(min) || defined(max)
+#error The preprocessor symbols 'min' or 'max' are defined. If you are compiling on Windows, do #define NOMINMAX to prevent windows.h from defining these symbols.
+#endif
+
+namespace Eigen {
+
+/** \defgroup Core_Module Core module
+  * This is the main module of Eigen providing dense matrix and vector support
+  * (both fixed and dynamic size) with all the features corresponding to a BLAS library
+  * and much more...
+  *
+  * \code
+  * #include <Eigen/Core>
+  * \endcode
+  */
+
+#include "src/Core/util/Macros.h"
+#include "src/Core/util/Constants.h"
+#include "src/Core/util/ForwardDeclarations.h"
+#include "src/Core/util/Meta.h"
+#include "src/Core/util/XprHelper.h"
+#include "src/Core/util/StaticAssert.h"
+#include "src/Core/util/Memory.h"
+
+#include "src/Core/NumTraits.h"
+#include "src/Core/MathFunctions.h"
+#include "src/Core/GenericPacketMath.h"
+
+#if defined EIGEN_VECTORIZE_SSE
+  #include "src/Core/arch/SSE/PacketMath.h"
+#elif defined EIGEN_VECTORIZE_ALTIVEC
+  #include "src/Core/arch/AltiVec/PacketMath.h"
+#endif
+
+#ifndef EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
+#define EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD 16
+#endif
+
+#include "src/Core/Functors.h"
+#include "src/Core/MatrixBase.h"
+#include "src/Core/Coeffs.h"
+
+#ifndef EIGEN_PARSED_BY_DOXYGEN // work around Doxygen bug triggered by Assign.h r814874
+                                // at least confirmed with Doxygen 1.5.5 and 1.5.6
+  #include "src/Core/Assign.h"
+#endif
+
+#include "src/Core/MatrixStorage.h"
+#include "src/Core/NestByValue.h"
+#include "src/Core/Flagged.h"
+#include "src/Core/Matrix.h"
+#include "src/Core/Cwise.h"
+#include "src/Core/CwiseBinaryOp.h"
+#include "src/Core/CwiseUnaryOp.h"
+#include "src/Core/CwiseNullaryOp.h"
+#include "src/Core/Dot.h"
+#include "src/Core/Product.h"
+#include "src/Core/DiagonalProduct.h"
+#include "src/Core/SolveTriangular.h"
+#include "src/Core/MapBase.h"
+#include "src/Core/Map.h"
+#include "src/Core/Block.h"
+#include "src/Core/Minor.h"
+#include "src/Core/Transpose.h"
+#include "src/Core/DiagonalMatrix.h"
+#include "src/Core/DiagonalCoeffs.h"
+#include "src/Core/Sum.h"
+#include "src/Core/Redux.h"
+#include "src/Core/Visitor.h"
+#include "src/Core/Fuzzy.h"
+#include "src/Core/IO.h"
+#include "src/Core/Swap.h"
+#include "src/Core/CommaInitializer.h"
+#include "src/Core/Part.h"
+#include "src/Core/CacheFriendlyProduct.h"
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_CORE_H
similarity index 70%
rename from extern/Eigen3/Eigen/Dense
rename to extern/Eigen2/Eigen/Dense
index 5768910..9655edc 100644 (file)
@@ -1,7 +1,8 @@
 #include "Core"
+#include "Array"
 #include "LU"
 #include "Cholesky"
 #include "QR"
 #include "SVD"
 #include "Geometry"
-#include "Eigenvalues"
+#include "LeastSquares"
diff --git a/extern/Eigen2/Eigen/Eigen b/extern/Eigen2/Eigen/Eigen
new file mode 100644 (file)
index 0000000..654c8dc
--- /dev/null
@@ -0,0 +1,2 @@
+#include "Dense"
+#include "Sparse"
diff --git a/extern/Eigen2/Eigen/Geometry b/extern/Eigen2/Eigen/Geometry
new file mode 100644 (file)
index 0000000..617b25e
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef EIGEN_GEOMETRY_MODULE_H
+#define EIGEN_GEOMETRY_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+#include "Array"
+#include <limits>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+namespace Eigen {
+
+/** \defgroup Geometry_Module Geometry module
+  *
+  * \nonstableyet
+  *
+  * This module provides support for:
+  *  - fixed-size homogeneous transformations
+  *  - translation, scaling, 2D and 3D rotations
+  *  - quaternions
+  *  - \ref MatrixBase::cross() "cross product"
+  *  - \ref MatrixBase::unitOrthogonal() "orthognal vector generation"
+  *  - some linear components: parametrized-lines and hyperplanes
+  *
+  * \code
+  * #include <Eigen/Geometry>
+  * \endcode
+  */
+
+#include "src/Geometry/OrthoMethods.h"
+#include "src/Geometry/RotationBase.h"
+#include "src/Geometry/Rotation2D.h"
+#include "src/Geometry/Quaternion.h"
+#include "src/Geometry/AngleAxis.h"
+#include "src/Geometry/EulerAngles.h"
+#include "src/Geometry/Transform.h"
+#include "src/Geometry/Translation.h"
+#include "src/Geometry/Scaling.h"
+#include "src/Geometry/Hyperplane.h"
+#include "src/Geometry/ParametrizedLine.h"
+#include "src/Geometry/AlignedBox.h"
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_GEOMETRY_MODULE_H
similarity index 54%
rename from extern/Eigen3/Eigen/LU
rename to extern/Eigen2/Eigen/LU
index 226f88c..0ce6945 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "Core"
 
-#include "src/Core/util/DisableStupidWarnings.h"
+#include "src/Core/util/DisableMSVCWarnings.h"
 
 namespace Eigen {
 
@@ -18,25 +18,12 @@ namespace Eigen {
   * \endcode
   */
 
-#include "src/misc/Solve.h"
-#include "src/misc/Kernel.h"
-#include "src/misc/Image.h"
-#include "src/LU/FullPivLU.h"
-#include "src/LU/PartialPivLU.h"
+#include "src/LU/LU.h"
 #include "src/LU/Determinant.h"
 #include "src/LU/Inverse.h"
 
-#if defined EIGEN_VECTORIZE_SSE
-  #include "src/LU/arch/Inverse_SSE.h"
-#endif
-
-#ifdef EIGEN2_SUPPORT
-  #include "src/Eigen2Support/LU.h"
-#endif
-
 } // namespace Eigen
 
-#include "src/Core/util/ReenableStupidWarnings.h"
+#include "src/Core/util/EnableMSVCWarnings.h"
 
 #endif // EIGEN_LU_MODULE_H
-/* vim: set filetype=cpp et sw=2 ts=2 ai: */
diff --git a/extern/Eigen2/Eigen/LeastSquares b/extern/Eigen2/Eigen/LeastSquares
new file mode 100644 (file)
index 0000000..573a13c
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef EIGEN_REGRESSION_MODULE_H
+#define EIGEN_REGRESSION_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+#include "QR"
+#include "Geometry"
+
+namespace Eigen {
+
+/** \defgroup LeastSquares_Module LeastSquares module
+  * This module provides linear regression and related features.
+  *
+  * \code
+  * #include <Eigen/LeastSquares>
+  * \endcode
+  */
+
+#include "src/LeastSquares/LeastSquares.h"
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_REGRESSION_MODULE_H
similarity index 58%
rename from extern/Eigen3/Eigen/src/StlSupport/StdVector.h
rename to extern/Eigen2/Eigen/NewStdVector
index 27d6ab5..f37de5f 100644 (file)
@@ -1,7 +1,7 @@
 // This file is part of Eigen, a lightweight C++ template library
 // for linear algebra.
 //
-// Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2009 Gael Guennebaud <g.gael@free.fr>
 // Copyright (C) 2009 Hauke Heibel <hauke.heibel@googlemail.com>
 //
 // Eigen is free software; you can redistribute it and/or
 // License and a copy of the GNU General Public License along with
 // Eigen. If not, see <http://www.gnu.org/licenses/>.
 
-#ifndef EIGEN_STDVECTOR_H
-#define EIGEN_STDVECTOR_H
-
-#include "Eigen/src/StlSupport/details.h"
-
-/**
- * This section contains a convenience MACRO which allows an easy specialization of
- * std::vector such that for data types with alignment issues the correct allocator
- * is used automatically.
- */
-#define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) \
-namespace std \
-{ \
-  template<> \
-  class vector<__VA_ARGS__, std::allocator<__VA_ARGS__> >  \
-    : public vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \
-  { \
-    typedef vector<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > vector_base; \
-  public: \
-    typedef __VA_ARGS__ value_type; \
-    typedef vector_base::allocator_type allocator_type; \
-    typedef vector_base::size_type size_type;  \
-    typedef vector_base::iterator iterator;  \
-    explicit vector(const allocator_type& a = allocator_type()) : vector_base(a) {}  \
-    template<typename InputIterator> \
-    vector(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : vector_base(first, last, a) {} \
-    vector(const vector& c) : vector_base(c) {}  \
-    explicit vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
-    vector(iterator start, iterator end) : vector_base(start, end) {}  \
-    vector& operator=(const vector& x) {  \
-      vector_base::operator=(x);  \
-      return *this;  \
-    } \
-  }; \
+#ifndef EIGEN_STDVECTOR_MODULE_H
+#define EIGEN_STDVECTOR_MODULE_H
+
+#include "Core"
+#include <vector>
+
+namespace Eigen {
+
+// This one is needed to prevent reimplementing the whole std::vector.
+template <class T>
+class aligned_allocator_indirection : public aligned_allocator<T>
+{
+public:
+  typedef size_t    size_type;
+  typedef ptrdiff_t difference_type;
+  typedef T*        pointer;
+  typedef const T*  const_pointer;
+  typedef T&        reference;
+  typedef const T&  const_reference;
+  typedef T         value_type;
+
+  template<class U>
+  struct rebind
+  {
+    typedef aligned_allocator_indirection<U> other;
+  };
+
+  aligned_allocator_indirection() throw() {}
+  aligned_allocator_indirection(const aligned_allocator_indirection& ) throw() : aligned_allocator<T>() {}
+  aligned_allocator_indirection(const aligned_allocator<T>& ) throw() {}
+  template<class U>
+  aligned_allocator_indirection(const aligned_allocator_indirection<U>& ) throw() {}
+  template<class U>
+  aligned_allocator_indirection(const aligned_allocator<U>& ) throw() {}
+  ~aligned_allocator_indirection() throw() {}
+};
+
+#ifdef _MSC_VER
+
+  // sometimes, MSVC detects, at compile time, that the argument x
+  // in std::vector::resize(size_t s,T x) won't be aligned and generate an error
+  // even if this function is never called. Whence this little wrapper.
+  #define EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) Eigen::ei_workaround_msvc_std_vector<T>
+  template<typename T> struct ei_workaround_msvc_std_vector : public T
+  {
+    inline ei_workaround_msvc_std_vector() : T() {}
+    inline ei_workaround_msvc_std_vector(const T& other) : T(other) {}
+    inline operator T& () { return *static_cast<T*>(this); }
+    inline operator const T& () const { return *static_cast<const T*>(this); }
+    template<typename OtherT>
+    inline T& operator=(const OtherT& other)
+    { T::operator=(other); return *this; }
+    inline ei_workaround_msvc_std_vector& operator=(const ei_workaround_msvc_std_vector& other)
+    { T::operator=(other); return *this; }
+  };
+
+#else
+
+  #define EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) T
+
+#endif
+
 }
 
 namespace std {
@@ -80,13 +108,13 @@ namespace std {
       return *this;  \
     }
 
-  template<typename T>
-  class vector<T,EIGEN_ALIGNED_ALLOCATOR<T> >
-    : public vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
-                    Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> >
+template<typename T>
+class vector<T,Eigen::aligned_allocator<T> >
+  : public vector<EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
+                  Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> >
 {
-  typedef vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T),
-                 Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > vector_base;
+  typedef vector<EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
+                 Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> > vector_base;
   EIGEN_STD_VECTOR_SPECIALIZATION_BODY
 
   void resize(size_type new_size)
@@ -108,13 +136,6 @@ namespace std {
   { return vector_base::insert(position,x); }
   void insert(const_iterator position, size_type new_size, const value_type& x)
   { vector_base::insert(position, new_size, x); }
-#elif defined(_GLIBCXX_VECTOR) && (!(EIGEN_GNUC_AT_LEAST(4,1)))
-  /* Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&).
-   * However, this specialization is still needed to make the above EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION trick to work. */
-  void resize(size_type new_size, const value_type& x)
-  {
-    vector_base::resize(new_size,x);
-  }
 #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2)
   // workaround GCC std::vector implementation
   void resize(size_type new_size, const value_type& x)
@@ -124,6 +145,10 @@ namespace std {
     else
       vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
   }
+#elif defined(_GLIBCXX_VECTOR) && (!EIGEN_GNUC_AT_LEAST(4,1))
+  // Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&),
+  // no no need to workaround !
+  using vector_base::resize;
 #else
   // either GCC 4.1 or non-GCC
   // default implementation which should always work.
@@ -135,7 +160,9 @@ namespace std {
       vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
   }
 #endif
-  };
+
+};
+
 }
 
-#endif // EIGEN_STDVECTOR_H
+#endif // EIGEN_STDVECTOR_MODULE_H
diff --git a/extern/Eigen2/Eigen/QR b/extern/Eigen2/Eigen/QR
new file mode 100644 (file)
index 0000000..97907d1
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef EIGEN_QR_MODULE_H
+#define EIGEN_QR_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+#include "Cholesky"
+
+// Note that EIGEN_HIDE_HEAVY_CODE has to be defined per module
+#if (defined EIGEN_EXTERN_INSTANTIATIONS) && (EIGEN_EXTERN_INSTANTIATIONS>=2)
+  #ifndef EIGEN_HIDE_HEAVY_CODE
+  #define EIGEN_HIDE_HEAVY_CODE
+  #endif
+#elif defined EIGEN_HIDE_HEAVY_CODE
+  #undef EIGEN_HIDE_HEAVY_CODE
+#endif
+
+namespace Eigen {
+
+/** \defgroup QR_Module QR module
+  *
+  * \nonstableyet
+  *
+  * This module mainly provides QR decomposition and an eigen value solver.
+  * This module also provides some MatrixBase methods, including:
+  *  - MatrixBase::qr(),
+  *  - MatrixBase::eigenvalues(),
+  *  - MatrixBase::operatorNorm()
+  *
+  * \code
+  * #include <Eigen/QR>
+  * \endcode
+  */
+
+#include "src/QR/QR.h"
+#include "src/QR/Tridiagonalization.h"
+#include "src/QR/EigenSolver.h"
+#include "src/QR/SelfAdjointEigenSolver.h"
+#include "src/QR/HessenbergDecomposition.h"
+
+// declare all classes for a given matrix type
+#define EIGEN_QR_MODULE_INSTANTIATE_TYPE(MATRIXTYPE,PREFIX) \
+  PREFIX template class QR<MATRIXTYPE>; \
+  PREFIX template class Tridiagonalization<MATRIXTYPE>; \
+  PREFIX template class HessenbergDecomposition<MATRIXTYPE>; \
+  PREFIX template class SelfAdjointEigenSolver<MATRIXTYPE>
+
+// removed because it does not support complex yet
+//  PREFIX template class EigenSolver<MATRIXTYPE>
+
+// declare all class for all types
+#define EIGEN_QR_MODULE_INSTANTIATE(PREFIX) \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2f,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2d,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3f,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3d,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4f,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4d,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXf,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXd,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcf,PREFIX); \
+  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcd,PREFIX)
+
+#ifdef EIGEN_EXTERN_INSTANTIATIONS
+  EIGEN_QR_MODULE_INSTANTIATE(extern);
+#endif // EIGEN_EXTERN_INSTANTIATIONS
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_QR_MODULE_H
diff --git a/extern/Eigen2/Eigen/QtAlignedMalloc b/extern/Eigen2/Eigen/QtAlignedMalloc
new file mode 100644 (file)
index 0000000..fde2273
--- /dev/null
@@ -0,0 +1,29 @@
+
+#ifndef EIGEN_QTMALLOC_MODULE_H
+#define EIGEN_QTMALLOC_MODULE_H
+
+#include "Core"
+
+#if (!EIGEN_MALLOC_ALREADY_ALIGNED)
+
+inline void *qMalloc(size_t size)
+{
+  return Eigen::ei_aligned_malloc(size);
+}
+
+inline void qFree(void *ptr)
+{
+  Eigen::ei_aligned_free(ptr);
+}
+
+inline void *qRealloc(void *ptr, size_t size)
+{
+  void* newPtr = Eigen::ei_aligned_malloc(size);
+  memcpy(newPtr, ptr, size);
+  Eigen::ei_aligned_free(ptr);
+  return newPtr;
+}
+
+#endif
+
+#endif // EIGEN_QTMALLOC_MODULE_H
similarity index 52%
rename from extern/Eigen3/Eigen/SVD
rename to extern/Eigen2/Eigen/SVD
index d24471f..eef0556 100644 (file)
@@ -1,17 +1,15 @@
 #ifndef EIGEN_SVD_MODULE_H
 #define EIGEN_SVD_MODULE_H
 
-#include "QR"
-#include "Householder"
-#include "Jacobi"
+#include "Core"
 
-#include "src/Core/util/DisableStupidWarnings.h"
+#include "src/Core/util/DisableMSVCWarnings.h"
 
 namespace Eigen {
 
 /** \defgroup SVD_Module SVD module
   *
-  *
+  * \nonstableyet
   *
   * This module provides SVD decomposition for (currently) real matrices.
   * This decomposition is accessible via the following MatrixBase method:
@@ -22,17 +20,10 @@ namespace Eigen {
   * \endcode
   */
 
-#include "src/misc/Solve.h"
-#include "src/SVD/JacobiSVD.h"
-#include "src/SVD/UpperBidiagonalization.h"
-
-#ifdef EIGEN2_SUPPORT
-#include "src/Eigen2Support/SVD.h"
-#endif
+#include "src/SVD/SVD.h"
 
 } // namespace Eigen
 
-#include "src/Core/util/ReenableStupidWarnings.h"
+#include "src/Core/util/EnableMSVCWarnings.h"
 
 #endif // EIGEN_SVD_MODULE_H
-/* vim: set filetype=cpp et sw=2 ts=2 ai: */
diff --git a/extern/Eigen2/Eigen/Sparse b/extern/Eigen2/Eigen/Sparse
new file mode 100644 (file)
index 0000000..536c284
--- /dev/null
@@ -0,0 +1,132 @@
+#ifndef EIGEN_SPARSE_MODULE_H
+#define EIGEN_SPARSE_MODULE_H
+
+#include "Core"
+
+#include "src/Core/util/DisableMSVCWarnings.h"
+
+#include <vector>
+#include <map>
+#include <cstdlib>
+#include <cstring>
+#include <algorithm>
+
+#ifdef EIGEN_GOOGLEHASH_SUPPORT
+  #include <google/dense_hash_map>
+#endif
+
+#ifdef EIGEN_CHOLMOD_SUPPORT
+  extern "C" {
+    #include "cholmod.h"
+  }
+#endif
+
+#ifdef EIGEN_TAUCS_SUPPORT
+  // taucs.h declares a lot of mess
+  #define isnan
+  #define finite
+  #define isinf
+  extern "C" {
+    #include "taucs.h"
+  }
+  #undef isnan
+  #undef finite
+  #undef isinf
+
+  #ifdef min
+    #undef min
+  #endif
+  #ifdef max
+    #undef max
+  #endif
+  #ifdef complex
+    #undef complex
+  #endif
+#endif
+
+#ifdef EIGEN_SUPERLU_SUPPORT
+  typedef int int_t;
+  #include "superlu/slu_Cnames.h"
+  #include "superlu/supermatrix.h"
+  #include "superlu/slu_util.h"
+
+  namespace SuperLU_S {
+  #include "superlu/slu_sdefs.h"
+  }
+  namespace SuperLU_D {
+  #include "superlu/slu_ddefs.h"
+  }
+  namespace SuperLU_C {
+  #include "superlu/slu_cdefs.h"
+  }
+  namespace SuperLU_Z {
+  #include "superlu/slu_zdefs.h"
+  }
+  namespace Eigen { struct SluMatrix; }
+#endif
+
+#ifdef EIGEN_UMFPACK_SUPPORT
+  #include "umfpack.h"
+#endif
+
+namespace Eigen {
+
+/** \defgroup Sparse_Module Sparse module
+  *
+  * \nonstableyet
+  *
+  * See the \ref TutorialSparse "Sparse tutorial"
+  *
+  * \code
+  * #include <Eigen/QR>
+  * \endcode
+  */
+
+#include "src/Sparse/SparseUtil.h"
+#include "src/Sparse/SparseMatrixBase.h"
+#include "src/Sparse/CompressedStorage.h"
+#include "src/Sparse/AmbiVector.h"
+#include "src/Sparse/RandomSetter.h"
+#include "src/Sparse/SparseBlock.h"
+#include "src/Sparse/SparseMatrix.h"
+#include "src/Sparse/DynamicSparseMatrix.h"
+#include "src/Sparse/MappedSparseMatrix.h"
+#include "src/Sparse/SparseVector.h"
+#include "src/Sparse/CoreIterators.h"
+#include "src/Sparse/SparseTranspose.h"
+#include "src/Sparse/SparseCwise.h"
+#include "src/Sparse/SparseCwiseUnaryOp.h"
+#include "src/Sparse/SparseCwiseBinaryOp.h"
+#include "src/Sparse/SparseDot.h"
+#include "src/Sparse/SparseAssign.h"
+#include "src/Sparse/SparseRedux.h"
+#include "src/Sparse/SparseFuzzy.h"
+#include "src/Sparse/SparseFlagged.h"
+#include "src/Sparse/SparseProduct.h"
+#include "src/Sparse/SparseDiagonalProduct.h"
+#include "src/Sparse/TriangularSolver.h"
+#include "src/Sparse/SparseLLT.h"
+#include "src/Sparse/SparseLDLT.h"
+#include "src/Sparse/SparseLU.h"
+
+#ifdef EIGEN_CHOLMOD_SUPPORT
+# include "src/Sparse/CholmodSupport.h"
+#endif
+
+#ifdef EIGEN_TAUCS_SUPPORT
+# include "src/Sparse/TaucsSupport.h"
+#endif
+
+#ifdef EIGEN_SUPERLU_SUPPORT
+# include "src/Sparse/SuperLUSupport.h"
+#endif
+
+#ifdef EIGEN_UMFPACK_SUPPORT
+# include "src/Sparse/UmfPackSupport.h"
+#endif
+
+} // namespace Eigen
+
+#include "src/Core/util/EnableMSVCWarnings.h"
+
+#endif // EIGEN_SPARSE_MODULE_H
diff --git a/extern/Eigen2/Eigen/StdVector b/extern/Eigen2/Eigen/StdVector
new file mode 100644 (file)
index 0000000..c0744d6
--- /dev/null
@@ -0,0 +1,147 @@
+#ifdef EIGEN_USE_NEW_STDVECTOR
+#include "NewStdVector"
+#else
+
+#ifndef EIGEN_STDVECTOR_MODULE_H
+#define EIGEN_STDVECTOR_MODULE_H
+
+#if defined(_GLIBCXX_VECTOR) || defined(_VECTOR_)
+#error you must include <Eigen/StdVector> before <vector>. Also note that <Eigen/Sparse> includes <vector>, so it must be included after <Eigen/StdVector> too.
+#endif                                                    
+
+#ifndef EIGEN_GNUC_AT_LEAST
+#ifdef __GNUC__
+  #define EIGEN_GNUC_AT_LEAST(x,y) ((__GNUC__>=x && __GNUC_MINOR__>=y) || __GNUC__>x)
+#else
+  #define EIGEN_GNUC_AT_LEAST(x,y) 0
+#endif
+#endif
+
+#define vector std_vector
+#include <vector>        
+#undef vector
+
+namespace Eigen {
+
+template<typename T> class aligned_allocator;
+
+// meta programming to determine if a class has a given member
+struct ei_does_not_have_aligned_operator_new_marker_sizeof {int a[1];};
+struct ei_has_aligned_operator_new_marker_sizeof {int a[2];};
+
+template<typename ClassType>
+struct ei_has_aligned_operator_new {
+    template<typename T>
+    static ei_has_aligned_operator_new_marker_sizeof
+    test(T const *, typename T::ei_operator_new_marker_type const * = 0);
+    static ei_does_not_have_aligned_operator_new_marker_sizeof
+    test(...);
+
+    // note that the following indirection is needed for gcc-3.3
+    enum {ret =  sizeof(test(static_cast<ClassType*>(0))) 
+              == sizeof(ei_has_aligned_operator_new_marker_sizeof) };
+};
+
+#ifdef _MSC_VER
+  
+  // sometimes, MSVC detects, at compile time, that the argument x
+  // in std::vector::resize(size_t s,T x) won't be aligned and generate an error
+  // even if this function is never called. Whence this little wrapper.
+  #define _EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) Eigen::ei_workaround_msvc_std_vector<T>
+  template<typename T> struct ei_workaround_msvc_std_vector : public T
+  {
+    inline ei_workaround_msvc_std_vector() : T() {}
+    inline ei_workaround_msvc_std_vector(const T& other) : T(other) {}
+    inline operator T& () { return *static_cast<T*>(this); }
+    inline operator const T& () const { return *static_cast<const T*>(this); }
+    template<typename OtherT>
+    inline T& operator=(const OtherT& other)
+    { T::operator=(other); return *this; }
+    inline ei_workaround_msvc_std_vector& operator=(const ei_workaround_msvc_std_vector& other)
+    { T::operator=(other); return *this; }
+  };
+
+#else
+
+  #define _EIGEN_WORKAROUND_MSVC_STD_VECTOR(T) T
+
+#endif
+
+}
+
+namespace std {
+
+#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
+  public:  \
+    typedef T value_type; \
+    typedef typename vector_base::allocator_type allocator_type; \
+    typedef typename vector_base::size_type size_type;  \
+    typedef typename vector_base::iterator iterator;  \
+    explicit vector(const allocator_type& __a = allocator_type()) : vector_base(__a) {}  \
+    vector(const vector& c) : vector_base(c) {}  \
+    vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
+    vector(iterator start, iterator end) : vector_base(start, end) {}  \
+    vector& operator=(const vector& __x) {  \
+      vector_base::operator=(__x);  \
+      return *this;  \
+    }
+
+template<typename T,
+         typename AllocT = std::allocator<T>,
+         bool HasAlignedNew = Eigen::ei_has_aligned_operator_new<T>::ret>
+class vector : public std::std_vector<T,AllocT>
+{
+  typedef std_vector<T, AllocT> vector_base;
+  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+};
+
+template<typename T,typename DummyAlloc>
+class vector<T,DummyAlloc,true>
+  : public std::std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
+                           Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> >          
+{
+  typedef std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
+                     Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> > vector_base;
+  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+
+  void resize(size_type __new_size)
+  { resize(__new_size, T()); }     
+
+  #if defined(_VECTOR_)
+  // workaround MSVC std::vector implementation
+  void resize(size_type __new_size, const value_type& __x)                 
+  {                                                              
+    if (vector_base::size() < __new_size)                                 
+      vector_base::_Insert_n(vector_base::end(), __new_size - vector_base::size(), __x);
+    else if (__new_size < vector_base::size())
+      vector_base::erase(vector_base::begin() + __new_size, vector_base::end());
+  }
+  #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2)
+  // workaround GCC std::vector implementation
+  void resize(size_type __new_size, const value_type& __x)
+  {                                              
+    if (__new_size < vector_base::size())               
+      vector_base::_M_erase_at_end(this->_M_impl._M_start + __new_size);
+    else                       
+      vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x); 
+  }                                                              
+  #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1)
+  void resize(size_type __new_size, const value_type& __x)
+  {
+    if (__new_size < vector_base::size())
+      vector_base::erase(vector_base::begin() + __new_size, vector_base::end());
+    else
+      vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x);
+  }
+  #else
+  // Before gcc-4.1 we already have: std::vector::resize(size_type,const T&),
+  // so no need for a workaround !
+  using vector_base::resize;
+  #endif  
+};
+
+}
+
+#endif // EIGEN_STDVECTOR_MODULE_H
+
+#endif // EIGEN_USE_NEW_STDVECTOR
\ No newline at end of file
similarity index 60%
rename from extern/Eigen3/Eigen/src/Core/BooleanRedux.h
rename to extern/Eigen2/Eigen/src/Array/BooleanRedux.h
index 5c3444a..4e82183 100644 (file)
@@ -1,7 +1,7 @@
 // This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
+// for linear algebra. Eigen itself is part of the KDE project.
 //
-// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
 //
 // Eigen is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #ifndef EIGEN_ALLANDANY_H
 #define EIGEN_ALLANDANY_H
 
-namespace internal {
-
 template<typename Derived, int UnrollCount>
-struct all_unroller
+struct ei_all_unroller
 {
   enum {
     col = (UnrollCount-1) / Derived::RowsAtCompileTime,
@@ -37,24 +35,24 @@ struct all_unroller
 
   inline static bool run(const Derived &mat)
   {
-    return all_unroller<Derived, UnrollCount-1>::run(mat) && mat.coeff(row, col);
+    return ei_all_unroller<Derived, UnrollCount-1>::run(mat) && mat.coeff(row, col);
   }
 };
 
 template<typename Derived>
-struct all_unroller<Derived, 1>
+struct ei_all_unroller<Derived, 1>
 {
   inline static bool run(const Derived &mat) { return mat.coeff(0, 0); }
 };
 
 template<typename Derived>
-struct all_unroller<Derived, Dynamic>
+struct ei_all_unroller<Derived, Dynamic>
 {
   inline static bool run(const Derived &) { return false; }
 };
 
 template<typename Derived, int UnrollCount>
-struct any_unroller
+struct ei_any_unroller
 {
   enum {
     col = (UnrollCount-1) / Derived::RowsAtCompileTime,
@@ -63,87 +61,85 @@ struct any_unroller
 
   inline static bool run(const Derived &mat)
   {
-    return any_unroller<Derived, UnrollCount-1>::run(mat) || mat.coeff(row, col);
+    return ei_any_unroller<Derived, UnrollCount-1>::run(mat) || mat.coeff(row, col);
   }
 };
 
 template<typename Derived>
-struct any_unroller<Derived, 1>
+struct ei_any_unroller<Derived, 1>
 {
   inline static bool run(const Derived &mat) { return mat.coeff(0, 0); }
 };
 
 template<typename Derived>
-struct any_unroller<Derived, Dynamic>
+struct ei_any_unroller<Derived, Dynamic>
 {
   inline static bool run(const Derived &) { return false; }
 };
 
-} // end namespace internal
-
-/** \returns true if all coefficients are true
+/** \array_module
+  * 
+  * \returns true if all coefficients are true
+  *
+  * \addexample CwiseAll \label How to check whether a point is inside a box (using operator< and all())
   *
   * Example: \include MatrixBase_all.cpp
   * Output: \verbinclude MatrixBase_all.out
   *
-  * \sa any(), Cwise::operator<()
+  * \sa MatrixBase::any(), Cwise::operator<()
   */
 template<typename Derived>
-inline bool DenseBase<Derived>::all() const
+inline bool MatrixBase<Derived>::all() const
 {
-  enum {
-    unroll = SizeAtCompileTime != Dynamic
-          && CoeffReadCost != Dynamic
-          && NumTraits<Scalar>::AddCost != Dynamic
-          && SizeAtCompileTime * (CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
-  };
+  const bool unroll = SizeAtCompileTime * (CoeffReadCost + NumTraits<Scalar>::AddCost)
+                      <= EIGEN_UNROLLING_LIMIT;
   if(unroll)
-    return internal::all_unroller<Derived,
+    return ei_all_unroller<Derived,
                            unroll ? int(SizeAtCompileTime) : Dynamic
      >::run(derived());
   else
   {
-    for(Index j = 0; j < cols(); ++j)
-      for(Index i = 0; i < rows(); ++i)
+    for(int j = 0; j < cols(); ++j)
+      for(int i = 0; i < rows(); ++i)
         if (!coeff(i, j)) return false;
     return true;
   }
 }
 
-/** \returns true if at least one coefficient is true
+/** \array_module
+  * 
+  * \returns true if at least one coefficient is true
   *
-  * \sa all()
+  * \sa MatrixBase::all()
   */
 template<typename Derived>
-inline bool DenseBase<Derived>::any() const
+inline bool MatrixBase<Derived>::any() const
 {
-  enum {
-    unroll = SizeAtCompileTime != Dynamic
-          && CoeffReadCost != Dynamic
-          && NumTraits<Scalar>::AddCost != Dynamic
-          && SizeAtCompileTime * (CoeffReadCost + NumTraits<Scalar>::AddCost) <= EIGEN_UNROLLING_LIMIT
-  };
+  const bool unroll = SizeAtCompileTime * (CoeffReadCost + NumTraits<Scalar>::AddCost)
+                      <= EIGEN_UNROLLING_LIMIT;
   if(unroll)
-    return internal::any_unroller<Derived,
+    return ei_any_unroller<Derived,
                            unroll ? int(SizeAtCompileTime) : Dynamic
            >::run(derived());
   else
   {
-    for(Index j = 0; j < cols(); ++j)
-      for(Index i = 0; i < rows(); ++i)
+    for(int j = 0; j < cols(); ++j)
+      for(int i = 0; i < rows(); ++i)
         if (coeff(i, j)) return true;
     return false;
   }
 }
 
-/** \returns the number of coefficients which evaluate to true
+/** \array_module
+  * 
+  * \returns the number of coefficients which evaluate to true
   *
-  * \sa all(), any()
+  * \sa MatrixBase::all(), MatrixBase::any()
   */
 template<typename Derived>
-inline typename DenseBase<Derived>::Index DenseBase<Derived>::count() const
+inline int MatrixBase<Derived>::count() const
 {
-  return derived().template cast<bool>().template cast<Index>().sum();
+  return this->cast<bool>().cast<int>().sum();
 }
 
 #endif // EIGEN_ALLANDANY_H
diff --git a/extern/Eigen2/Eigen/src/Array/CwiseOperators.h b/extern/Eigen2/Eigen/src/Array/CwiseOperators.h
new file mode 100644 (file)
index 0000000..4b6346d
--- /dev/null
@@ -0,0 +1,453 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_ARRAY_CWISE_OPERATORS_H
+#define EIGEN_ARRAY_CWISE_OPERATORS_H
+
+// -- unary operators --
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise square root of *this.
+  *
+  * Example: \include Cwise_sqrt.cpp
+  * Output: \verbinclude Cwise_sqrt.out
+  *
+  * \sa pow(), square()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_sqrt_op)
+Cwise<ExpressionType>::sqrt() const
+{
+  return _expression();
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise exponential of *this.
+  *
+  * Example: \include Cwise_exp.cpp
+  * Output: \verbinclude Cwise_exp.out
+  *
+  * \sa pow(), log(), sin(), cos()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_exp_op)
+Cwise<ExpressionType>::exp() const
+{
+  return _expression();
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise logarithm of *this.
+  *
+  * Example: \include Cwise_log.cpp
+  * Output: \verbinclude Cwise_log.out
+  *
+  * \sa exp()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_log_op)
+Cwise<ExpressionType>::log() const
+{
+  return _expression();
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise cosine of *this.
+  *
+  * Example: \include Cwise_cos.cpp
+  * Output: \verbinclude Cwise_cos.out
+  *
+  * \sa sin(), exp()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_cos_op)
+Cwise<ExpressionType>::cos() const
+{
+  return _expression();
+}
+
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise sine of *this.
+  *
+  * Example: \include Cwise_sin.cpp
+  * Output: \verbinclude Cwise_sin.out
+  *
+  * \sa cos(), exp()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_sin_op)
+Cwise<ExpressionType>::sin() const
+{
+  return _expression();
+}
+
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise power of *this to the given exponent.
+  *
+  * Example: \include Cwise_pow.cpp
+  * Output: \verbinclude Cwise_pow.out
+  *
+  * \sa exp(), log()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_pow_op)
+Cwise<ExpressionType>::pow(const Scalar& exponent) const
+{
+  return EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_pow_op)(_expression(), ei_scalar_pow_op<Scalar>(exponent));
+}
+
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise inverse of *this.
+  *
+  * Example: \include Cwise_inverse.cpp
+  * Output: \verbinclude Cwise_inverse.out
+  *
+  * \sa operator/(), operator*()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_inverse_op)
+Cwise<ExpressionType>::inverse() const
+{
+  return _expression();
+}
+
+/** \array_module
+  *
+  * \returns an expression of the coefficient-wise square of *this.
+  *
+  * Example: \include Cwise_square.cpp
+  * Output: \verbinclude Cwise_square.out
+  *
+  * \sa operator/(), operator*(), abs2()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_square_op)
+Cwise<ExpressionType>::square() const
+{
+  return _expression();
+}
+
+/** \array_module
+  *
+  * \returns an expression of the coefficient-wise cube of *this.
+  *
+  * Example: \include Cwise_cube.cpp
+  * Output: \verbinclude Cwise_cube.out
+  *
+  * \sa square(), pow()
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_UNOP_RETURN_TYPE(ei_scalar_cube_op)
+Cwise<ExpressionType>::cube() const
+{
+  return _expression();
+}
+
+
+// -- binary operators --
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \< operator of *this and \a other
+  *
+  * Example: \include Cwise_less.cpp
+  * Output: \verbinclude Cwise_less.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), operator>(), operator<=()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::less)
+Cwise<ExpressionType>::operator<(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::less)(_expression(), other.derived());
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \<= operator of *this and \a other
+  *
+  * Example: \include Cwise_less_equal.cpp
+  * Output: \verbinclude Cwise_less_equal.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), operator>=(), operator<()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::less_equal)
+Cwise<ExpressionType>::operator<=(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::less_equal)(_expression(), other.derived());
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \> operator of *this and \a other
+  *
+  * Example: \include Cwise_greater.cpp
+  * Output: \verbinclude Cwise_greater.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), operator>=(), operator<()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater)
+Cwise<ExpressionType>::operator>(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater)(_expression(), other.derived());
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \>= operator of *this and \a other
+  *
+  * Example: \include Cwise_greater_equal.cpp
+  * Output: \verbinclude Cwise_greater_equal.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), operator>(), operator<=()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater_equal)
+Cwise<ExpressionType>::operator>=(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::greater_equal)(_expression(), other.derived());
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise == operator of *this and \a other
+  *
+  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
+  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
+  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
+  * MatrixBase::isMuchSmallerThan().
+  *
+  * Example: \include Cwise_equal_equal.cpp
+  * Output: \verbinclude Cwise_equal_equal.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), MatrixBase::isApprox(), MatrixBase::isMuchSmallerThan()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::equal_to)
+Cwise<ExpressionType>::operator==(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::equal_to)(_expression(), other.derived());
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise != operator of *this and \a other
+  *
+  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
+  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
+  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
+  * MatrixBase::isMuchSmallerThan().
+  *
+  * Example: \include Cwise_not_equal.cpp
+  * Output: \verbinclude Cwise_not_equal.out
+  *
+  * \sa MatrixBase::all(), MatrixBase::any(), MatrixBase::isApprox(), MatrixBase::isMuchSmallerThan()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline const EIGEN_CWISE_BINOP_RETURN_TYPE(std::not_equal_to)
+Cwise<ExpressionType>::operator!=(const MatrixBase<OtherDerived> &other) const
+{
+  return EIGEN_CWISE_BINOP_RETURN_TYPE(std::not_equal_to)(_expression(), other.derived());
+}
+
+// comparisons to scalar value
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \< operator of *this and a scalar \a s
+  *
+  * \sa operator<(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less)
+Cwise<ExpressionType>::operator<(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \<= operator of *this and a scalar \a s
+  *
+  * \sa operator<=(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less_equal)
+Cwise<ExpressionType>::operator<=(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::less_equal)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \> operator of *this and a scalar \a s
+  *
+  * \sa operator>(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater)
+Cwise<ExpressionType>::operator>(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise \>= operator of *this and a scalar \a s
+  *
+  * \sa operator>=(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater_equal)
+Cwise<ExpressionType>::operator>=(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::greater_equal)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise == operator of *this and a scalar \a s
+  *
+  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
+  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
+  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
+  * MatrixBase::isMuchSmallerThan().
+  *
+  * \sa operator==(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::equal_to)
+Cwise<ExpressionType>::operator==(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::equal_to)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+/** \array_module
+  * 
+  * \returns an expression of the coefficient-wise != operator of *this and a scalar \a s
+  *
+  * \warning this performs an exact comparison, which is generally a bad idea with floating-point types.
+  * In order to check for equality between two vectors or matrices with floating-point coefficients, it is
+  * generally a far better idea to use a fuzzy comparison as provided by MatrixBase::isApprox() and
+  * MatrixBase::isMuchSmallerThan().
+  *
+  * \sa operator!=(const MatrixBase<OtherDerived> &) const
+  */
+template<typename ExpressionType>
+inline const EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::not_equal_to)
+Cwise<ExpressionType>::operator!=(Scalar s) const
+{
+  return EIGEN_CWISE_COMP_TO_SCALAR_RETURN_TYPE(std::not_equal_to)(_expression(),
+            typename ExpressionType::ConstantReturnType(_expression().rows(), _expression().cols(), s));
+}
+
+// scalar addition
+
+/** \array_module
+  *
+  * \returns an expression of \c *this with each coeff incremented by the constant \a scalar
+  *
+  * Example: \include Cwise_plus.cpp
+  * Output: \verbinclude Cwise_plus.out
+  *
+  * \sa operator+=(), operator-()
+  */
+template<typename ExpressionType>
+inline const typename Cwise<ExpressionType>::ScalarAddReturnType
+Cwise<ExpressionType>::operator+(const Scalar& scalar) const
+{
+  return typename Cwise<ExpressionType>::ScalarAddReturnType(m_matrix, ei_scalar_add_op<Scalar>(scalar));
+}
+
+/** \array_module
+  *
+  * Adds the given \a scalar to each coeff of this expression.
+  *
+  * Example: \include Cwise_plus_equal.cpp
+  * Output: \verbinclude Cwise_plus_equal.out
+  *
+  * \sa operator+(), operator-=()
+  */
+template<typename ExpressionType>
+inline ExpressionType& Cwise<ExpressionType>::operator+=(const Scalar& scalar)
+{
+  return m_matrix.const_cast_derived() = *this + scalar;
+}
+
+/** \array_module
+  *
+  * \returns an expression of \c *this with each coeff decremented by the constant \a scalar
+  *
+  * Example: \include Cwise_minus.cpp
+  * Output: \verbinclude Cwise_minus.out
+  *
+  * \sa operator+(), operator-=()
+  */
+template<typename ExpressionType>
+inline const typename Cwise<ExpressionType>::ScalarAddReturnType
+Cwise<ExpressionType>::operator-(const Scalar& scalar) const
+{
+  return *this + (-scalar);
+}
+
+/** \array_module
+  *
+  * Substracts the given \a scalar from each coeff of this expression.
+  *
+  * Example: \include Cwise_minus_equal.cpp
+  * Output: \verbinclude Cwise_minus_equal.out
+  *
+  * \sa operator+=(), operator-()
+  */
+
+template<typename ExpressionType>
+inline ExpressionType& Cwise<ExpressionType>::operator-=(const Scalar& scalar)
+{
+  return m_matrix.const_cast_derived() = *this - scalar;
+}
+
+#endif // EIGEN_ARRAY_CWISE_OPERATORS_H
diff --git a/extern/Eigen2/Eigen/src/Array/Functors.h b/extern/Eigen2/Eigen/src/Array/Functors.h
new file mode 100644 (file)
index 0000000..c2c325a
--- /dev/null
@@ -0,0 +1,309 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_ARRAY_FUNCTORS_H
+#define EIGEN_ARRAY_FUNCTORS_H
+
+/** \internal
+  * \array_module
+  *
+  * \brief Template functor to add a scalar to a fixed other one
+  *
+  * \sa class CwiseUnaryOp, Array::operator+
+  */
+/* If you wonder why doing the ei_pset1() in packetOp() is an optimization check ei_scalar_multiple_op */
+template<typename Scalar>
+struct ei_scalar_add_op {
+  typedef typename ei_packet_traits<Scalar>::type PacketScalar;
+  // FIXME default copy constructors seems bugged with std::complex<>
+  inline ei_scalar_add_op(const ei_scalar_add_op& other) : m_other(other.m_other) { }
+  inline ei_scalar_add_op(const Scalar& other) : m_other(other) { }
+  inline Scalar operator() (const Scalar& a) const { return a + m_other; }
+  inline const PacketScalar packetOp(const PacketScalar& a) const
+  { return ei_padd(a, ei_pset1(m_other)); }
+  const Scalar m_other;
+private:
+  ei_scalar_add_op& operator=(const ei_scalar_add_op&);
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_add_op<Scalar> >
+{ enum { Cost = NumTraits<Scalar>::AddCost, PacketAccess = ei_packet_traits<Scalar>::size>1 }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the square root of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::sqrt()
+  */
+template<typename Scalar> struct ei_scalar_sqrt_op EIGEN_EMPTY_STRUCT {
+  inline const Scalar operator() (const Scalar& a) const { return ei_sqrt(a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_sqrt_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the exponential of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::exp()
+  */
+template<typename Scalar> struct ei_scalar_exp_op EIGEN_EMPTY_STRUCT {
+  inline const Scalar operator() (const Scalar& a) const { return ei_exp(a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_exp_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the logarithm of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::log()
+  */
+template<typename Scalar> struct ei_scalar_log_op EIGEN_EMPTY_STRUCT {
+  inline const Scalar operator() (const Scalar& a) const { return ei_log(a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_log_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the cosine of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::cos()
+  */
+template<typename Scalar> struct ei_scalar_cos_op EIGEN_EMPTY_STRUCT {
+  inline const Scalar operator() (const Scalar& a) const { return ei_cos(a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_cos_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the sine of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::sin()
+  */
+template<typename Scalar> struct ei_scalar_sin_op EIGEN_EMPTY_STRUCT {
+  inline const Scalar operator() (const Scalar& a) const { return ei_sin(a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_sin_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to raise a scalar to a power
+  *
+  * \sa class CwiseUnaryOp, Cwise::pow
+  */
+template<typename Scalar>
+struct ei_scalar_pow_op {
+  // FIXME default copy constructors seems bugged with std::complex<>
+  inline ei_scalar_pow_op(const ei_scalar_pow_op& other) : m_exponent(other.m_exponent) { }
+  inline ei_scalar_pow_op(const Scalar& exponent) : m_exponent(exponent) {}
+  inline Scalar operator() (const Scalar& a) const { return ei_pow(a, m_exponent); }
+  const Scalar m_exponent;
+private:
+  ei_scalar_pow_op& operator=(const ei_scalar_pow_op&);
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_pow_op<Scalar> >
+{ enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the inverse of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::inverse()
+  */
+template<typename Scalar>
+struct ei_scalar_inverse_op {
+  inline Scalar operator() (const Scalar& a) const { return Scalar(1)/a; }
+  template<typename PacketScalar>
+  inline const PacketScalar packetOp(const PacketScalar& a) const
+  { return ei_pdiv(ei_pset1(Scalar(1)),a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_inverse_op<Scalar> >
+{ enum { Cost = NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the square of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::square()
+  */
+template<typename Scalar>
+struct ei_scalar_square_op {
+  inline Scalar operator() (const Scalar& a) const { return a*a; }
+  template<typename PacketScalar>
+  inline const PacketScalar packetOp(const PacketScalar& a) const
+  { return ei_pmul(a,a); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_square_op<Scalar> >
+{ enum { Cost = NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
+
+/** \internal
+  *
+  * \array_module
+  *
+  * \brief Template functor to compute the cube of a scalar
+  *
+  * \sa class CwiseUnaryOp, Cwise::cube()
+  */
+template<typename Scalar>
+struct ei_scalar_cube_op {
+  inline Scalar operator() (const Scalar& a) const { return a*a*a; }
+  template<typename PacketScalar>
+  inline const PacketScalar packetOp(const PacketScalar& a) const
+  { return ei_pmul(a,ei_pmul(a,a)); }
+};
+template<typename Scalar>
+struct ei_functor_traits<ei_scalar_cube_op<Scalar> >
+{ enum { Cost = 2*NumTraits<Scalar>::MulCost, PacketAccess = int(ei_packet_traits<Scalar>::size)>1 }; };
+
+// default ei_functor_traits for STL functors:
+
+template<typename T>
+struct ei_functor_traits<std::multiplies<T> >
+{ enum { Cost = NumTraits<T>::MulCost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::divides<T> >
+{ enum { Cost = NumTraits<T>::MulCost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::plus<T> >
+{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::minus<T> >
+{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::negate<T> >
+{ enum { Cost = NumTraits<T>::AddCost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::logical_or<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::logical_and<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::logical_not<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::greater<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::less<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::greater_equal<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::less_equal<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::equal_to<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::not_equal_to<T> >
+{ enum { Cost = 1, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::binder2nd<T> >
+{ enum { Cost = ei_functor_traits<T>::Cost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::binder1st<T> >
+{ enum { Cost = ei_functor_traits<T>::Cost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::unary_negate<T> >
+{ enum { Cost = 1 + ei_functor_traits<T>::Cost, PacketAccess = false }; };
+
+template<typename T>
+struct ei_functor_traits<std::binary_negate<T> >
+{ enum { Cost = 1 + ei_functor_traits<T>::Cost, PacketAccess = false }; };
+
+#ifdef EIGEN_STDEXT_SUPPORT
+
+template<typename T0,typename T1>
+struct ei_functor_traits<std::project1st<T0,T1> >
+{ enum { Cost = 0, PacketAccess = false }; };
+
+template<typename T0,typename T1>
+struct ei_functor_traits<std::project2nd<T0,T1> >
+{ enum { Cost = 0, PacketAccess = false }; };
+
+template<typename T0,typename T1>
+struct ei_functor_traits<std::select2nd<std::pair<T0,T1> > >
+{ enum { Cost = 0, PacketAccess = false }; };
+
+template<typename T0,typename T1>
+struct ei_functor_traits<std::select1st<std::pair<T0,T1> > >
+{ enum { Cost = 0, PacketAccess = false }; };
+
+template<typename T0,typename T1>
+struct ei_functor_traits<std::unary_compose<T0,T1> >
+{ enum { Cost = ei_functor_traits<T0>::Cost + ei_functor_traits<T1>::Cost, PacketAccess = false }; };
+
+template<typename T0,typename T1,typename T2>
+struct ei_functor_traits<std::binary_compose<T0,T1,T2> >
+{ enum { Cost = ei_functor_traits<T0>::Cost + ei_functor_traits<T1>::Cost + ei_functor_traits<T2>::Cost, PacketAccess = false }; };
+
+#endif // EIGEN_STDEXT_SUPPORT
+
+#endif // EIGEN_ARRAY_FUNCTORS_H
diff --git a/extern/Eigen2/Eigen/src/Array/Norms.h b/extern/Eigen2/Eigen/src/Array/Norms.h
new file mode 100644 (file)
index 0000000..6b92e6a
--- /dev/null
@@ -0,0 +1,80 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_ARRAY_NORMS_H
+#define EIGEN_ARRAY_NORMS_H
+
+template<typename Derived, int p>
+struct ei_lpNorm_selector
+{
+  typedef typename NumTraits<typename ei_traits<Derived>::Scalar>::Real RealScalar;
+  inline static RealScalar run(const MatrixBase<Derived>& m)
+  {
+    return ei_pow(m.cwise().abs().cwise().pow(p).sum(), RealScalar(1)/p);
+  }
+};
+
+template<typename Derived>
+struct ei_lpNorm_selector<Derived, 1>
+{
+  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
+  {
+    return m.cwise().abs().sum();
+  }
+};
+
+template<typename Derived>
+struct ei_lpNorm_selector<Derived, 2>
+{
+  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
+  {
+    return m.norm();
+  }
+};
+
+template<typename Derived>
+struct ei_lpNorm_selector<Derived, Infinity>
+{
+  inline static typename NumTraits<typename ei_traits<Derived>::Scalar>::Real run(const MatrixBase<Derived>& m)
+  {
+    return m.cwise().abs().maxCoeff();
+  }
+};
+
+/** \array_module
+  * 
+  * \returns the \f$ \ell^p \f$ norm of *this, that is, returns the p-th root of the sum of the p-th powers of the absolute values
+  *          of the coefficients of *this. If \a p is the special value \a Eigen::Infinity, this function returns the \f$ \ell^p\infty \f$
+  *          norm, that is the maximum of the absolute values of the coefficients of *this.
+  *
+  * \sa norm()
+  */
+template<typename Derived>
+template<int p>
+inline typename NumTraits<typename ei_traits<Derived>::Scalar>::Real MatrixBase<Derived>::lpNorm() const
+{
+  return ei_lpNorm_selector<Derived, p>::run(*this);
+}
+
+#endif // EIGEN_ARRAY_NORMS_H
diff --git a/extern/Eigen2/Eigen/src/Array/PartialRedux.h b/extern/Eigen2/Eigen/src/Array/PartialRedux.h
new file mode 100644 (file)
index 0000000..3a052ca
--- /dev/null
@@ -0,0 +1,347 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
+// Copyright (C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_PARTIAL_REDUX_H
+#define EIGEN_PARTIAL_REDUX_H
+
+/** \array_module \ingroup Array
+  *
+  * \class PartialReduxExpr
+  *
+  * \brief Generic expression of a partially reduxed matrix
+  *
+  * \param MatrixType the type of the matrix we are applying the redux operation
+  * \param MemberOp type of the member functor
+  * \param Direction indicates the direction of the redux (Vertical or Horizontal)
+  *
+  * This class represents an expression of a partial redux operator of a matrix.
+  * It is the return type of PartialRedux functions,
+  * and most of the time this is the only way it is used.
+  *
+  * \sa class PartialRedux
+  */
+
+template< typename MatrixType, typename MemberOp, int Direction>
+class PartialReduxExpr;
+
+template<typename MatrixType, typename MemberOp, int Direction>
+struct ei_traits<PartialReduxExpr<MatrixType, MemberOp, Direction> >
+{
+  typedef typename MemberOp::result_type Scalar;
+  typedef typename MatrixType::Scalar InputScalar;
+  typedef typename ei_nested<MatrixType>::type MatrixTypeNested;
+  typedef typename ei_cleantype<MatrixTypeNested>::type _MatrixTypeNested;
+  enum {
+    RowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::RowsAtCompileTime,
+    ColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::ColsAtCompileTime,
+    MaxRowsAtCompileTime = Direction==Vertical   ? 1 : MatrixType::MaxRowsAtCompileTime,
+    MaxColsAtCompileTime = Direction==Horizontal ? 1 : MatrixType::MaxColsAtCompileTime,
+    Flags = (unsigned int)_MatrixTypeNested::Flags & HereditaryBits,
+    TraversalSize = Direction==Vertical ? RowsAtCompileTime : ColsAtCompileTime
+  };
+  #if EIGEN_GNUC_AT_LEAST(3,4)
+  typedef typename MemberOp::template Cost<InputScalar,int(TraversalSize)> CostOpType;
+  #else
+  typedef typename MemberOp::template Cost<InputScalar,TraversalSize> CostOpType;
+  #endif
+  enum {
+    CoeffReadCost = TraversalSize * ei_traits<_MatrixTypeNested>::CoeffReadCost + int(CostOpType::value)
+  };
+};
+
+template< typename MatrixType, typename MemberOp, int Direction>
+class PartialReduxExpr : ei_no_assignment_operator,
+  public MatrixBase<PartialReduxExpr<MatrixType, MemberOp, Direction> >
+{
+  public:
+
+    EIGEN_GENERIC_PUBLIC_INTERFACE(PartialReduxExpr)
+    typedef typename ei_traits<PartialReduxExpr>::MatrixTypeNested MatrixTypeNested;
+    typedef typename ei_traits<PartialReduxExpr>::_MatrixTypeNested _MatrixTypeNested;
+
+    PartialReduxExpr(const MatrixType& mat, const MemberOp& func = MemberOp())
+      : m_matrix(mat), m_functor(func) {}
+
+    int rows() const { return (Direction==Vertical   ? 1 : m_matrix.rows()); }
+    int cols() const { return (Direction==Horizontal ? 1 : m_matrix.cols()); }
+
+    const Scalar coeff(int i, int j) const
+    {
+      if (Direction==Vertical)
+        return m_functor(m_matrix.col(j));
+      else
+        return m_functor(m_matrix.row(i));
+    }
+
+  protected:
+    const MatrixTypeNested m_matrix;
+    const MemberOp m_functor;
+};
+
+#define EIGEN_MEMBER_FUNCTOR(MEMBER,COST)                           \
+  template <typename ResultType>                                    \
+  struct ei_member_##MEMBER EIGEN_EMPTY_STRUCT {                    \
+    typedef ResultType result_type;                                 \
+    template<typename Scalar, int Size> struct Cost                 \
+    { enum { value = COST }; };                                     \
+    template<typename Derived>                                      \
+    inline ResultType operator()(const MatrixBase<Derived>& mat) const     \
+    { return mat.MEMBER(); } \
+  }
+
+EIGEN_MEMBER_FUNCTOR(squaredNorm, Size * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(norm, (Size+5) * NumTraits<Scalar>::MulCost + (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(sum, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(minCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(maxCoeff, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(all, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(any, (Size-1)*NumTraits<Scalar>::AddCost);
+EIGEN_MEMBER_FUNCTOR(count, (Size-1)*NumTraits<Scalar>::AddCost);
+
+/** \internal */
+template <typename BinaryOp, typename Scalar>
+struct ei_member_redux {
+  typedef typename ei_result_of<
+                     BinaryOp(Scalar)
+                   >::type  result_type;
+  template<typename _Scalar, int Size> struct Cost
+  { enum { value = (Size-1) * ei_functor_traits<BinaryOp>::Cost }; };
+  ei_member_redux(const BinaryOp func) : m_functor(func) {}
+  template<typename Derived>
+  inline result_type operator()(const MatrixBase<Derived>& mat) const
+  { return mat.redux(m_functor); }
+  const BinaryOp m_functor;
+private:
+  ei_member_redux& operator=(const ei_member_redux&);
+};
+
+/** \array_module \ingroup Array
+  *
+  * \class PartialRedux
+  *
+  * \brief Pseudo expression providing partial reduction operations
+  *
+  * \param ExpressionType the type of the object on which to do partial reductions
+  * \param Direction indicates the direction of the redux (Vertical or Horizontal)
+  *
+  * This class represents a pseudo expression with partial reduction features.
+  * It is the return type of MatrixBase::colwise() and MatrixBase::rowwise()
+  * and most of the time this is the only way it is used.
+  *
+  * Example: \include MatrixBase_colwise.cpp
+  * Output: \verbinclude MatrixBase_colwise.out
+  *
+  * \sa MatrixBase::colwise(), MatrixBase::rowwise(), class PartialReduxExpr
+  */
+template<typename ExpressionType, int Direction> class PartialRedux
+{
+  public:
+
+    typedef typename ei_traits<ExpressionType>::Scalar Scalar;
+    typedef typename ei_meta_if<ei_must_nest_by_value<ExpressionType>::ret,
+        ExpressionType, const ExpressionType&>::ret ExpressionTypeNested;
+
+    template<template<typename _Scalar> class Functor> struct ReturnType
+    {
+      typedef PartialReduxExpr<ExpressionType,
+                               Functor<typename ei_traits<ExpressionType>::Scalar>,
+                               Direction
+                              > Type;
+    };
+
+    template<typename BinaryOp> struct ReduxReturnType
+    {
+      typedef PartialReduxExpr<ExpressionType,
+                               ei_member_redux<BinaryOp,typename ei_traits<ExpressionType>::Scalar>,
+                               Direction
+                              > Type;
+    };
+
+    typedef typename ExpressionType::PlainMatrixType CrossReturnType;
+    
+    inline PartialRedux(const ExpressionType& matrix) : m_matrix(matrix) {}
+
+    /** \internal */
+    inline const ExpressionType& _expression() const { return m_matrix; }
+
+    template<typename BinaryOp>
+    const typename ReduxReturnType<BinaryOp>::Type
+    redux(const BinaryOp& func = BinaryOp()) const;
+
+    /** \returns a row (or column) vector expression of the smallest coefficient
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_minCoeff.cpp
+      * Output: \verbinclude PartialRedux_minCoeff.out
+      *
+      * \sa MatrixBase::minCoeff() */
+    const typename ReturnType<ei_member_minCoeff>::Type minCoeff() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression of the largest coefficient
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_maxCoeff.cpp
+      * Output: \verbinclude PartialRedux_maxCoeff.out
+      *
+      * \sa MatrixBase::maxCoeff() */
+    const typename ReturnType<ei_member_maxCoeff>::Type maxCoeff() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression of the squared norm
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_squaredNorm.cpp
+      * Output: \verbinclude PartialRedux_squaredNorm.out
+      *
+      * \sa MatrixBase::squaredNorm() */
+    const typename ReturnType<ei_member_squaredNorm>::Type squaredNorm() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression of the norm
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_norm.cpp
+      * Output: \verbinclude PartialRedux_norm.out
+      *
+      * \sa MatrixBase::norm() */
+    const typename ReturnType<ei_member_norm>::Type norm() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression of the sum
+      * of each column (or row) of the referenced expression.
+      *
+      * Example: \include PartialRedux_sum.cpp
+      * Output: \verbinclude PartialRedux_sum.out
+      *
+      * \sa MatrixBase::sum() */
+    const typename ReturnType<ei_member_sum>::Type sum() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression representing
+      * whether \b all coefficients of each respective column (or row) are \c true.
+      *
+      * \sa MatrixBase::all() */
+    const typename ReturnType<ei_member_all>::Type all() const
+    { return _expression(); }
+
+    /** \returns a row (or column) vector expression representing
+      * whether \b at \b least one coefficient of each respective column (or row) is \c true.
+      *
+      * \sa MatrixBase::any() */
+    const typename ReturnType<ei_member_any>::Type any() const
+    { return _expression(); }
+    
+    /** \returns a row (or column) vector expression representing
+      * the number of \c true coefficients of each respective column (or row).
+      *
+      * Example: \include PartialRedux_count.cpp
+      * Output: \verbinclude PartialRedux_count.out
+      *
+      * \sa MatrixBase::count() */
+    const PartialReduxExpr<ExpressionType, ei_member_count<int>, Direction> count() const
+    { return _expression(); }
+
+    /** \returns a 3x3 matrix expression of the cross product
+      * of each column or row of the referenced expression with the \a other vector.
+      *
+      * \geometry_module
+      *
+      * \sa MatrixBase::cross() */
+    template<typename OtherDerived>
+    const CrossReturnType cross(const MatrixBase<OtherDerived>& other) const
+    {
+      EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(CrossReturnType,3,3)
+      EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,3)
+      EIGEN_STATIC_ASSERT((ei_is_same_type<Scalar, typename OtherDerived::Scalar>::ret),
+        YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY)
+
+      if(Direction==Vertical)
+        return (CrossReturnType()
+                                 << _expression().col(0).cross(other),
+                                    _expression().col(1).cross(other),
+                                    _expression().col(2).cross(other)).finished();
+      else
+        return (CrossReturnType() 
+                                 << _expression().row(0).cross(other),
+                                    _expression().row(1).cross(other),
+                                    _expression().row(2).cross(other)).finished();
+    }
+
+  protected:
+    ExpressionTypeNested m_matrix;
+
+  private:
+    PartialRedux& operator=(const PartialRedux&);
+};
+
+/** \array_module
+  *
+  * \returns a PartialRedux wrapper of *this providing additional partial reduction operations
+  *
+  * Example: \include MatrixBase_colwise.cpp
+  * Output: \verbinclude MatrixBase_colwise.out
+  *
+  * \sa rowwise(), class PartialRedux
+  */
+template<typename Derived>
+inline const PartialRedux<Derived,Vertical>
+MatrixBase<Derived>::colwise() const
+{
+  return derived();
+}
+
+/** \array_module
+  *
+  * \returns a PartialRedux wrapper of *this providing additional partial reduction operations
+  *
+  * Example: \include MatrixBase_rowwise.cpp
+  * Output: \verbinclude MatrixBase_rowwise.out
+  *
+  * \sa colwise(), class PartialRedux
+  */
+template<typename Derived>
+inline const PartialRedux<Derived,Horizontal>
+MatrixBase<Derived>::rowwise() const
+{
+  return derived();
+}
+
+/** \returns a row or column vector expression of \c *this reduxed by \a func
+  *
+  * The template parameter \a BinaryOp is the type of the functor
+  * of the custom redux operator. Note that func must be an associative operator.
+  *
+  * \sa class PartialRedux, MatrixBase::colwise(), MatrixBase::rowwise()
+  */
+template<typename ExpressionType, int Direction>
+template<typename BinaryOp>
+const typename PartialRedux<ExpressionType,Direction>::template ReduxReturnType<BinaryOp>::Type
+PartialRedux<ExpressionType,Direction>::redux(const BinaryOp& func) const
+{
+  return typename ReduxReturnType<BinaryOp>::Type(_expression(), func);
+}
+
+#endif // EIGEN_PARTIAL_REDUX_H
similarity index 52%
rename from extern/Eigen3/Eigen/src/Core/Random.h
rename to extern/Eigen2/Eigen/src/Array/Random.h
index b7d9010..9185fe4 100644 (file)
@@ -1,7 +1,7 @@
 // This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
+// for linear algebra. Eigen itself is part of the KDE project.
 //
-// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
 //
 // Eigen is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 #ifndef EIGEN_RANDOM_H
 #define EIGEN_RANDOM_H
 
-namespace internal {
-
-template<typename Scalar> struct scalar_random_op {
-  EIGEN_EMPTY_STRUCT_CTOR(scalar_random_op)
-  template<typename Index>
-  inline const Scalar operator() (Index, Index = 0) const { return random<Scalar>(); }
+template<typename Scalar> struct ei_scalar_random_op EIGEN_EMPTY_STRUCT {
+  inline ei_scalar_random_op(void) {}
+  inline const Scalar operator() (int, int) const { return ei_random<Scalar>(); }
 };
-
 template<typename Scalar>
-struct functor_traits<scalar_random_op<Scalar> >
+struct ei_functor_traits<ei_scalar_random_op<Scalar> >
 { enum { Cost = 5 * NumTraits<Scalar>::MulCost, PacketAccess = false, IsRepeatable = false }; };
 
-} // end namespace internal
-
-/** \returns a random matrix expression
+/** \array_module
+  * 
+  * \returns a random matrix (not an expression, the matrix is immediately evaluated).
   *
   * The parameters \a rows and \a cols are the number of rows and of columns of
   * the returned matrix. Must be compatible with this MatrixBase type.
   *
   * This variant is meant to be used for dynamic-size matrix types. For fixed-size types,
-  * it is redundant to pass \a rows and \a cols as arguments, so Random() should be used
+  * it is redundant to pass \a rows and \a cols as arguments, so ei_random() should be used
   * instead.
   *
+  * \addexample RandomExample \label How to create a matrix with random coefficients
+  *
   * Example: \include MatrixBase_random_int_int.cpp
   * Output: \verbinclude MatrixBase_random_int_int.out
   *
-  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
-  * a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
-  * behavior with expressions involving random matrices.
-  *
-  * \sa MatrixBase::setRandom(), MatrixBase::Random(Index), MatrixBase::Random()
+  * \sa MatrixBase::setRandom(), MatrixBase::Random(int), MatrixBase::Random()
   */
 template<typename Derived>
-inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
-DenseBase<Derived>::Random(Index rows, Index cols)
+inline const CwiseNullaryOp<ei_scalar_random_op<typename ei_traits<Derived>::Scalar>, Derived>
+MatrixBase<Derived>::Random(int rows, int cols)
 {
-  return NullaryExpr(rows, cols, internal::scalar_random_op<Scalar>());
+  return NullaryExpr(rows, cols, ei_scalar_random_op<Scalar>());
 }
 
-/** \returns a random vector expression
+/** \array_module
+  * 
+  * \returns a random vector (not an expression, the vector is immediately evaluated).
   *
   * The parameter \a size is the size of the returned vector.
   * Must be compatible with this MatrixBase type.
@@ -72,26 +68,25 @@ DenseBase<Derived>::Random(Index rows, Index cols)
   * \only_for_vectors
   *
   * This variant is meant to be used for dynamic-size vector types. For fixed-size types,
-  * it is redundant to pass \a size as argument, so Random() should be used
+  * it is redundant to pass \a size as argument, so ei_random() should be used
   * instead.
   *
   * Example: \include MatrixBase_random_int.cpp
   * Output: \verbinclude MatrixBase_random_int.out
   *
-  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
-  * a temporary vector whenever it is nested in a larger expression. This prevents unexpected
-  * behavior with expressions involving random matrices.
-  *
-  * \sa MatrixBase::setRandom(), MatrixBase::Random(Index,Index), MatrixBase::Random()
+  * \sa MatrixBase::setRandom(), MatrixBase::Random(int,int), MatrixBase::Random()
   */
 template<typename Derived>
-inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
-DenseBase<Derived>::Random(Index size)
+inline const CwiseNullaryOp<ei_scalar_random_op<typename ei_traits<Derived>::Scalar>, Derived>
+MatrixBase<Derived>::Random(int size)
 {
-  return NullaryExpr(size, internal::scalar_random_op<Scalar>());
+  return NullaryExpr(size, ei_scalar_random_op<Scalar>());
 }
 
-/** \returns a fixed-size random matrix or vector expression
+/** \array_module
+  * 
+  * \returns a fixed-size random matrix or vector
+  * (not an expression, the matrix is immediately evaluated).
   *
   * This variant is only for fixed-size MatrixBase types. For dynamic-size types, you
   * need to use the variants taking size arguments.
@@ -99,28 +94,26 @@ DenseBase<Derived>::Random(Index size)
   * Example: \include MatrixBase_random.cpp
   * Output: \verbinclude MatrixBase_random.out
   *
-  * This expression has the "evaluate before nesting" flag so that it will be evaluated into
-  * a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
-  * behavior with expressions involving random matrices.
-  *
-  * \sa MatrixBase::setRandom(), MatrixBase::Random(Index,Index), MatrixBase::Random(Index)
+  * \sa MatrixBase::setRandom(), MatrixBase::Random(int,int), MatrixBase::Random(int)
   */
 template<typename Derived>
-inline const CwiseNullaryOp<internal::scalar_random_op<typename internal::traits<Derived>::Scalar>, Derived>
-DenseBase<Derived>::Random()
+inline const CwiseNullaryOp<ei_scalar_random_op<typename ei_traits<Derived>::Scalar>, Derived>
+MatrixBase<Derived>::Random()
 {
-  return NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_random_op<Scalar>());
+  return NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, ei_scalar_random_op<Scalar>());
 }
 
-/** Sets all coefficients in this expression to random values.
+/** \array_module
+  * 
+  * Sets all coefficients in this expression to random values.
   *
   * Example: \include MatrixBase_setRandom.cpp
   * Output: \verbinclude MatrixBase_setRandom.out
   *
-  * \sa class CwiseNullaryOp, setRandom(Index), setRandom(Index,Index)
+  * \sa class CwiseNullaryOp, setRandom(int), setRandom(int,int)
   */
 template<typename Derived>
-inline Derived& DenseBase<Derived>::setRandom()
+inline Derived& MatrixBase<Derived>::setRandom()
 {
   return *this = Random(rows(), cols());
 }
@@ -132,11 +125,11 @@ inline Derived& DenseBase<Derived>::setRandom()
   * Example: \include Matrix_setRandom_int.cpp
   * Output: \verbinclude Matrix_setRandom_int.out
   *
-  * \sa MatrixBase::setRandom(), setRandom(Index,Index), class CwiseNullaryOp, MatrixBase::Random()
+  * \sa MatrixBase::setRandom(), setRandom(int,int), class CwiseNullaryOp, MatrixBase::Random()
   */
-template<typename Derived>
-EIGEN_STRONG_INLINE Derived&
-PlainObjectBase<Derived>::setRandom(Index size)
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+EIGEN_STRONG_INLINE Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>&
+Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::setRandom(int size)
 {
   resize(size);
   return setRandom();
@@ -150,11 +143,11 @@ PlainObjectBase<Derived>::setRandom(Index size)
   * Example: \include Matrix_setRandom_int_int.cpp
   * Output: \verbinclude Matrix_setRandom_int_int.out
   *
-  * \sa MatrixBase::setRandom(), setRandom(Index), class CwiseNullaryOp, MatrixBase::Random()
+  * \sa MatrixBase::setRandom(), setRandom(int), class CwiseNullaryOp, MatrixBase::Random()
   */
-template<typename Derived>
-EIGEN_STRONG_INLINE Derived&
-PlainObjectBase<Derived>::setRandom(Index rows, Index cols)
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+EIGEN_STRONG_INLINE Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>&
+Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols>::setRandom(int rows, int cols)
 {
   resize(rows, cols);
   return setRandom();
similarity index 59%
rename from extern/Eigen3/Eigen/src/Core/Select.h
rename to extern/Eigen2/Eigen/src/Array/Select.h
index d0cd66a..9dc3fb1 100644 (file)
@@ -1,7 +1,7 @@
 // This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
+// for linear algebra. Eigen itself is part of the KDE project.
 //
-// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
 //
 // Eigen is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -25,8 +25,9 @@
 #ifndef EIGEN_SELECT_H
 #define EIGEN_SELECT_H
 
-/** \class Select
-  * \ingroup Core_Module
+/** \array_module \ingroup Array
+  *
+  * \class Select
   *
   * \brief Expression of a coefficient wise version of the C++ ternary operator ?:
   *
   * \param ElseMatrixType the type of the \em else expression
   *
   * This class represents an expression of a coefficient wise version of the C++ ternary operator ?:.
-  * It is the return type of DenseBase::select() and most of the time this is the only way it is used.
+  * It is the return type of MatrixBase::select() and most of the time this is the only way it is used.
   *
-  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const
+  * \sa MatrixBase::select(const MatrixBase<ThenDerived>&, const MatrixBase<ElseDerived>&) const
   */
 
-namespace internal {
 template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
-struct traits<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
- : traits<ThenMatrixType>
+struct ei_traits<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
 {
-  typedef typename traits<ThenMatrixType>::Scalar Scalar;
-  typedef Dense StorageKind;
-  typedef typename traits<ThenMatrixType>::XprKind XprKind;
+  typedef typename ei_traits<ThenMatrixType>::Scalar Scalar;
   typedef typename ConditionMatrixType::Nested ConditionMatrixNested;
   typedef typename ThenMatrixType::Nested ThenMatrixNested;
   typedef typename ElseMatrixType::Nested ElseMatrixNested;
@@ -57,43 +54,41 @@ struct traits<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
     MaxRowsAtCompileTime = ConditionMatrixType::MaxRowsAtCompileTime,
     MaxColsAtCompileTime = ConditionMatrixType::MaxColsAtCompileTime,
     Flags = (unsigned int)ThenMatrixType::Flags & ElseMatrixType::Flags & HereditaryBits,
-    CoeffReadCost = traits<typename remove_all<ConditionMatrixNested>::type>::CoeffReadCost
-                  + EIGEN_SIZE_MAX(traits<typename remove_all<ThenMatrixNested>::type>::CoeffReadCost,
-                                   traits<typename remove_all<ElseMatrixNested>::type>::CoeffReadCost)
+       CoeffReadCost = ei_traits<typename ei_cleantype<ConditionMatrixNested>::type>::CoeffReadCost
+       + EIGEN_ENUM_MAX(ei_traits<typename ei_cleantype<ThenMatrixNested>::type>::CoeffReadCost,
+                        ei_traits<typename ei_cleantype<ElseMatrixNested>::type>::CoeffReadCost)
   };
 };
-}
 
 template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType>
-class Select : internal::no_assignment_operator,
-  public internal::dense_xpr_base< Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >::type
+class Select : ei_no_assignment_operator,
+  public MatrixBase<Select<ConditionMatrixType, ThenMatrixType, ElseMatrixType> >
 {
   public:
 
-    typedef typename internal::dense_xpr_base<Select>::type Base;
-    EIGEN_DENSE_PUBLIC_INTERFACE(Select)
+    EIGEN_GENERIC_PUBLIC_INTERFACE(Select)
 
     Select(const ConditionMatrixType& conditionMatrix,
            const ThenMatrixType& thenMatrix,
            const ElseMatrixType& elseMatrix)
       : m_condition(conditionMatrix), m_then(thenMatrix), m_else(elseMatrix)
     {
-      eigen_assert(m_condition.rows() == m_then.rows() && m_condition.rows() == m_else.rows());
-      eigen_assert(m_condition.cols() == m_then.cols() && m_condition.cols() == m_else.cols());
+      ei_assert(m_condition.rows() == m_then.rows() && m_condition.rows() == m_else.rows());
+      ei_assert(m_condition.cols() == m_then.cols() && m_condition.cols() == m_else.cols());
     }
 
-    Index rows() const { return m_condition.rows(); }
-    Index cols() const { return m_condition.cols(); }
+    int rows() const { return m_condition.rows(); }
+    int cols() const { return m_condition.cols(); }
 
-    const Scalar coeff(Index i, Index j) const
+    const Scalar coeff(int i, int j) const
     {
       if (m_condition.coeff(i,j))
         return m_then.coeff(i,j);
       else
         return m_else.coeff(i,j);
     }
-
-    const Scalar coeff(Index i) const
+    
+    const Scalar coeff(int i) const
     {
       if (m_condition.coeff(i))
         return m_then.coeff(i);
@@ -108,7 +103,9 @@ class Select : internal::no_assignment_operator,
 };
 
 
-/** \returns a matrix where each coefficient (i,j) is equal to \a thenMatrix(i,j)
+/** \array_module
+  *
+  * \returns a matrix where each coefficient (i,j) is equal to \a thenMatrix(i,j)
   * if \c *this(i,j), and \a elseMatrix(i,j) otherwise.
   *
   * Example: \include MatrixBase_select.cpp
@@ -119,39 +116,43 @@ class Select : internal::no_assignment_operator,
 template<typename Derived>
 template<typename ThenDerived,typename ElseDerived>
 inline const Select<Derived,ThenDerived,ElseDerived>
-DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
-                            const DenseBase<ElseDerived>& elseMatrix) const
+MatrixBase<Derived>::select(const MatrixBase<ThenDerived>& thenMatrix,
+                            const MatrixBase<ElseDerived>& elseMatrix) const
 {
   return Select<Derived,ThenDerived,ElseDerived>(derived(), thenMatrix.derived(), elseMatrix.derived());
 }
 
-/** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
+/** \array_module
+  *
+  * Version of MatrixBase::select(const MatrixBase&, const MatrixBase&) with
   * the \em else expression being a scalar value.
   *
-  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
+  * \sa MatrixBase::select(const MatrixBase<ThenDerived>&, const MatrixBase<ElseDerived>&) const, class Select
   */
 template<typename Derived>
 template<typename ThenDerived>
-inline const Select<Derived,ThenDerived, typename ThenDerived::ConstantReturnType>
-DenseBase<Derived>::select(const DenseBase<ThenDerived>& thenMatrix,
+inline const Select<Derived,ThenDerived, NestByValue<typename ThenDerived::ConstantReturnType> >
+MatrixBase<Derived>::select(const MatrixBase<ThenDerived>& thenMatrix,
                             typename ThenDerived::Scalar elseScalar) const
 {
-  return Select<Derived,ThenDerived,typename ThenDerived::ConstantReturnType>(
+  return Select<Derived,ThenDerived,NestByValue<typename ThenDerived::ConstantReturnType> >(
     derived(), thenMatrix.derived(), ThenDerived::Constant(rows(),cols(),elseScalar));
 }
 
-/** Version of DenseBase::select(const DenseBase&, const DenseBase&) with
+/** \array_module
+  *
+  * Version of MatrixBase::select(const MatrixBase&, const MatrixBase&) with
   * the \em then expression being a scalar value.
   *
-  * \sa DenseBase::select(const DenseBase<ThenDerived>&, const DenseBase<ElseDerived>&) const, class Select
+  * \sa MatrixBase::select(const MatrixBase<ThenDerived>&, const MatrixBase<ElseDerived>&) const, class Select
   */
 template<typename Derived>
 template<typename ElseDerived>
-inline const Select<Derived, typename ElseDerived::ConstantReturnType, ElseDerived >
-DenseBase<Derived>::select(typename ElseDerived::Scalar thenScalar,
-                            const DenseBase<ElseDerived>& elseMatrix) const
+inline const Select<Derived, NestByValue<typename ElseDerived::ConstantReturnType>, ElseDerived >
+MatrixBase<Derived>::select(typename ElseDerived::Scalar thenScalar,
+                            const MatrixBase<ElseDerived>& elseMatrix) const
 {
-  return Select<Derived,typename ElseDerived::ConstantReturnType,ElseDerived>(
+  return Select<Derived,NestByValue<typename ElseDerived::ConstantReturnType>,ElseDerived>(
     derived(), ElseDerived::Constant(rows(),cols(),thenScalar), elseMatrix.derived());
 }
 
@@ -1,7 +1,7 @@
 // This file is part of Eigen, a lightweight C++ template library
-// for linear algebra.
+// for linear algebra. Eigen itself is part of the KDE project.
 //
-// Copyright (C) 2010 Jitse Niesen <jitse@maths.leeds.ac.uk>
+// Copyright (C) 2008 Gael Guennebaud <g.gael@free.fr>
 //
 // Eigen is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License and a copy of the GNU General Public License along with
 // Eigen. If not, see <http://www.gnu.org/licenses/>.
 
-#ifndef EIGEN_EIGENVALUES_COMMON_H
-#define EIGEN_EIGENVALUES_COMMON_H