@smake/eigen 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/eigen/Eigen/AccelerateSupport +52 -0
- package/eigen/Eigen/Cholesky +18 -20
- package/eigen/Eigen/CholmodSupport +28 -28
- package/eigen/Eigen/Core +187 -120
- package/eigen/Eigen/Eigenvalues +16 -13
- package/eigen/Eigen/Geometry +18 -18
- package/eigen/Eigen/Householder +9 -7
- package/eigen/Eigen/IterativeLinearSolvers +8 -4
- package/eigen/Eigen/Jacobi +14 -13
- package/eigen/Eigen/KLUSupport +23 -21
- package/eigen/Eigen/LU +15 -16
- package/eigen/Eigen/MetisSupport +12 -12
- package/eigen/Eigen/OrderingMethods +54 -51
- package/eigen/Eigen/PaStiXSupport +23 -21
- package/eigen/Eigen/PardisoSupport +17 -14
- package/eigen/Eigen/QR +18 -20
- package/eigen/Eigen/QtAlignedMalloc +5 -12
- package/eigen/Eigen/SPQRSupport +21 -14
- package/eigen/Eigen/SVD +23 -17
- package/eigen/Eigen/Sparse +1 -2
- package/eigen/Eigen/SparseCholesky +18 -15
- package/eigen/Eigen/SparseCore +18 -17
- package/eigen/Eigen/SparseLU +9 -9
- package/eigen/Eigen/SparseQR +16 -14
- package/eigen/Eigen/StdDeque +5 -2
- package/eigen/Eigen/StdList +5 -2
- package/eigen/Eigen/StdVector +5 -2
- package/eigen/Eigen/SuperLUSupport +30 -24
- package/eigen/Eigen/ThreadPool +80 -0
- package/eigen/Eigen/UmfPackSupport +19 -17
- package/eigen/Eigen/Version +14 -0
- package/eigen/Eigen/src/AccelerateSupport/AccelerateSupport.h +423 -0
- package/eigen/Eigen/src/AccelerateSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Cholesky/LDLT.h +366 -405
- package/eigen/Eigen/src/Cholesky/LLT.h +323 -367
- package/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +81 -56
- package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +585 -529
- package/eigen/Eigen/src/CholmodSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/ArithmeticSequence.h +143 -317
- package/eigen/Eigen/src/Core/Array.h +329 -370
- package/eigen/Eigen/src/Core/ArrayBase.h +190 -203
- package/eigen/Eigen/src/Core/ArrayWrapper.h +126 -170
- package/eigen/Eigen/src/Core/Assign.h +30 -40
- package/eigen/Eigen/src/Core/AssignEvaluator.h +651 -604
- package/eigen/Eigen/src/Core/Assign_MKL.h +125 -120
- package/eigen/Eigen/src/Core/BandMatrix.h +267 -282
- package/eigen/Eigen/src/Core/Block.h +371 -390
- package/eigen/Eigen/src/Core/CommaInitializer.h +85 -100
- package/eigen/Eigen/src/Core/ConditionEstimator.h +51 -53
- package/eigen/Eigen/src/Core/CoreEvaluators.h +1214 -937
- package/eigen/Eigen/src/Core/CoreIterators.h +72 -63
- package/eigen/Eigen/src/Core/CwiseBinaryOp.h +112 -129
- package/eigen/Eigen/src/Core/CwiseNullaryOp.h +676 -702
- package/eigen/Eigen/src/Core/CwiseTernaryOp.h +77 -103
- package/eigen/Eigen/src/Core/CwiseUnaryOp.h +55 -67
- package/eigen/Eigen/src/Core/CwiseUnaryView.h +127 -92
- package/eigen/Eigen/src/Core/DenseBase.h +630 -658
- package/eigen/Eigen/src/Core/DenseCoeffsBase.h +511 -628
- package/eigen/Eigen/src/Core/DenseStorage.h +511 -590
- package/eigen/Eigen/src/Core/DeviceWrapper.h +153 -0
- package/eigen/Eigen/src/Core/Diagonal.h +168 -207
- package/eigen/Eigen/src/Core/DiagonalMatrix.h +346 -317
- package/eigen/Eigen/src/Core/DiagonalProduct.h +12 -10
- package/eigen/Eigen/src/Core/Dot.h +167 -217
- package/eigen/Eigen/src/Core/EigenBase.h +74 -85
- package/eigen/Eigen/src/Core/Fill.h +138 -0
- package/eigen/Eigen/src/Core/FindCoeff.h +464 -0
- package/eigen/Eigen/src/Core/ForceAlignedAccess.h +90 -113
- package/eigen/Eigen/src/Core/Fuzzy.h +82 -105
- package/eigen/Eigen/src/Core/GeneralProduct.h +315 -261
- package/eigen/Eigen/src/Core/GenericPacketMath.h +1182 -520
- package/eigen/Eigen/src/Core/GlobalFunctions.h +193 -157
- package/eigen/Eigen/src/Core/IO.h +131 -156
- package/eigen/Eigen/src/Core/IndexedView.h +209 -125
- package/eigen/Eigen/src/Core/InnerProduct.h +260 -0
- package/eigen/Eigen/src/Core/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Core/Inverse.h +50 -59
- package/eigen/Eigen/src/Core/Map.h +123 -141
- package/eigen/Eigen/src/Core/MapBase.h +255 -282
- package/eigen/Eigen/src/Core/MathFunctions.h +1247 -1201
- package/eigen/Eigen/src/Core/MathFunctionsImpl.h +162 -99
- package/eigen/Eigen/src/Core/Matrix.h +463 -494
- package/eigen/Eigen/src/Core/MatrixBase.h +468 -470
- package/eigen/Eigen/src/Core/NestByValue.h +58 -52
- package/eigen/Eigen/src/Core/NoAlias.h +79 -86
- package/eigen/Eigen/src/Core/NumTraits.h +206 -206
- package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +163 -142
- package/eigen/Eigen/src/Core/PermutationMatrix.h +461 -511
- package/eigen/Eigen/src/Core/PlainObjectBase.h +858 -972
- package/eigen/Eigen/src/Core/Product.h +246 -130
- package/eigen/Eigen/src/Core/ProductEvaluators.h +779 -671
- package/eigen/Eigen/src/Core/Random.h +153 -164
- package/eigen/Eigen/src/Core/RandomImpl.h +262 -0
- package/eigen/Eigen/src/Core/RealView.h +250 -0
- package/eigen/Eigen/src/Core/Redux.h +334 -314
- package/eigen/Eigen/src/Core/Ref.h +259 -257
- package/eigen/Eigen/src/Core/Replicate.h +92 -104
- package/eigen/Eigen/src/Core/Reshaped.h +215 -271
- package/eigen/Eigen/src/Core/ReturnByValue.h +47 -55
- package/eigen/Eigen/src/Core/Reverse.h +133 -148
- package/eigen/Eigen/src/Core/Select.h +68 -140
- package/eigen/Eigen/src/Core/SelfAdjointView.h +254 -290
- package/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +23 -20
- package/eigen/Eigen/src/Core/SkewSymmetricMatrix3.h +382 -0
- package/eigen/Eigen/src/Core/Solve.h +88 -102
- package/eigen/Eigen/src/Core/SolveTriangular.h +126 -124
- package/eigen/Eigen/src/Core/SolverBase.h +132 -133
- package/eigen/Eigen/src/Core/StableNorm.h +113 -147
- package/eigen/Eigen/src/Core/StlIterators.h +404 -248
- package/eigen/Eigen/src/Core/Stride.h +90 -92
- package/eigen/Eigen/src/Core/Swap.h +70 -39
- package/eigen/Eigen/src/Core/Transpose.h +258 -295
- package/eigen/Eigen/src/Core/Transpositions.h +270 -333
- package/eigen/Eigen/src/Core/TriangularMatrix.h +642 -743
- package/eigen/Eigen/src/Core/VectorBlock.h +59 -72
- package/eigen/Eigen/src/Core/VectorwiseOp.h +653 -704
- package/eigen/Eigen/src/Core/Visitor.h +464 -308
- package/eigen/Eigen/src/Core/arch/AVX/Complex.h +380 -187
- package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +65 -163
- package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +2145 -638
- package/eigen/Eigen/src/Core/arch/AVX/Reductions.h +353 -0
- package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +253 -60
- package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +278 -228
- package/eigen/Eigen/src/Core/arch/AVX512/GemmKernel.h +1245 -0
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +48 -269
- package/eigen/Eigen/src/Core/arch/AVX512/MathFunctionsFP16.h +75 -0
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1597 -754
- package/eigen/Eigen/src/Core/arch/AVX512/PacketMathFP16.h +1413 -0
- package/eigen/Eigen/src/Core/arch/AVX512/Reductions.h +297 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmKernel.h +1167 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TrsmUnrolls.inc +1219 -0
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +229 -41
- package/eigen/Eigen/src/Core/arch/AVX512/TypeCastingFP16.h +130 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +420 -184
- package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +40 -49
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2962 -2213
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +196 -212
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +713 -441
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMAbfloat16.h +742 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.inc +2818 -0
- package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2380 -1362
- package/eigen/Eigen/src/Core/arch/AltiVec/TypeCasting.h +153 -0
- package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +390 -224
- package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +78 -67
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1784 -799
- package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +167 -50
- package/eigen/Eigen/src/Core/arch/Default/Half.h +528 -379
- package/eigen/Eigen/src/Core/arch/Default/Settings.h +10 -12
- package/eigen/Eigen/src/Core/arch/GPU/Complex.h +244 -0
- package/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +41 -40
- package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +550 -523
- package/eigen/Eigen/src/Core/arch/GPU/Tuple.h +268 -0
- package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +27 -30
- package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +8 -8
- package/eigen/Eigen/src/Core/arch/HVX/PacketMath.h +1088 -0
- package/eigen/Eigen/src/Core/arch/LSX/Complex.h +520 -0
- package/eigen/Eigen/src/Core/arch/LSX/GeneralBlockPanelKernel.h +23 -0
- package/eigen/Eigen/src/Core/arch/LSX/MathFunctions.h +43 -0
- package/eigen/Eigen/src/Core/arch/LSX/PacketMath.h +2866 -0
- package/eigen/Eigen/src/Core/arch/LSX/TypeCasting.h +526 -0
- package/eigen/Eigen/src/Core/arch/MSA/Complex.h +54 -82
- package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +84 -92
- package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +51 -47
- package/eigen/Eigen/src/Core/arch/NEON/Complex.h +454 -306
- package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +175 -115
- package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +23 -30
- package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4366 -2857
- package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +616 -393
- package/eigen/Eigen/src/Core/arch/NEON/UnaryFunctors.h +57 -0
- package/eigen/Eigen/src/Core/arch/SSE/Complex.h +350 -198
- package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +38 -149
- package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1791 -912
- package/eigen/Eigen/src/Core/arch/SSE/Reductions.h +324 -0
- package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +128 -40
- package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +10 -6
- package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +156 -234
- package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +6 -3
- package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +27 -32
- package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +119 -117
- package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +325 -419
- package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +15 -17
- package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +325 -181
- package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +94 -83
- package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +811 -458
- package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +121 -124
- package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +576 -370
- package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +194 -109
- package/eigen/Eigen/src/Core/functors/StlFunctors.h +95 -112
- package/eigen/Eigen/src/Core/functors/TernaryFunctors.h +34 -7
- package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1038 -749
- package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1883 -1375
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +312 -370
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +189 -176
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +84 -81
- package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +154 -73
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +292 -337
- package/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +80 -77
- package/eigen/Eigen/src/Core/products/Parallelizer.h +207 -105
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +327 -388
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +206 -224
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +138 -147
- package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +58 -61
- package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +71 -71
- package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +48 -47
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +294 -369
- package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +246 -238
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +244 -247
- package/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +212 -192
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +328 -277
- package/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +108 -109
- package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +68 -94
- package/eigen/Eigen/src/Core/util/Assert.h +158 -0
- package/eigen/Eigen/src/Core/util/BlasUtil.h +342 -303
- package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +348 -317
- package/eigen/Eigen/src/Core/util/Constants.h +297 -262
- package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +130 -90
- package/eigen/Eigen/src/Core/util/EmulateArray.h +270 -0
- package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +449 -247
- package/eigen/Eigen/src/Core/util/GpuHipCudaDefines.inc +101 -0
- package/eigen/Eigen/src/Core/util/GpuHipCudaUndefines.inc +45 -0
- package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +417 -116
- package/eigen/Eigen/src/Core/util/IntegralConstant.h +211 -204
- package/eigen/Eigen/src/Core/util/MKL_support.h +39 -37
- package/eigen/Eigen/src/Core/util/Macros.h +655 -773
- package/eigen/Eigen/src/Core/util/MaxSizeVector.h +139 -0
- package/eigen/Eigen/src/Core/util/Memory.h +970 -748
- package/eigen/Eigen/src/Core/util/Meta.h +581 -633
- package/eigen/Eigen/src/Core/util/MoreMeta.h +638 -0
- package/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +32 -19
- package/eigen/Eigen/src/Core/util/ReshapedHelper.h +17 -17
- package/eigen/Eigen/src/Core/util/Serializer.h +209 -0
- package/eigen/Eigen/src/Core/util/StaticAssert.h +50 -166
- package/eigen/Eigen/src/Core/util/SymbolicIndex.h +377 -225
- package/eigen/Eigen/src/Core/util/XprHelper.h +784 -547
- package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +246 -277
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +299 -319
- package/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +52 -48
- package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +413 -456
- package/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +309 -325
- package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +157 -171
- package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +292 -310
- package/eigen/Eigen/src/Eigenvalues/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +89 -105
- package/eigen/Eigen/src/Eigenvalues/RealQZ.h +537 -607
- package/eigen/Eigen/src/Eigenvalues/RealSchur.h +342 -381
- package/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +41 -35
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +541 -595
- package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +47 -44
- package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +430 -462
- package/eigen/Eigen/src/Geometry/AlignedBox.h +226 -227
- package/eigen/Eigen/src/Geometry/AngleAxis.h +131 -133
- package/eigen/Eigen/src/Geometry/EulerAngles.h +163 -74
- package/eigen/Eigen/src/Geometry/Homogeneous.h +285 -333
- package/eigen/Eigen/src/Geometry/Hyperplane.h +151 -160
- package/eigen/Eigen/src/Geometry/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Geometry/OrthoMethods.h +168 -146
- package/eigen/Eigen/src/Geometry/ParametrizedLine.h +127 -127
- package/eigen/Eigen/src/Geometry/Quaternion.h +566 -506
- package/eigen/Eigen/src/Geometry/Rotation2D.h +107 -105
- package/eigen/Eigen/src/Geometry/RotationBase.h +148 -145
- package/eigen/Eigen/src/Geometry/Scaling.h +113 -106
- package/eigen/Eigen/src/Geometry/Transform.h +858 -936
- package/eigen/Eigen/src/Geometry/Translation.h +94 -92
- package/eigen/Eigen/src/Geometry/Umeyama.h +79 -84
- package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +90 -104
- package/eigen/Eigen/src/Householder/BlockHouseholder.h +51 -46
- package/eigen/Eigen/src/Householder/Householder.h +102 -124
- package/eigen/Eigen/src/Householder/HouseholderSequence.h +412 -453
- package/eigen/Eigen/src/Householder/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +149 -162
- package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +124 -119
- package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +92 -104
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +251 -243
- package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +224 -228
- package/eigen/Eigen/src/IterativeLinearSolvers/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +178 -227
- package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +79 -84
- package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +54 -60
- package/eigen/Eigen/src/Jacobi/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/Jacobi/Jacobi.h +252 -308
- package/eigen/Eigen/src/KLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/KLUSupport/KLUSupport.h +208 -227
- package/eigen/Eigen/src/LU/Determinant.h +50 -69
- package/eigen/Eigen/src/LU/FullPivLU.h +545 -596
- package/eigen/Eigen/src/LU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/LU/InverseImpl.h +206 -285
- package/eigen/Eigen/src/LU/PartialPivLU.h +390 -428
- package/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +54 -40
- package/eigen/Eigen/src/LU/arch/InverseSize4.h +72 -70
- package/eigen/Eigen/src/MetisSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/MetisSupport/MetisSupport.h +81 -93
- package/eigen/Eigen/src/OrderingMethods/Amd.h +243 -265
- package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +831 -1004
- package/eigen/Eigen/src/OrderingMethods/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/OrderingMethods/Ordering.h +112 -119
- package/eigen/Eigen/src/PaStiXSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +524 -570
- package/eigen/Eigen/src/PardisoSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +385 -430
- package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +479 -479
- package/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +120 -56
- package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +166 -153
- package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +495 -475
- package/eigen/Eigen/src/QR/HouseholderQR.h +394 -285
- package/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +32 -23
- package/eigen/Eigen/src/QR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +244 -264
- package/eigen/Eigen/src/SVD/BDCSVD.h +817 -713
- package/eigen/Eigen/src/SVD/BDCSVD_LAPACKE.h +174 -0
- package/eigen/Eigen/src/SVD/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SVD/JacobiSVD.h +577 -543
- package/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +85 -49
- package/eigen/Eigen/src/SVD/SVDBase.h +242 -182
- package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +200 -235
- package/eigen/Eigen/src/SparseCholesky/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +765 -594
- package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +308 -94
- package/eigen/Eigen/src/SparseCore/AmbiVector.h +202 -251
- package/eigen/Eigen/src/SparseCore/CompressedStorage.h +184 -252
- package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +134 -178
- package/eigen/Eigen/src/SparseCore/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseCore/SparseAssign.h +149 -140
- package/eigen/Eigen/src/SparseCore/SparseBlock.h +403 -440
- package/eigen/Eigen/src/SparseCore/SparseColEtree.h +100 -112
- package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +525 -303
- package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +555 -339
- package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +100 -108
- package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +169 -197
- package/eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h +71 -71
- package/eigen/Eigen/src/SparseCore/SparseDot.h +49 -47
- package/eigen/Eigen/src/SparseCore/SparseFuzzy.h +13 -11
- package/eigen/Eigen/src/SparseCore/SparseMap.h +243 -253
- package/eigen/Eigen/src/SparseCore/SparseMatrix.h +1603 -1245
- package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +403 -350
- package/eigen/Eigen/src/SparseCore/SparsePermutation.h +186 -115
- package/eigen/Eigen/src/SparseCore/SparseProduct.h +94 -97
- package/eigen/Eigen/src/SparseCore/SparseRedux.h +22 -24
- package/eigen/Eigen/src/SparseCore/SparseRef.h +268 -295
- package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +370 -416
- package/eigen/Eigen/src/SparseCore/SparseSolverBase.h +78 -87
- package/eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +81 -95
- package/eigen/Eigen/src/SparseCore/SparseTranspose.h +62 -71
- package/eigen/Eigen/src/SparseCore/SparseTriangularView.h +132 -144
- package/eigen/Eigen/src/SparseCore/SparseUtil.h +138 -115
- package/eigen/Eigen/src/SparseCore/SparseVector.h +426 -372
- package/eigen/Eigen/src/SparseCore/SparseView.h +164 -193
- package/eigen/Eigen/src/SparseCore/TriangularSolver.h +129 -170
- package/eigen/Eigen/src/SparseLU/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseLU/SparseLU.h +756 -710
- package/eigen/Eigen/src/SparseLU/SparseLUImpl.h +61 -48
- package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +102 -118
- package/eigen/Eigen/src/SparseLU/SparseLU_Structs.h +38 -35
- package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +245 -301
- package/eigen/Eigen/src/SparseLU/SparseLU_Utils.h +44 -49
- package/eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h +104 -108
- package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +89 -100
- package/eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +57 -58
- package/eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +43 -55
- package/eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +74 -71
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +124 -132
- package/eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h +136 -159
- package/eigen/Eigen/src/SparseLU/SparseLU_pivotL.h +51 -52
- package/eigen/Eigen/src/SparseLU/SparseLU_pruneL.h +67 -73
- package/eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h +24 -26
- package/eigen/Eigen/src/SparseQR/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SparseQR/SparseQR.h +450 -502
- package/eigen/Eigen/src/StlSupport/StdDeque.h +28 -93
- package/eigen/Eigen/src/StlSupport/StdList.h +28 -84
- package/eigen/Eigen/src/StlSupport/StdVector.h +28 -108
- package/eigen/Eigen/src/StlSupport/details.h +48 -50
- package/eigen/Eigen/src/SuperLUSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +634 -730
- package/eigen/Eigen/src/ThreadPool/Barrier.h +70 -0
- package/eigen/Eigen/src/ThreadPool/CoreThreadPoolDevice.h +336 -0
- package/eigen/Eigen/src/ThreadPool/EventCount.h +241 -0
- package/eigen/Eigen/src/ThreadPool/ForkJoin.h +140 -0
- package/eigen/Eigen/src/ThreadPool/InternalHeaderCheck.h +4 -0
- package/eigen/Eigen/src/ThreadPool/NonBlockingThreadPool.h +587 -0
- package/eigen/Eigen/src/ThreadPool/RunQueue.h +230 -0
- package/eigen/Eigen/src/ThreadPool/ThreadCancel.h +21 -0
- package/eigen/Eigen/src/ThreadPool/ThreadEnvironment.h +43 -0
- package/eigen/Eigen/src/ThreadPool/ThreadLocal.h +289 -0
- package/eigen/Eigen/src/ThreadPool/ThreadPoolInterface.h +50 -0
- package/eigen/Eigen/src/ThreadPool/ThreadYield.h +16 -0
- package/eigen/Eigen/src/UmfPackSupport/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +428 -464
- package/eigen/Eigen/src/misc/Image.h +41 -43
- package/eigen/Eigen/src/misc/InternalHeaderCheck.h +3 -0
- package/eigen/Eigen/src/misc/Kernel.h +39 -41
- package/eigen/Eigen/src/misc/RealSvd2x2.h +19 -21
- package/eigen/Eigen/src/misc/blas.h +83 -426
- package/eigen/Eigen/src/misc/lapacke.h +9972 -16179
- package/eigen/Eigen/src/misc/lapacke_helpers.h +163 -0
- package/eigen/Eigen/src/misc/lapacke_mangling.h +4 -5
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.inc +344 -0
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.inc +544 -0
- package/eigen/Eigen/src/plugins/{BlockMethods.h → BlockMethods.inc} +434 -506
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.inc +116 -0
- package/eigen/Eigen/src/plugins/{CommonCwiseUnaryOps.h → CommonCwiseUnaryOps.inc} +58 -68
- package/eigen/Eigen/src/plugins/IndexedViewMethods.inc +192 -0
- package/eigen/Eigen/src/plugins/InternalHeaderCheck.inc +3 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.inc +331 -0
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.inc +118 -0
- package/eigen/Eigen/src/plugins/ReshapedMethods.inc +133 -0
- package/package.json +1 -1
- package/eigen/COPYING.APACHE +0 -203
- package/eigen/COPYING.BSD +0 -26
- package/eigen/COPYING.GPL +0 -674
- package/eigen/COPYING.LGPL +0 -502
- package/eigen/COPYING.MINPACK +0 -51
- package/eigen/COPYING.MPL2 +0 -373
- package/eigen/COPYING.README +0 -18
- package/eigen/Eigen/src/Core/BooleanRedux.h +0 -162
- package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +0 -258
- package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +0 -120
- package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +0 -694
- package/eigen/Eigen/src/Core/util/NonMPL2.h +0 -3
- package/eigen/Eigen/src/SparseCore/MappedSparseMatrix.h +0 -67
- package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +0 -280
- package/eigen/Eigen/src/misc/lapack.h +0 -152
- package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +0 -358
- package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +0 -696
- package/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +0 -115
- package/eigen/Eigen/src/plugins/IndexedViewMethods.h +0 -262
- package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +0 -152
- package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +0 -95
- package/eigen/Eigen/src/plugins/ReshapedMethods.h +0 -149
- package/eigen/README.md +0 -5
|
@@ -10,105 +10,175 @@
|
|
|
10
10
|
#ifndef EIGEN_STLITERATORS_H
|
|
11
11
|
#define EIGEN_STLITERATORS_H
|
|
12
12
|
|
|
13
|
+
// IWYU pragma: private
|
|
14
|
+
#include "./InternalHeaderCheck.h"
|
|
15
|
+
|
|
13
16
|
namespace Eigen {
|
|
14
17
|
|
|
15
18
|
namespace internal {
|
|
16
19
|
|
|
17
|
-
template<typename IteratorType>
|
|
20
|
+
template <typename IteratorType>
|
|
18
21
|
struct indexed_based_stl_iterator_traits;
|
|
19
22
|
|
|
20
|
-
template<typename
|
|
21
|
-
class indexed_based_stl_iterator_base
|
|
22
|
-
|
|
23
|
-
protected:
|
|
23
|
+
template <typename Derived>
|
|
24
|
+
class indexed_based_stl_iterator_base {
|
|
25
|
+
protected:
|
|
24
26
|
typedef indexed_based_stl_iterator_traits<Derived> traits;
|
|
25
27
|
typedef typename traits::XprType XprType;
|
|
26
28
|
typedef indexed_based_stl_iterator_base<typename traits::non_const_iterator> non_const_iterator;
|
|
27
29
|
typedef indexed_based_stl_iterator_base<typename traits::const_iterator> const_iterator;
|
|
28
|
-
typedef
|
|
30
|
+
typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
|
|
29
31
|
// NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
|
|
30
32
|
friend class indexed_based_stl_iterator_base<typename traits::const_iterator>;
|
|
31
33
|
friend class indexed_based_stl_iterator_base<typename traits::non_const_iterator>;
|
|
32
|
-
|
|
34
|
+
|
|
35
|
+
public:
|
|
33
36
|
typedef Index difference_type;
|
|
34
37
|
typedef std::random_access_iterator_tag iterator_category;
|
|
35
38
|
|
|
36
|
-
indexed_based_stl_iterator_base()
|
|
37
|
-
indexed_based_stl_iterator_base(XprType& xpr, Index index)
|
|
39
|
+
indexed_based_stl_iterator_base() noexcept : mp_xpr(0), m_index(0) {}
|
|
40
|
+
indexed_based_stl_iterator_base(XprType& xpr, Index index) noexcept : mp_xpr(&xpr), m_index(index) {}
|
|
38
41
|
|
|
39
|
-
indexed_based_stl_iterator_base(const non_const_iterator& other)
|
|
40
|
-
|
|
41
|
-
{}
|
|
42
|
+
indexed_based_stl_iterator_base(const non_const_iterator& other) noexcept
|
|
43
|
+
: mp_xpr(other.mp_xpr), m_index(other.m_index) {}
|
|
42
44
|
|
|
43
|
-
indexed_based_stl_iterator_base& operator=(const non_const_iterator& other)
|
|
44
|
-
{
|
|
45
|
+
indexed_based_stl_iterator_base& operator=(const non_const_iterator& other) {
|
|
45
46
|
mp_xpr = other.mp_xpr;
|
|
46
47
|
m_index = other.m_index;
|
|
47
48
|
return *this;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
|
-
Derived& operator++() {
|
|
51
|
-
|
|
51
|
+
Derived& operator++() {
|
|
52
|
+
++m_index;
|
|
53
|
+
return derived();
|
|
54
|
+
}
|
|
55
|
+
Derived& operator--() {
|
|
56
|
+
--m_index;
|
|
57
|
+
return derived();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Derived operator++(int) {
|
|
61
|
+
Derived prev(derived());
|
|
62
|
+
operator++();
|
|
63
|
+
return prev;
|
|
64
|
+
}
|
|
65
|
+
Derived operator--(int) {
|
|
66
|
+
Derived prev(derived());
|
|
67
|
+
operator--();
|
|
68
|
+
return prev;
|
|
69
|
+
}
|
|
52
70
|
|
|
53
|
-
Derived operator
|
|
54
|
-
|
|
71
|
+
friend Derived operator+(const indexed_based_stl_iterator_base& a, Index b) {
|
|
72
|
+
Derived ret(a.derived());
|
|
73
|
+
ret += b;
|
|
74
|
+
return ret;
|
|
75
|
+
}
|
|
76
|
+
friend Derived operator-(const indexed_based_stl_iterator_base& a, Index b) {
|
|
77
|
+
Derived ret(a.derived());
|
|
78
|
+
ret -= b;
|
|
79
|
+
return ret;
|
|
80
|
+
}
|
|
81
|
+
friend Derived operator+(Index a, const indexed_based_stl_iterator_base& b) {
|
|
82
|
+
Derived ret(b.derived());
|
|
83
|
+
ret += a;
|
|
84
|
+
return ret;
|
|
85
|
+
}
|
|
86
|
+
friend Derived operator-(Index a, const indexed_based_stl_iterator_base& b) {
|
|
87
|
+
Derived ret(b.derived());
|
|
88
|
+
ret -= a;
|
|
89
|
+
return ret;
|
|
90
|
+
}
|
|
55
91
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
92
|
+
Derived& operator+=(Index b) {
|
|
93
|
+
m_index += b;
|
|
94
|
+
return derived();
|
|
95
|
+
}
|
|
96
|
+
Derived& operator-=(Index b) {
|
|
97
|
+
m_index -= b;
|
|
98
|
+
return derived();
|
|
99
|
+
}
|
|
63
100
|
|
|
64
|
-
difference_type operator-(const indexed_based_stl_iterator_base& other) const
|
|
65
|
-
{
|
|
101
|
+
difference_type operator-(const indexed_based_stl_iterator_base& other) const {
|
|
66
102
|
eigen_assert(mp_xpr == other.mp_xpr);
|
|
67
103
|
return m_index - other.m_index;
|
|
68
104
|
}
|
|
69
105
|
|
|
70
|
-
difference_type operator-(const other_iterator& other) const
|
|
71
|
-
{
|
|
106
|
+
difference_type operator-(const other_iterator& other) const {
|
|
72
107
|
eigen_assert(mp_xpr == other.mp_xpr);
|
|
73
108
|
return m_index - other.m_index;
|
|
74
109
|
}
|
|
75
110
|
|
|
76
|
-
bool operator==(const indexed_based_stl_iterator_base& other) const {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
bool operator
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
bool operator
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
bool operator
|
|
111
|
+
bool operator==(const indexed_based_stl_iterator_base& other) const {
|
|
112
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
113
|
+
return m_index == other.m_index;
|
|
114
|
+
}
|
|
115
|
+
bool operator!=(const indexed_based_stl_iterator_base& other) const {
|
|
116
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
117
|
+
return m_index != other.m_index;
|
|
118
|
+
}
|
|
119
|
+
bool operator<(const indexed_based_stl_iterator_base& other) const {
|
|
120
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
121
|
+
return m_index < other.m_index;
|
|
122
|
+
}
|
|
123
|
+
bool operator<=(const indexed_based_stl_iterator_base& other) const {
|
|
124
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
125
|
+
return m_index <= other.m_index;
|
|
126
|
+
}
|
|
127
|
+
bool operator>(const indexed_based_stl_iterator_base& other) const {
|
|
128
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
129
|
+
return m_index > other.m_index;
|
|
130
|
+
}
|
|
131
|
+
bool operator>=(const indexed_based_stl_iterator_base& other) const {
|
|
132
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
133
|
+
return m_index >= other.m_index;
|
|
134
|
+
}
|
|
89
135
|
|
|
90
|
-
|
|
136
|
+
bool operator==(const other_iterator& other) const {
|
|
137
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
138
|
+
return m_index == other.m_index;
|
|
139
|
+
}
|
|
140
|
+
bool operator!=(const other_iterator& other) const {
|
|
141
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
142
|
+
return m_index != other.m_index;
|
|
143
|
+
}
|
|
144
|
+
bool operator<(const other_iterator& other) const {
|
|
145
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
146
|
+
return m_index < other.m_index;
|
|
147
|
+
}
|
|
148
|
+
bool operator<=(const other_iterator& other) const {
|
|
149
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
150
|
+
return m_index <= other.m_index;
|
|
151
|
+
}
|
|
152
|
+
bool operator>(const other_iterator& other) const {
|
|
153
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
154
|
+
return m_index > other.m_index;
|
|
155
|
+
}
|
|
156
|
+
bool operator>=(const other_iterator& other) const {
|
|
157
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
158
|
+
return m_index >= other.m_index;
|
|
159
|
+
}
|
|
91
160
|
|
|
161
|
+
protected:
|
|
92
162
|
Derived& derived() { return static_cast<Derived&>(*this); }
|
|
93
163
|
const Derived& derived() const { return static_cast<const Derived&>(*this); }
|
|
94
164
|
|
|
95
|
-
XprType
|
|
165
|
+
XprType* mp_xpr;
|
|
96
166
|
Index m_index;
|
|
97
167
|
};
|
|
98
168
|
|
|
99
|
-
template<typename
|
|
100
|
-
class indexed_based_stl_reverse_iterator_base
|
|
101
|
-
|
|
102
|
-
protected:
|
|
169
|
+
template <typename Derived>
|
|
170
|
+
class indexed_based_stl_reverse_iterator_base {
|
|
171
|
+
protected:
|
|
103
172
|
typedef indexed_based_stl_iterator_traits<Derived> traits;
|
|
104
173
|
typedef typename traits::XprType XprType;
|
|
105
174
|
typedef indexed_based_stl_reverse_iterator_base<typename traits::non_const_iterator> non_const_iterator;
|
|
106
175
|
typedef indexed_based_stl_reverse_iterator_base<typename traits::const_iterator> const_iterator;
|
|
107
|
-
typedef
|
|
176
|
+
typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
|
|
108
177
|
// NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
|
|
109
178
|
friend class indexed_based_stl_reverse_iterator_base<typename traits::const_iterator>;
|
|
110
179
|
friend class indexed_based_stl_reverse_iterator_base<typename traits::non_const_iterator>;
|
|
111
|
-
|
|
180
|
+
|
|
181
|
+
public:
|
|
112
182
|
typedef Index difference_type;
|
|
113
183
|
typedef std::random_access_iterator_tag iterator_category;
|
|
114
184
|
|
|
@@ -116,165 +186,264 @@ public:
|
|
|
116
186
|
indexed_based_stl_reverse_iterator_base(XprType& xpr, Index index) : mp_xpr(&xpr), m_index(index) {}
|
|
117
187
|
|
|
118
188
|
indexed_based_stl_reverse_iterator_base(const non_const_iterator& other)
|
|
119
|
-
|
|
120
|
-
{}
|
|
189
|
+
: mp_xpr(other.mp_xpr), m_index(other.m_index) {}
|
|
121
190
|
|
|
122
|
-
indexed_based_stl_reverse_iterator_base& operator=(const non_const_iterator& other)
|
|
123
|
-
{
|
|
191
|
+
indexed_based_stl_reverse_iterator_base& operator=(const non_const_iterator& other) {
|
|
124
192
|
mp_xpr = other.mp_xpr;
|
|
125
193
|
m_index = other.m_index;
|
|
126
194
|
return *this;
|
|
127
195
|
}
|
|
128
196
|
|
|
129
|
-
Derived& operator++() {
|
|
130
|
-
|
|
197
|
+
Derived& operator++() {
|
|
198
|
+
--m_index;
|
|
199
|
+
return derived();
|
|
200
|
+
}
|
|
201
|
+
Derived& operator--() {
|
|
202
|
+
++m_index;
|
|
203
|
+
return derived();
|
|
204
|
+
}
|
|
131
205
|
|
|
132
|
-
Derived operator++(int) {
|
|
133
|
-
|
|
206
|
+
Derived operator++(int) {
|
|
207
|
+
Derived prev(derived());
|
|
208
|
+
operator++();
|
|
209
|
+
return prev;
|
|
210
|
+
}
|
|
211
|
+
Derived operator--(int) {
|
|
212
|
+
Derived prev(derived());
|
|
213
|
+
operator--();
|
|
214
|
+
return prev;
|
|
215
|
+
}
|
|
134
216
|
|
|
135
|
-
friend Derived operator+(const indexed_based_stl_reverse_iterator_base& a, Index b) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
Derived
|
|
141
|
-
|
|
217
|
+
friend Derived operator+(const indexed_based_stl_reverse_iterator_base& a, Index b) {
|
|
218
|
+
Derived ret(a.derived());
|
|
219
|
+
ret += b;
|
|
220
|
+
return ret;
|
|
221
|
+
}
|
|
222
|
+
friend Derived operator-(const indexed_based_stl_reverse_iterator_base& a, Index b) {
|
|
223
|
+
Derived ret(a.derived());
|
|
224
|
+
ret -= b;
|
|
225
|
+
return ret;
|
|
226
|
+
}
|
|
227
|
+
friend Derived operator+(Index a, const indexed_based_stl_reverse_iterator_base& b) {
|
|
228
|
+
Derived ret(b.derived());
|
|
229
|
+
ret += a;
|
|
230
|
+
return ret;
|
|
231
|
+
}
|
|
232
|
+
friend Derived operator-(Index a, const indexed_based_stl_reverse_iterator_base& b) {
|
|
233
|
+
Derived ret(b.derived());
|
|
234
|
+
ret -= a;
|
|
235
|
+
return ret;
|
|
236
|
+
}
|
|
142
237
|
|
|
143
|
-
|
|
144
|
-
|
|
238
|
+
Derived& operator+=(Index b) {
|
|
239
|
+
m_index -= b;
|
|
240
|
+
return derived();
|
|
241
|
+
}
|
|
242
|
+
Derived& operator-=(Index b) {
|
|
243
|
+
m_index += b;
|
|
244
|
+
return derived();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
difference_type operator-(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
145
248
|
eigen_assert(mp_xpr == other.mp_xpr);
|
|
146
249
|
return other.m_index - m_index;
|
|
147
250
|
}
|
|
148
251
|
|
|
149
|
-
difference_type operator-(const other_iterator& other) const
|
|
150
|
-
{
|
|
252
|
+
difference_type operator-(const other_iterator& other) const {
|
|
151
253
|
eigen_assert(mp_xpr == other.mp_xpr);
|
|
152
254
|
return other.m_index - m_index;
|
|
153
255
|
}
|
|
154
256
|
|
|
155
|
-
bool operator==(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
bool operator
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
bool operator
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
bool operator
|
|
257
|
+
bool operator==(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
258
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
259
|
+
return m_index == other.m_index;
|
|
260
|
+
}
|
|
261
|
+
bool operator!=(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
262
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
263
|
+
return m_index != other.m_index;
|
|
264
|
+
}
|
|
265
|
+
bool operator<(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
266
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
267
|
+
return m_index > other.m_index;
|
|
268
|
+
}
|
|
269
|
+
bool operator<=(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
270
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
271
|
+
return m_index >= other.m_index;
|
|
272
|
+
}
|
|
273
|
+
bool operator>(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
274
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
275
|
+
return m_index < other.m_index;
|
|
276
|
+
}
|
|
277
|
+
bool operator>=(const indexed_based_stl_reverse_iterator_base& other) const {
|
|
278
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
279
|
+
return m_index <= other.m_index;
|
|
280
|
+
}
|
|
168
281
|
|
|
169
|
-
|
|
282
|
+
bool operator==(const other_iterator& other) const {
|
|
283
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
284
|
+
return m_index == other.m_index;
|
|
285
|
+
}
|
|
286
|
+
bool operator!=(const other_iterator& other) const {
|
|
287
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
288
|
+
return m_index != other.m_index;
|
|
289
|
+
}
|
|
290
|
+
bool operator<(const other_iterator& other) const {
|
|
291
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
292
|
+
return m_index > other.m_index;
|
|
293
|
+
}
|
|
294
|
+
bool operator<=(const other_iterator& other) const {
|
|
295
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
296
|
+
return m_index >= other.m_index;
|
|
297
|
+
}
|
|
298
|
+
bool operator>(const other_iterator& other) const {
|
|
299
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
300
|
+
return m_index < other.m_index;
|
|
301
|
+
}
|
|
302
|
+
bool operator>=(const other_iterator& other) const {
|
|
303
|
+
eigen_assert(mp_xpr == other.mp_xpr);
|
|
304
|
+
return m_index <= other.m_index;
|
|
305
|
+
}
|
|
170
306
|
|
|
307
|
+
protected:
|
|
171
308
|
Derived& derived() { return static_cast<Derived&>(*this); }
|
|
172
309
|
const Derived& derived() const { return static_cast<const Derived&>(*this); }
|
|
173
310
|
|
|
174
|
-
XprType
|
|
311
|
+
XprType* mp_xpr;
|
|
175
312
|
Index m_index;
|
|
176
313
|
};
|
|
177
314
|
|
|
178
|
-
template<typename XprType>
|
|
179
|
-
class pointer_based_stl_iterator
|
|
180
|
-
{
|
|
181
|
-
|
|
182
|
-
typedef pointer_based_stl_iterator<
|
|
183
|
-
typedef
|
|
184
|
-
typedef typename internal::conditional<internal::is_const<XprType>::value,non_const_iterator,const_iterator>::type other_iterator;
|
|
315
|
+
template <typename XprType>
|
|
316
|
+
class pointer_based_stl_iterator {
|
|
317
|
+
enum { is_lvalue = internal::is_lvalue<XprType>::value };
|
|
318
|
+
typedef pointer_based_stl_iterator<std::remove_const_t<XprType>> non_const_iterator;
|
|
319
|
+
typedef pointer_based_stl_iterator<std::add_const_t<XprType>> const_iterator;
|
|
320
|
+
typedef std::conditional_t<internal::is_const<XprType>::value, non_const_iterator, const_iterator> other_iterator;
|
|
185
321
|
// NOTE: in C++03 we cannot declare friend classes through typedefs because we need to write friend class:
|
|
186
|
-
friend class pointer_based_stl_iterator<
|
|
187
|
-
friend class pointer_based_stl_iterator<
|
|
188
|
-
|
|
322
|
+
friend class pointer_based_stl_iterator<std::add_const_t<XprType>>;
|
|
323
|
+
friend class pointer_based_stl_iterator<std::remove_const_t<XprType>>;
|
|
324
|
+
|
|
325
|
+
public:
|
|
189
326
|
typedef Index difference_type;
|
|
190
327
|
typedef typename XprType::Scalar value_type;
|
|
328
|
+
#if EIGEN_COMP_CXXVER >= 20 && defined(__cpp_lib_concepts) && __cpp_lib_concepts >= 202002L
|
|
329
|
+
typedef std::conditional_t<XprType::InnerStrideAtCompileTime == 1, std::contiguous_iterator_tag,
|
|
330
|
+
std::random_access_iterator_tag>
|
|
331
|
+
iterator_category;
|
|
332
|
+
#else
|
|
191
333
|
typedef std::random_access_iterator_tag iterator_category;
|
|
192
|
-
|
|
193
|
-
typedef
|
|
334
|
+
#endif
|
|
335
|
+
typedef std::conditional_t<bool(is_lvalue), value_type*, const value_type*> pointer;
|
|
336
|
+
typedef std::conditional_t<bool(is_lvalue), value_type&, const value_type&> reference;
|
|
194
337
|
|
|
195
|
-
|
|
196
|
-
pointer_based_stl_iterator()
|
|
197
|
-
pointer_based_stl_iterator(XprType& xpr, Index index) EIGEN_NO_THROW : m_incr(xpr.innerStride())
|
|
198
|
-
{
|
|
338
|
+
pointer_based_stl_iterator() noexcept : m_ptr(0) {}
|
|
339
|
+
pointer_based_stl_iterator(XprType& xpr, Index index) noexcept : m_incr(xpr.innerStride()) {
|
|
199
340
|
m_ptr = xpr.data() + index * m_incr.value();
|
|
200
341
|
}
|
|
201
342
|
|
|
202
|
-
pointer_based_stl_iterator(const non_const_iterator& other)
|
|
203
|
-
: m_ptr(other.m_ptr), m_incr(other.m_incr)
|
|
204
|
-
{}
|
|
343
|
+
pointer_based_stl_iterator(const non_const_iterator& other) noexcept : m_ptr(other.m_ptr), m_incr(other.m_incr) {}
|
|
205
344
|
|
|
206
|
-
pointer_based_stl_iterator& operator=(const non_const_iterator& other)
|
|
207
|
-
{
|
|
345
|
+
pointer_based_stl_iterator& operator=(const non_const_iterator& other) noexcept {
|
|
208
346
|
m_ptr = other.m_ptr;
|
|
209
347
|
m_incr.setValue(other.m_incr);
|
|
210
348
|
return *this;
|
|
211
349
|
}
|
|
212
350
|
|
|
213
|
-
reference operator*()
|
|
214
|
-
reference operator[](Index i) const { return *(m_ptr+i*m_incr.value()); }
|
|
215
|
-
pointer
|
|
351
|
+
reference operator*() const { return *m_ptr; }
|
|
352
|
+
reference operator[](Index i) const { return *(m_ptr + i * m_incr.value()); }
|
|
353
|
+
pointer operator->() const { return m_ptr; }
|
|
354
|
+
|
|
355
|
+
pointer_based_stl_iterator& operator++() {
|
|
356
|
+
m_ptr += m_incr.value();
|
|
357
|
+
return *this;
|
|
358
|
+
}
|
|
359
|
+
pointer_based_stl_iterator& operator--() {
|
|
360
|
+
m_ptr -= m_incr.value();
|
|
361
|
+
return *this;
|
|
362
|
+
}
|
|
216
363
|
|
|
217
|
-
pointer_based_stl_iterator
|
|
218
|
-
|
|
364
|
+
pointer_based_stl_iterator operator++(int) {
|
|
365
|
+
pointer_based_stl_iterator prev(*this);
|
|
366
|
+
operator++();
|
|
367
|
+
return prev;
|
|
368
|
+
}
|
|
369
|
+
pointer_based_stl_iterator operator--(int) {
|
|
370
|
+
pointer_based_stl_iterator prev(*this);
|
|
371
|
+
operator--();
|
|
372
|
+
return prev;
|
|
373
|
+
}
|
|
219
374
|
|
|
220
|
-
pointer_based_stl_iterator operator
|
|
221
|
-
|
|
375
|
+
friend pointer_based_stl_iterator operator+(const pointer_based_stl_iterator& a, Index b) {
|
|
376
|
+
pointer_based_stl_iterator ret(a);
|
|
377
|
+
ret += b;
|
|
378
|
+
return ret;
|
|
379
|
+
}
|
|
380
|
+
friend pointer_based_stl_iterator operator-(const pointer_based_stl_iterator& a, Index b) {
|
|
381
|
+
pointer_based_stl_iterator ret(a);
|
|
382
|
+
ret -= b;
|
|
383
|
+
return ret;
|
|
384
|
+
}
|
|
385
|
+
friend pointer_based_stl_iterator operator+(Index a, const pointer_based_stl_iterator& b) {
|
|
386
|
+
pointer_based_stl_iterator ret(b);
|
|
387
|
+
ret += a;
|
|
388
|
+
return ret;
|
|
389
|
+
}
|
|
390
|
+
friend pointer_based_stl_iterator operator-(Index a, const pointer_based_stl_iterator& b) {
|
|
391
|
+
pointer_based_stl_iterator ret(b);
|
|
392
|
+
ret -= a;
|
|
393
|
+
return ret;
|
|
394
|
+
}
|
|
222
395
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
396
|
+
pointer_based_stl_iterator& operator+=(Index b) {
|
|
397
|
+
m_ptr += b * m_incr.value();
|
|
398
|
+
return *this;
|
|
399
|
+
}
|
|
400
|
+
pointer_based_stl_iterator& operator-=(Index b) {
|
|
401
|
+
m_ptr -= b * m_incr.value();
|
|
402
|
+
return *this;
|
|
403
|
+
}
|
|
230
404
|
|
|
231
405
|
difference_type operator-(const pointer_based_stl_iterator& other) const {
|
|
232
|
-
return (m_ptr - other.m_ptr)/m_incr.value();
|
|
406
|
+
return (m_ptr - other.m_ptr) / m_incr.value();
|
|
233
407
|
}
|
|
234
408
|
|
|
235
|
-
difference_type operator-(const other_iterator& other) const {
|
|
236
|
-
return (m_ptr - other.m_ptr)/m_incr.value();
|
|
237
|
-
}
|
|
409
|
+
difference_type operator-(const other_iterator& other) const { return (m_ptr - other.m_ptr) / m_incr.value(); }
|
|
238
410
|
|
|
239
411
|
bool operator==(const pointer_based_stl_iterator& other) const { return m_ptr == other.m_ptr; }
|
|
240
412
|
bool operator!=(const pointer_based_stl_iterator& other) const { return m_ptr != other.m_ptr; }
|
|
241
|
-
bool operator<
|
|
413
|
+
bool operator<(const pointer_based_stl_iterator& other) const { return m_ptr < other.m_ptr; }
|
|
242
414
|
bool operator<=(const pointer_based_stl_iterator& other) const { return m_ptr <= other.m_ptr; }
|
|
243
|
-
bool operator>
|
|
415
|
+
bool operator>(const pointer_based_stl_iterator& other) const { return m_ptr > other.m_ptr; }
|
|
244
416
|
bool operator>=(const pointer_based_stl_iterator& other) const { return m_ptr >= other.m_ptr; }
|
|
245
417
|
|
|
246
418
|
bool operator==(const other_iterator& other) const { return m_ptr == other.m_ptr; }
|
|
247
419
|
bool operator!=(const other_iterator& other) const { return m_ptr != other.m_ptr; }
|
|
248
|
-
bool operator<
|
|
420
|
+
bool operator<(const other_iterator& other) const { return m_ptr < other.m_ptr; }
|
|
249
421
|
bool operator<=(const other_iterator& other) const { return m_ptr <= other.m_ptr; }
|
|
250
|
-
bool operator>
|
|
422
|
+
bool operator>(const other_iterator& other) const { return m_ptr > other.m_ptr; }
|
|
251
423
|
bool operator>=(const other_iterator& other) const { return m_ptr >= other.m_ptr; }
|
|
252
424
|
|
|
253
|
-
protected:
|
|
254
|
-
|
|
425
|
+
protected:
|
|
255
426
|
pointer m_ptr;
|
|
256
427
|
internal::variable_if_dynamic<Index, XprType::InnerStrideAtCompileTime> m_incr;
|
|
257
428
|
};
|
|
258
429
|
|
|
259
|
-
template<typename
|
|
260
|
-
struct indexed_based_stl_iterator_traits<generic_randaccess_stl_iterator<
|
|
261
|
-
|
|
262
|
-
typedef
|
|
263
|
-
typedef generic_randaccess_stl_iterator<
|
|
264
|
-
typedef generic_randaccess_stl_iterator<typename internal::add_const<XprType>::type> const_iterator;
|
|
430
|
+
template <typename XprType_>
|
|
431
|
+
struct indexed_based_stl_iterator_traits<generic_randaccess_stl_iterator<XprType_>> {
|
|
432
|
+
typedef XprType_ XprType;
|
|
433
|
+
typedef generic_randaccess_stl_iterator<std::remove_const_t<XprType>> non_const_iterator;
|
|
434
|
+
typedef generic_randaccess_stl_iterator<std::add_const_t<XprType>> const_iterator;
|
|
265
435
|
};
|
|
266
436
|
|
|
267
|
-
template<typename XprType>
|
|
268
|
-
class generic_randaccess_stl_iterator
|
|
269
|
-
{
|
|
270
|
-
public:
|
|
437
|
+
template <typename XprType>
|
|
438
|
+
class generic_randaccess_stl_iterator
|
|
439
|
+
: public indexed_based_stl_iterator_base<generic_randaccess_stl_iterator<XprType>> {
|
|
440
|
+
public:
|
|
271
441
|
typedef typename XprType::Scalar value_type;
|
|
272
442
|
|
|
273
|
-
protected:
|
|
274
|
-
|
|
443
|
+
protected:
|
|
275
444
|
enum {
|
|
276
445
|
has_direct_access = (internal::traits<XprType>::Flags & DirectAccessBit) ? 1 : 0,
|
|
277
|
-
is_lvalue
|
|
446
|
+
is_lvalue = internal::is_lvalue<XprType>::value
|
|
278
447
|
};
|
|
279
448
|
|
|
280
449
|
typedef indexed_based_stl_iterator_base<generic_randaccess_stl_iterator> Base;
|
|
@@ -283,181 +452,168 @@ protected:
|
|
|
283
452
|
|
|
284
453
|
// TODO currently const Transpose/Reshape expressions never returns const references,
|
|
285
454
|
// so lets return by value too.
|
|
286
|
-
//typedef
|
|
455
|
+
// typedef std::conditional_t<bool(has_direct_access), const value_type&, const value_type> read_only_ref_t;
|
|
287
456
|
typedef const value_type read_only_ref_t;
|
|
288
457
|
|
|
289
|
-
public:
|
|
290
|
-
|
|
291
|
-
typedef
|
|
292
|
-
|
|
293
|
-
|
|
458
|
+
public:
|
|
459
|
+
typedef std::conditional_t<bool(is_lvalue), value_type*, const value_type*> pointer;
|
|
460
|
+
typedef std::conditional_t<bool(is_lvalue), value_type&, read_only_ref_t> reference;
|
|
461
|
+
|
|
294
462
|
generic_randaccess_stl_iterator() : Base() {}
|
|
295
|
-
generic_randaccess_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
|
|
463
|
+
generic_randaccess_stl_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
|
|
296
464
|
generic_randaccess_stl_iterator(const typename Base::non_const_iterator& other) : Base(other) {}
|
|
297
465
|
using Base::operator=;
|
|
298
466
|
|
|
299
|
-
reference operator*()
|
|
300
|
-
reference operator[](Index i) const { return
|
|
301
|
-
pointer
|
|
467
|
+
reference operator*() const { return (*mp_xpr)(m_index); }
|
|
468
|
+
reference operator[](Index i) const { return (*mp_xpr)(m_index + i); }
|
|
469
|
+
pointer operator->() const { return &((*mp_xpr)(m_index)); }
|
|
302
470
|
};
|
|
303
471
|
|
|
304
|
-
template<typename
|
|
305
|
-
struct indexed_based_stl_iterator_traits<subvector_stl_iterator<
|
|
306
|
-
|
|
307
|
-
typedef
|
|
308
|
-
typedef subvector_stl_iterator<
|
|
309
|
-
typedef subvector_stl_iterator<typename internal::add_const<XprType>::type, Direction> const_iterator;
|
|
472
|
+
template <typename XprType_, DirectionType Direction>
|
|
473
|
+
struct indexed_based_stl_iterator_traits<subvector_stl_iterator<XprType_, Direction>> {
|
|
474
|
+
typedef XprType_ XprType;
|
|
475
|
+
typedef subvector_stl_iterator<std::remove_const_t<XprType>, Direction> non_const_iterator;
|
|
476
|
+
typedef subvector_stl_iterator<std::add_const_t<XprType>, Direction> const_iterator;
|
|
310
477
|
};
|
|
311
478
|
|
|
312
|
-
template<typename XprType, DirectionType Direction>
|
|
313
|
-
class subvector_stl_iterator : public indexed_based_stl_iterator_base<subvector_stl_iterator<XprType,Direction
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
enum { is_lvalue = internal::is_lvalue<XprType>::value };
|
|
479
|
+
template <typename XprType, DirectionType Direction>
|
|
480
|
+
class subvector_stl_iterator : public indexed_based_stl_iterator_base<subvector_stl_iterator<XprType, Direction>> {
|
|
481
|
+
protected:
|
|
482
|
+
enum { is_lvalue = internal::is_lvalue<XprType>::value };
|
|
318
483
|
|
|
319
484
|
typedef indexed_based_stl_iterator_base<subvector_stl_iterator> Base;
|
|
320
485
|
using Base::m_index;
|
|
321
486
|
using Base::mp_xpr;
|
|
322
487
|
|
|
323
|
-
typedef
|
|
324
|
-
typedef
|
|
325
|
-
|
|
488
|
+
typedef std::conditional_t<Direction == Vertical, typename XprType::ColXpr, typename XprType::RowXpr> SubVectorType;
|
|
489
|
+
typedef std::conditional_t<Direction == Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr>
|
|
490
|
+
ConstSubVectorType;
|
|
326
491
|
|
|
327
|
-
public:
|
|
328
|
-
typedef
|
|
492
|
+
public:
|
|
493
|
+
typedef std::conditional_t<bool(is_lvalue), SubVectorType, ConstSubVectorType> reference;
|
|
329
494
|
typedef typename reference::PlainObject value_type;
|
|
330
495
|
|
|
331
|
-
private:
|
|
332
|
-
class subvector_stl_iterator_ptr
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
496
|
+
private:
|
|
497
|
+
class subvector_stl_iterator_ptr {
|
|
498
|
+
public:
|
|
499
|
+
subvector_stl_iterator_ptr(const reference& subvector) : m_subvector(subvector) {}
|
|
500
|
+
reference* operator->() { return &m_subvector; }
|
|
501
|
+
|
|
502
|
+
private:
|
|
503
|
+
reference m_subvector;
|
|
339
504
|
};
|
|
340
|
-
public:
|
|
341
505
|
|
|
506
|
+
public:
|
|
342
507
|
typedef subvector_stl_iterator_ptr pointer;
|
|
343
|
-
|
|
508
|
+
|
|
344
509
|
subvector_stl_iterator() : Base() {}
|
|
345
|
-
subvector_stl_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
|
|
510
|
+
subvector_stl_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
|
|
346
511
|
|
|
347
|
-
reference operator*()
|
|
348
|
-
reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
|
|
349
|
-
pointer
|
|
512
|
+
reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
|
|
513
|
+
reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index + i); }
|
|
514
|
+
pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
|
|
350
515
|
};
|
|
351
516
|
|
|
352
|
-
template<typename
|
|
353
|
-
struct indexed_based_stl_iterator_traits<subvector_stl_reverse_iterator<
|
|
354
|
-
|
|
355
|
-
typedef
|
|
356
|
-
typedef subvector_stl_reverse_iterator<
|
|
357
|
-
typedef subvector_stl_reverse_iterator<typename internal::add_const<XprType>::type, Direction> const_iterator;
|
|
517
|
+
template <typename XprType_, DirectionType Direction>
|
|
518
|
+
struct indexed_based_stl_iterator_traits<subvector_stl_reverse_iterator<XprType_, Direction>> {
|
|
519
|
+
typedef XprType_ XprType;
|
|
520
|
+
typedef subvector_stl_reverse_iterator<std::remove_const_t<XprType>, Direction> non_const_iterator;
|
|
521
|
+
typedef subvector_stl_reverse_iterator<std::add_const_t<XprType>, Direction> const_iterator;
|
|
358
522
|
};
|
|
359
523
|
|
|
360
|
-
template<typename XprType, DirectionType Direction>
|
|
361
|
-
class subvector_stl_reverse_iterator
|
|
362
|
-
{
|
|
363
|
-
protected:
|
|
364
|
-
|
|
365
|
-
enum { is_lvalue = internal::is_lvalue<XprType>::value };
|
|
524
|
+
template <typename XprType, DirectionType Direction>
|
|
525
|
+
class subvector_stl_reverse_iterator
|
|
526
|
+
: public indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator<XprType, Direction>> {
|
|
527
|
+
protected:
|
|
528
|
+
enum { is_lvalue = internal::is_lvalue<XprType>::value };
|
|
366
529
|
|
|
367
530
|
typedef indexed_based_stl_reverse_iterator_base<subvector_stl_reverse_iterator> Base;
|
|
368
531
|
using Base::m_index;
|
|
369
532
|
using Base::mp_xpr;
|
|
370
533
|
|
|
371
|
-
typedef
|
|
372
|
-
typedef
|
|
373
|
-
|
|
534
|
+
typedef std::conditional_t<Direction == Vertical, typename XprType::ColXpr, typename XprType::RowXpr> SubVectorType;
|
|
535
|
+
typedef std::conditional_t<Direction == Vertical, typename XprType::ConstColXpr, typename XprType::ConstRowXpr>
|
|
536
|
+
ConstSubVectorType;
|
|
374
537
|
|
|
375
|
-
public:
|
|
376
|
-
typedef
|
|
538
|
+
public:
|
|
539
|
+
typedef std::conditional_t<bool(is_lvalue), SubVectorType, ConstSubVectorType> reference;
|
|
377
540
|
typedef typename reference::PlainObject value_type;
|
|
378
541
|
|
|
379
|
-
private:
|
|
380
|
-
class subvector_stl_reverse_iterator_ptr
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
542
|
+
private:
|
|
543
|
+
class subvector_stl_reverse_iterator_ptr {
|
|
544
|
+
public:
|
|
545
|
+
subvector_stl_reverse_iterator_ptr(const reference& subvector) : m_subvector(subvector) {}
|
|
546
|
+
reference* operator->() { return &m_subvector; }
|
|
547
|
+
|
|
548
|
+
private:
|
|
549
|
+
reference m_subvector;
|
|
387
550
|
};
|
|
388
|
-
public:
|
|
389
551
|
|
|
552
|
+
public:
|
|
390
553
|
typedef subvector_stl_reverse_iterator_ptr pointer;
|
|
391
|
-
|
|
554
|
+
|
|
392
555
|
subvector_stl_reverse_iterator() : Base() {}
|
|
393
|
-
subvector_stl_reverse_iterator(XprType& xpr, Index index) : Base(xpr,index) {}
|
|
556
|
+
subvector_stl_reverse_iterator(XprType& xpr, Index index) : Base(xpr, index) {}
|
|
394
557
|
|
|
395
|
-
reference operator*()
|
|
396
|
-
reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index+i); }
|
|
397
|
-
pointer
|
|
558
|
+
reference operator*() const { return (*mp_xpr).template subVector<Direction>(m_index); }
|
|
559
|
+
reference operator[](Index i) const { return (*mp_xpr).template subVector<Direction>(m_index + i); }
|
|
560
|
+
pointer operator->() const { return (*mp_xpr).template subVector<Direction>(m_index); }
|
|
398
561
|
};
|
|
399
562
|
|
|
400
|
-
}
|
|
401
|
-
|
|
563
|
+
} // namespace internal
|
|
402
564
|
|
|
403
565
|
/** returns an iterator to the first element of the 1D vector or array
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
template<typename Derived>
|
|
408
|
-
inline typename DenseBase<Derived>::iterator DenseBase<Derived>::begin()
|
|
409
|
-
{
|
|
566
|
+
* \only_for_vectors
|
|
567
|
+
* \sa end(), cbegin()
|
|
568
|
+
*/
|
|
569
|
+
template <typename Derived>
|
|
570
|
+
inline typename DenseBase<Derived>::iterator DenseBase<Derived>::begin() {
|
|
410
571
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
|
|
411
572
|
return iterator(derived(), 0);
|
|
412
573
|
}
|
|
413
574
|
|
|
414
575
|
/** const version of begin() */
|
|
415
|
-
template<typename Derived>
|
|
416
|
-
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::begin() const
|
|
417
|
-
{
|
|
576
|
+
template <typename Derived>
|
|
577
|
+
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::begin() const {
|
|
418
578
|
return cbegin();
|
|
419
579
|
}
|
|
420
580
|
|
|
421
581
|
/** returns a read-only const_iterator to the first element of the 1D vector or array
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
template<typename Derived>
|
|
426
|
-
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cbegin() const
|
|
427
|
-
{
|
|
582
|
+
* \only_for_vectors
|
|
583
|
+
* \sa cend(), begin()
|
|
584
|
+
*/
|
|
585
|
+
template <typename Derived>
|
|
586
|
+
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cbegin() const {
|
|
428
587
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
|
|
429
588
|
return const_iterator(derived(), 0);
|
|
430
589
|
}
|
|
431
590
|
|
|
432
591
|
/** returns an iterator to the element following the last element of the 1D vector or array
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
template<typename Derived>
|
|
437
|
-
inline typename DenseBase<Derived>::iterator DenseBase<Derived>::end()
|
|
438
|
-
{
|
|
592
|
+
* \only_for_vectors
|
|
593
|
+
* \sa begin(), cend()
|
|
594
|
+
*/
|
|
595
|
+
template <typename Derived>
|
|
596
|
+
inline typename DenseBase<Derived>::iterator DenseBase<Derived>::end() {
|
|
439
597
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
|
|
440
598
|
return iterator(derived(), size());
|
|
441
599
|
}
|
|
442
600
|
|
|
443
601
|
/** const version of end() */
|
|
444
|
-
template<typename Derived>
|
|
445
|
-
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::end() const
|
|
446
|
-
{
|
|
602
|
+
template <typename Derived>
|
|
603
|
+
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::end() const {
|
|
447
604
|
return cend();
|
|
448
605
|
}
|
|
449
606
|
|
|
450
607
|
/** returns a read-only const_iterator to the element following the last element of the 1D vector or array
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
template<typename Derived>
|
|
455
|
-
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cend() const
|
|
456
|
-
{
|
|
608
|
+
* \only_for_vectors
|
|
609
|
+
* \sa begin(), cend()
|
|
610
|
+
*/
|
|
611
|
+
template <typename Derived>
|
|
612
|
+
inline typename DenseBase<Derived>::const_iterator DenseBase<Derived>::cend() const {
|
|
457
613
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived);
|
|
458
614
|
return const_iterator(derived(), size());
|
|
459
615
|
}
|
|
460
616
|
|
|
461
|
-
}
|
|
617
|
+
} // namespace Eigen
|
|
462
618
|
|
|
463
|
-
#endif
|
|
619
|
+
#endif // EIGEN_STLITERATORS_H
|