@ladybugmem/icebug 0.1.0 → 0.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.
Files changed (625) hide show
  1. package/binding.gyp +32 -10
  2. package/lib/index.js +23 -11
  3. package/package.json +8 -13
  4. package/prebuilds/darwin-arm64/icebug.node +0 -0
  5. package/{vendor/lib → prebuilds/darwin-arm64}/libnetworkit.dylib +0 -0
  6. package/prebuilds/linux-x64/icebug.node +0 -0
  7. package/prebuilds/linux-x64/libnetworkit.so +0 -0
  8. package/scripts/download-icebug.sh +92 -0
  9. package/build/Release/.deps/Release/icebug.node.d +0 -1
  10. package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +0 -291
  11. package/build/Release/icebug.node +0 -0
  12. package/build/Release/obj.target/icebug/src/addon.o +0 -0
  13. package/vendor/include/networkit/GlobalState.hpp +0 -86
  14. package/vendor/include/networkit/Globals.hpp +0 -41
  15. package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +0 -27
  16. package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +0 -1292
  17. package/vendor/include/networkit/algebraic/CSRMatrix.hpp +0 -11
  18. package/vendor/include/networkit/algebraic/DenseMatrix.hpp +0 -537
  19. package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +0 -514
  20. package/vendor/include/networkit/algebraic/GraphBLAS.hpp +0 -323
  21. package/vendor/include/networkit/algebraic/MatrixTools.hpp +0 -156
  22. package/vendor/include/networkit/algebraic/Semirings.hpp +0 -171
  23. package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +0 -111
  24. package/vendor/include/networkit/algebraic/Vector.hpp +0 -371
  25. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +0 -72
  26. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +0 -88
  27. package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +0 -96
  28. package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +0 -145
  29. package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +0 -122
  30. package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +0 -76
  31. package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +0 -113
  32. package/vendor/include/networkit/auxiliary/ArrayTools.hpp +0 -85
  33. package/vendor/include/networkit/auxiliary/BloomFilter.hpp +0 -70
  34. package/vendor/include/networkit/auxiliary/BucketPQ.hpp +0 -142
  35. package/vendor/include/networkit/auxiliary/Enforce.hpp +0 -117
  36. package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +0 -74
  37. package/vendor/include/networkit/auxiliary/HashUtils.hpp +0 -28
  38. package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +0 -52
  39. package/vendor/include/networkit/auxiliary/Log.hpp +0 -119
  40. package/vendor/include/networkit/auxiliary/MissingMath.hpp +0 -48
  41. package/vendor/include/networkit/auxiliary/Multiprecision.hpp +0 -17
  42. package/vendor/include/networkit/auxiliary/NumberParsing.hpp +0 -307
  43. package/vendor/include/networkit/auxiliary/NumericTools.hpp +0 -57
  44. package/vendor/include/networkit/auxiliary/Parallel.hpp +0 -56
  45. package/vendor/include/networkit/auxiliary/Parallelism.hpp +0 -33
  46. package/vendor/include/networkit/auxiliary/PrioQueue.hpp +0 -252
  47. package/vendor/include/networkit/auxiliary/Random.hpp +0 -122
  48. package/vendor/include/networkit/auxiliary/SetIntersector.hpp +0 -72
  49. package/vendor/include/networkit/auxiliary/SignalHandling.hpp +0 -39
  50. package/vendor/include/networkit/auxiliary/SortedList.hpp +0 -128
  51. package/vendor/include/networkit/auxiliary/SparseVector.hpp +0 -215
  52. package/vendor/include/networkit/auxiliary/SpinLock.hpp +0 -23
  53. package/vendor/include/networkit/auxiliary/StringBuilder.hpp +0 -322
  54. package/vendor/include/networkit/auxiliary/StringTools.hpp +0 -76
  55. package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +0 -76
  56. package/vendor/include/networkit/auxiliary/Timer.hpp +0 -145
  57. package/vendor/include/networkit/auxiliary/VectorComparator.hpp +0 -32
  58. package/vendor/include/networkit/base/Algorithm.hpp +0 -41
  59. package/vendor/include/networkit/base/DynAlgorithm.hpp +0 -31
  60. package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +0 -62
  61. package/vendor/include/networkit/centrality/ApproxCloseness.hpp +0 -136
  62. package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +0 -156
  63. package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +0 -124
  64. package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +0 -84
  65. package/vendor/include/networkit/centrality/Betweenness.hpp +0 -47
  66. package/vendor/include/networkit/centrality/Centrality.hpp +0 -98
  67. package/vendor/include/networkit/centrality/Closeness.hpp +0 -107
  68. package/vendor/include/networkit/centrality/ComplexPaths.hpp +0 -113
  69. package/vendor/include/networkit/centrality/CoreDecomposition.hpp +0 -161
  70. package/vendor/include/networkit/centrality/DegreeCentrality.hpp +0 -55
  71. package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +0 -95
  72. package/vendor/include/networkit/centrality/DynBetweenness.hpp +0 -99
  73. package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +0 -98
  74. package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +0 -115
  75. package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +0 -223
  76. package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +0 -41
  77. package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +0 -51
  78. package/vendor/include/networkit/centrality/ForestCentrality.hpp +0 -112
  79. package/vendor/include/networkit/centrality/GedWalk.hpp +0 -225
  80. package/vendor/include/networkit/centrality/GroupCloseness.hpp +0 -115
  81. package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +0 -78
  82. package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +0 -77
  83. package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +0 -106
  84. package/vendor/include/networkit/centrality/GroupDegree.hpp +0 -155
  85. package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +0 -83
  86. package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +0 -48
  87. package/vendor/include/networkit/centrality/KPathCentrality.hpp +0 -52
  88. package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +0 -242
  89. package/vendor/include/networkit/centrality/KatzCentrality.hpp +0 -62
  90. package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +0 -44
  91. package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +0 -60
  92. package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +0 -43
  93. package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +0 -42
  94. package/vendor/include/networkit/centrality/PageRank.hpp +0 -101
  95. package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +0 -48
  96. package/vendor/include/networkit/centrality/Sfigality.hpp +0 -45
  97. package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +0 -86
  98. package/vendor/include/networkit/centrality/TopCloseness.hpp +0 -136
  99. package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +0 -151
  100. package/vendor/include/networkit/clique/MaximalCliques.hpp +0 -83
  101. package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +0 -59
  102. package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +0 -156
  103. package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +0 -57
  104. package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +0 -43
  105. package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +0 -33
  106. package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +0 -62
  107. package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +0 -31
  108. package/vendor/include/networkit/community/ClusteringGenerator.hpp +0 -75
  109. package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +0 -58
  110. package/vendor/include/networkit/community/Conductance.hpp +0 -32
  111. package/vendor/include/networkit/community/CoverF1Similarity.hpp +0 -53
  112. package/vendor/include/networkit/community/CoverHubDominance.hpp +0 -38
  113. package/vendor/include/networkit/community/Coverage.hpp +0 -25
  114. package/vendor/include/networkit/community/CutClustering.hpp +0 -62
  115. package/vendor/include/networkit/community/DissimilarityMeasure.hpp +0 -31
  116. package/vendor/include/networkit/community/DynamicNMIDistance.hpp +0 -44
  117. package/vendor/include/networkit/community/EdgeCut.hpp +0 -24
  118. package/vendor/include/networkit/community/GraphClusteringTools.hpp +0 -103
  119. package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +0 -28
  120. package/vendor/include/networkit/community/HubDominance.hpp +0 -46
  121. package/vendor/include/networkit/community/IntrapartitionDensity.hpp +0 -44
  122. package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +0 -40
  123. package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +0 -40
  124. package/vendor/include/networkit/community/JaccardMeasure.hpp +0 -25
  125. package/vendor/include/networkit/community/LFM.hpp +0 -49
  126. package/vendor/include/networkit/community/LPDegreeOrdered.hpp +0 -48
  127. package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +0 -100
  128. package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +0 -31
  129. package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +0 -31
  130. package/vendor/include/networkit/community/LouvainMapEquation.hpp +0 -135
  131. package/vendor/include/networkit/community/Modularity.hpp +0 -54
  132. package/vendor/include/networkit/community/NMIDistance.hpp +0 -28
  133. package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +0 -27
  134. package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +0 -51
  135. package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +0 -175
  136. package/vendor/include/networkit/community/PLM.hpp +0 -89
  137. package/vendor/include/networkit/community/PLP.hpp +0 -83
  138. package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +0 -37
  139. package/vendor/include/networkit/community/ParallelLeiden.hpp +0 -96
  140. package/vendor/include/networkit/community/ParallelLeidenView.hpp +0 -138
  141. package/vendor/include/networkit/community/PartitionFragmentation.hpp +0 -30
  142. package/vendor/include/networkit/community/PartitionHubDominance.hpp +0 -37
  143. package/vendor/include/networkit/community/PartitionIntersection.hpp +0 -25
  144. package/vendor/include/networkit/community/QualityMeasure.hpp +0 -27
  145. package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +0 -40
  146. package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +0 -40
  147. package/vendor/include/networkit/community/StablePartitionNodes.hpp +0 -48
  148. package/vendor/include/networkit/components/BiconnectedComponents.hpp +0 -116
  149. package/vendor/include/networkit/components/ComponentDecomposition.hpp +0 -72
  150. package/vendor/include/networkit/components/ConnectedComponents.hpp +0 -55
  151. package/vendor/include/networkit/components/DynConnectedComponents.hpp +0 -71
  152. package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +0 -73
  153. package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +0 -44
  154. package/vendor/include/networkit/components/RandomSpanningForest.hpp +0 -36
  155. package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +0 -50
  156. package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +0 -59
  157. package/vendor/include/networkit/correlation/Assortativity.hpp +0 -64
  158. package/vendor/include/networkit/distance/APSP.hpp +0 -70
  159. package/vendor/include/networkit/distance/AStar.hpp +0 -68
  160. package/vendor/include/networkit/distance/AStarGeneral.hpp +0 -110
  161. package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +0 -52
  162. package/vendor/include/networkit/distance/AffectedNodes.hpp +0 -130
  163. package/vendor/include/networkit/distance/AlgebraicDistance.hpp +0 -63
  164. package/vendor/include/networkit/distance/BFS.hpp +0 -43
  165. package/vendor/include/networkit/distance/BidirectionalBFS.hpp +0 -51
  166. package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +0 -69
  167. package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +0 -89
  168. package/vendor/include/networkit/distance/Diameter.hpp +0 -97
  169. package/vendor/include/networkit/distance/Dijkstra.hpp +0 -50
  170. package/vendor/include/networkit/distance/DynAPSP.hpp +0 -67
  171. package/vendor/include/networkit/distance/DynBFS.hpp +0 -56
  172. package/vendor/include/networkit/distance/DynDijkstra.hpp +0 -57
  173. package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +0 -67
  174. package/vendor/include/networkit/distance/DynSSSP.hpp +0 -87
  175. package/vendor/include/networkit/distance/Eccentricity.hpp +0 -32
  176. package/vendor/include/networkit/distance/EffectiveDiameter.hpp +0 -47
  177. package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +0 -57
  178. package/vendor/include/networkit/distance/FloydWarshall.hpp +0 -93
  179. package/vendor/include/networkit/distance/GraphDistance.hpp +0 -49
  180. package/vendor/include/networkit/distance/HopPlotApproximation.hpp +0 -62
  181. package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +0 -66
  182. package/vendor/include/networkit/distance/IncompleteSSSP.hpp +0 -41
  183. package/vendor/include/networkit/distance/JaccardDistance.hpp +0 -57
  184. package/vendor/include/networkit/distance/MultiTargetBFS.hpp +0 -32
  185. package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +0 -40
  186. package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +0 -47
  187. package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +0 -56
  188. package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +0 -56
  189. package/vendor/include/networkit/distance/NodeDistance.hpp +0 -54
  190. package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +0 -76
  191. package/vendor/include/networkit/distance/ReverseBFS.hpp +0 -46
  192. package/vendor/include/networkit/distance/SPSP.hpp +0 -143
  193. package/vendor/include/networkit/distance/SSSP.hpp +0 -216
  194. package/vendor/include/networkit/distance/STSP.hpp +0 -193
  195. package/vendor/include/networkit/distance/Volume.hpp +0 -66
  196. package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +0 -40
  197. package/vendor/include/networkit/dynamics/DGSWriter.hpp +0 -30
  198. package/vendor/include/networkit/dynamics/GraphDifference.hpp +0 -110
  199. package/vendor/include/networkit/dynamics/GraphEvent.hpp +0 -55
  200. package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +0 -39
  201. package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +0 -55
  202. package/vendor/include/networkit/dynamics/GraphUpdater.hpp +0 -38
  203. package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +0 -26
  204. package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +0 -33
  205. package/vendor/include/networkit/edgescores/EdgeScore.hpp +0 -50
  206. package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +0 -33
  207. package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +0 -33
  208. package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +0 -32
  209. package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +0 -35
  210. package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +0 -29
  211. package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +0 -23
  212. package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +0 -39
  213. package/vendor/include/networkit/embedding/Node2Vec.hpp +0 -83
  214. package/vendor/include/networkit/flow/EdmondsKarp.hpp +0 -112
  215. package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +0 -87
  216. package/vendor/include/networkit/generators/ChungLuGenerator.hpp +0 -46
  217. package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +0 -63
  218. package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +0 -56
  219. package/vendor/include/networkit/generators/ConfigurationModel.hpp +0 -36
  220. package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +0 -33
  221. package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +0 -33
  222. package/vendor/include/networkit/generators/DynamicDGSParser.hpp +0 -51
  223. package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +0 -34
  224. package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +0 -55
  225. package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +0 -40
  226. package/vendor/include/networkit/generators/DynamicGraphSource.hpp +0 -79
  227. package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +0 -143
  228. package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +0 -26
  229. package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +0 -54
  230. package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +0 -65
  231. package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +0 -318
  232. package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +0 -56
  233. package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +0 -48
  234. package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +0 -236
  235. package/vendor/include/networkit/generators/LFRGenerator.hpp +0 -175
  236. package/vendor/include/networkit/generators/MocnikGenerator.hpp +0 -147
  237. package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +0 -58
  238. package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +0 -128
  239. package/vendor/include/networkit/generators/PubWebGenerator.hpp +0 -94
  240. package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +0 -37
  241. package/vendor/include/networkit/generators/RmatGenerator.hpp +0 -67
  242. package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +0 -42
  243. package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +0 -30
  244. package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +0 -41
  245. package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +0 -43
  246. package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +0 -857
  247. package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +0 -587
  248. package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +0 -726
  249. package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +0 -232
  250. package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +0 -149
  251. package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +0 -143
  252. package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +0 -248
  253. package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +0 -145
  254. package/vendor/include/networkit/global/ClusteringCoefficient.hpp +0 -42
  255. package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +0 -24
  256. package/vendor/include/networkit/graph/Attributes.hpp +0 -568
  257. package/vendor/include/networkit/graph/BFS.hpp +0 -111
  258. package/vendor/include/networkit/graph/DFS.hpp +0 -71
  259. package/vendor/include/networkit/graph/Dijkstra.hpp +0 -83
  260. package/vendor/include/networkit/graph/EdgeIterators.hpp +0 -171
  261. package/vendor/include/networkit/graph/Graph.hpp +0 -2083
  262. package/vendor/include/networkit/graph/GraphBuilder.hpp +0 -289
  263. package/vendor/include/networkit/graph/GraphR.hpp +0 -133
  264. package/vendor/include/networkit/graph/GraphTools.hpp +0 -589
  265. package/vendor/include/networkit/graph/GraphW.hpp +0 -1236
  266. package/vendor/include/networkit/graph/KruskalMSF.hpp +0 -50
  267. package/vendor/include/networkit/graph/NeighborIterators.hpp +0 -163
  268. package/vendor/include/networkit/graph/NodeIterators.hpp +0 -127
  269. package/vendor/include/networkit/graph/PrimMSF.hpp +0 -66
  270. package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +0 -133
  271. package/vendor/include/networkit/graph/SpanningForest.hpp +0 -41
  272. package/vendor/include/networkit/graph/TopologicalSort.hpp +0 -87
  273. package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +0 -126
  274. package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +0 -68
  275. package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +0 -44
  276. package/vendor/include/networkit/independentset/Luby.hpp +0 -27
  277. package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +0 -45
  278. package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +0 -47
  279. package/vendor/include/networkit/io/BinaryPartitionReader.hpp +0 -41
  280. package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +0 -44
  281. package/vendor/include/networkit/io/CoverReader.hpp +0 -27
  282. package/vendor/include/networkit/io/CoverWriter.hpp +0 -21
  283. package/vendor/include/networkit/io/DGSReader.hpp +0 -39
  284. package/vendor/include/networkit/io/DibapGraphReader.hpp +0 -43
  285. package/vendor/include/networkit/io/DotGraphWriter.hpp +0 -39
  286. package/vendor/include/networkit/io/DotPartitionWriter.hpp +0 -23
  287. package/vendor/include/networkit/io/DynamicGraphReader.hpp +0 -29
  288. package/vendor/include/networkit/io/EdgeListCoverReader.hpp +0 -35
  289. package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +0 -43
  290. package/vendor/include/networkit/io/EdgeListReader.hpp +0 -61
  291. package/vendor/include/networkit/io/EdgeListWriter.hpp +0 -48
  292. package/vendor/include/networkit/io/GMLGraphReader.hpp +0 -33
  293. package/vendor/include/networkit/io/GMLGraphWriter.hpp +0 -33
  294. package/vendor/include/networkit/io/GraphIO.hpp +0 -52
  295. package/vendor/include/networkit/io/GraphReader.hpp +0 -40
  296. package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +0 -71
  297. package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +0 -61
  298. package/vendor/include/networkit/io/GraphWriter.hpp +0 -27
  299. package/vendor/include/networkit/io/KONECTGraphReader.hpp +0 -44
  300. package/vendor/include/networkit/io/LineFileReader.hpp +0 -42
  301. package/vendor/include/networkit/io/METISGraphReader.hpp +0 -36
  302. package/vendor/include/networkit/io/METISGraphWriter.hpp +0 -29
  303. package/vendor/include/networkit/io/METISParser.hpp +0 -63
  304. package/vendor/include/networkit/io/MTXGraphReader.hpp +0 -31
  305. package/vendor/include/networkit/io/MTXParser.hpp +0 -87
  306. package/vendor/include/networkit/io/MatrixMarketReader.hpp +0 -33
  307. package/vendor/include/networkit/io/MatrixReader.hpp +0 -33
  308. package/vendor/include/networkit/io/MemoryMappedFile.hpp +0 -80
  309. package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +0 -144
  310. package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +0 -50
  311. package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +0 -71
  312. package/vendor/include/networkit/io/PartitionReader.hpp +0 -34
  313. package/vendor/include/networkit/io/PartitionWriter.hpp +0 -31
  314. package/vendor/include/networkit/io/RBGraphReader.hpp +0 -37
  315. package/vendor/include/networkit/io/RBMatrixReader.hpp +0 -49
  316. package/vendor/include/networkit/io/RasterReader.hpp +0 -40
  317. package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +0 -28
  318. package/vendor/include/networkit/io/SNAPGraphReader.hpp +0 -53
  319. package/vendor/include/networkit/io/SNAPGraphWriter.hpp +0 -53
  320. package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +0 -44
  321. package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +0 -27
  322. package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +0 -39
  323. package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +0 -37
  324. package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +0 -36
  325. package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +0 -70
  326. package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +0 -39
  327. package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +0 -135
  328. package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +0 -44
  329. package/vendor/include/networkit/linkprediction/KatzIndex.hpp +0 -84
  330. package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +0 -98
  331. package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +0 -56
  332. package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +0 -60
  333. package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +0 -42
  334. package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +0 -54
  335. package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +0 -48
  336. package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +0 -40
  337. package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +0 -66
  338. package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +0 -37
  339. package/vendor/include/networkit/linkprediction/ROCMetric.hpp +0 -39
  340. package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +0 -47
  341. package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +0 -38
  342. package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +0 -50
  343. package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +0 -39
  344. package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +0 -35
  345. package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +0 -35
  346. package/vendor/include/networkit/matching/BMatcher.hpp +0 -52
  347. package/vendor/include/networkit/matching/BMatching.hpp +0 -115
  348. package/vendor/include/networkit/matching/BSuitorMatcher.hpp +0 -170
  349. package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +0 -78
  350. package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +0 -35
  351. package/vendor/include/networkit/matching/Matcher.hpp +0 -55
  352. package/vendor/include/networkit/matching/Matching.hpp +0 -111
  353. package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +0 -46
  354. package/vendor/include/networkit/matching/SuitorMatcher.hpp +0 -62
  355. package/vendor/include/networkit/numerics/ConjugateGradient.hpp +0 -163
  356. package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +0 -99
  357. package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +0 -70
  358. package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +0 -460
  359. package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +0 -47
  360. package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +0 -56
  361. package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +0 -52
  362. package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +0 -133
  363. package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +0 -28
  364. package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +0 -165
  365. package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +0 -1090
  366. package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +0 -316
  367. package/vendor/include/networkit/numerics/LinearSolver.hpp +0 -151
  368. package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +0 -61
  369. package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +0 -36
  370. package/vendor/include/networkit/numerics/Smoother.hpp +0 -37
  371. package/vendor/include/networkit/overlap/HashingOverlapper.hpp +0 -28
  372. package/vendor/include/networkit/overlap/Overlapper.hpp +0 -27
  373. package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +0 -113
  374. package/vendor/include/networkit/randomization/Curveball.hpp +0 -49
  375. package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +0 -39
  376. package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +0 -39
  377. package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +0 -82
  378. package/vendor/include/networkit/randomization/EdgeSwitching.hpp +0 -157
  379. package/vendor/include/networkit/randomization/GlobalCurveball.hpp +0 -69
  380. package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +0 -303
  381. package/vendor/include/networkit/reachability/AllSimplePaths.hpp +0 -122
  382. package/vendor/include/networkit/reachability/ReachableNodes.hpp +0 -83
  383. package/vendor/include/networkit/scd/ApproximatePageRank.hpp +0 -51
  384. package/vendor/include/networkit/scd/CliqueDetect.hpp +0 -55
  385. package/vendor/include/networkit/scd/CombinedSCD.hpp +0 -51
  386. package/vendor/include/networkit/scd/GCE.hpp +0 -42
  387. package/vendor/include/networkit/scd/LFMLocal.hpp +0 -54
  388. package/vendor/include/networkit/scd/LocalT.hpp +0 -40
  389. package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +0 -46
  390. package/vendor/include/networkit/scd/PageRankNibble.hpp +0 -55
  391. package/vendor/include/networkit/scd/RandomBFS.hpp +0 -33
  392. package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +0 -121
  393. package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +0 -76
  394. package/vendor/include/networkit/scd/SetConductance.hpp +0 -47
  395. package/vendor/include/networkit/scd/TCE.hpp +0 -41
  396. package/vendor/include/networkit/scd/TwoPhaseL.hpp +0 -40
  397. package/vendor/include/networkit/scoring/EdgeScoring.hpp +0 -44
  398. package/vendor/include/networkit/scoring/ModularityScoring.hpp +0 -79
  399. package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +0 -59
  400. package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +0 -28
  401. package/vendor/include/networkit/sparsification/ForestFireScore.hpp +0 -34
  402. package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +0 -40
  403. package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +0 -30
  404. package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +0 -124
  405. package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +0 -63
  406. package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +0 -38
  407. package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +0 -33
  408. package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +0 -29
  409. package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +0 -23
  410. package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +0 -35
  411. package/vendor/include/networkit/sparsification/SimmelianScore.hpp +0 -92
  412. package/vendor/include/networkit/sparsification/Sparsifiers.hpp +0 -166
  413. package/vendor/include/networkit/structures/Cover.hpp +0 -248
  414. package/vendor/include/networkit/structures/LocalCommunity.hpp +0 -363
  415. package/vendor/include/networkit/structures/Partition.hpp +0 -335
  416. package/vendor/include/networkit/structures/UnionFind.hpp +0 -66
  417. package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +0 -157
  418. package/vendor/include/networkit/viz/MaxentStress.hpp +0 -346
  419. package/vendor/include/networkit/viz/Octree.hpp +0 -428
  420. package/vendor/include/networkit/viz/PivotMDS.hpp +0 -63
  421. package/vendor/include/networkit/viz/Point.hpp +0 -415
  422. package/vendor/include/networkit/viz/PostscriptWriter.hpp +0 -78
  423. package/vendor/include/tlx/algorithm/exclusive_scan.hpp +0 -56
  424. package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +0 -56
  425. package/vendor/include/tlx/algorithm/merge_advance.hpp +0 -177
  426. package/vendor/include/tlx/algorithm/merge_combine.hpp +0 -76
  427. package/vendor/include/tlx/algorithm/multisequence_partition.hpp +0 -346
  428. package/vendor/include/tlx/algorithm/multisequence_selection.hpp +0 -351
  429. package/vendor/include/tlx/algorithm/multiway_merge.hpp +0 -1385
  430. package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +0 -257
  431. package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +0 -408
  432. package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +0 -116
  433. package/vendor/include/tlx/algorithm.hpp +0 -36
  434. package/vendor/include/tlx/allocator_base.hpp +0 -100
  435. package/vendor/include/tlx/backtrace.hpp +0 -54
  436. package/vendor/include/tlx/cmdline_parser.hpp +0 -498
  437. package/vendor/include/tlx/container/btree.hpp +0 -3977
  438. package/vendor/include/tlx/container/btree_map.hpp +0 -634
  439. package/vendor/include/tlx/container/btree_multimap.hpp +0 -627
  440. package/vendor/include/tlx/container/btree_multiset.hpp +0 -612
  441. package/vendor/include/tlx/container/btree_set.hpp +0 -612
  442. package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +0 -416
  443. package/vendor/include/tlx/container/d_ary_heap.hpp +0 -311
  444. package/vendor/include/tlx/container/loser_tree.hpp +0 -1009
  445. package/vendor/include/tlx/container/lru_cache.hpp +0 -319
  446. package/vendor/include/tlx/container/radix_heap.hpp +0 -735
  447. package/vendor/include/tlx/container/ring_buffer.hpp +0 -428
  448. package/vendor/include/tlx/container/simple_vector.hpp +0 -304
  449. package/vendor/include/tlx/container/splay_tree.hpp +0 -399
  450. package/vendor/include/tlx/container/string_view.hpp +0 -805
  451. package/vendor/include/tlx/container.hpp +0 -40
  452. package/vendor/include/tlx/counting_ptr.hpp +0 -522
  453. package/vendor/include/tlx/define/attribute_always_inline.hpp +0 -34
  454. package/vendor/include/tlx/define/attribute_fallthrough.hpp +0 -36
  455. package/vendor/include/tlx/define/attribute_format_printf.hpp +0 -34
  456. package/vendor/include/tlx/define/attribute_packed.hpp +0 -34
  457. package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +0 -34
  458. package/vendor/include/tlx/define/constexpr.hpp +0 -31
  459. package/vendor/include/tlx/define/deprecated.hpp +0 -39
  460. package/vendor/include/tlx/define/endian.hpp +0 -49
  461. package/vendor/include/tlx/define/likely.hpp +0 -33
  462. package/vendor/include/tlx/define/visibility_hidden.hpp +0 -34
  463. package/vendor/include/tlx/define.hpp +0 -36
  464. package/vendor/include/tlx/delegate.hpp +0 -524
  465. package/vendor/include/tlx/die/core.hpp +0 -311
  466. package/vendor/include/tlx/die.hpp +0 -106
  467. package/vendor/include/tlx/digest/md5.hpp +0 -81
  468. package/vendor/include/tlx/digest/sha1.hpp +0 -81
  469. package/vendor/include/tlx/digest/sha256.hpp +0 -81
  470. package/vendor/include/tlx/digest/sha512.hpp +0 -81
  471. package/vendor/include/tlx/digest.hpp +0 -30
  472. package/vendor/include/tlx/logger/all.hpp +0 -33
  473. package/vendor/include/tlx/logger/array.hpp +0 -43
  474. package/vendor/include/tlx/logger/core.hpp +0 -287
  475. package/vendor/include/tlx/logger/deque.hpp +0 -42
  476. package/vendor/include/tlx/logger/map.hpp +0 -65
  477. package/vendor/include/tlx/logger/set.hpp +0 -60
  478. package/vendor/include/tlx/logger/tuple.hpp +0 -66
  479. package/vendor/include/tlx/logger/unordered_map.hpp +0 -68
  480. package/vendor/include/tlx/logger/unordered_set.hpp +0 -64
  481. package/vendor/include/tlx/logger/wrap_unprintable.hpp +0 -75
  482. package/vendor/include/tlx/logger.hpp +0 -44
  483. package/vendor/include/tlx/math/abs_diff.hpp +0 -35
  484. package/vendor/include/tlx/math/aggregate.hpp +0 -231
  485. package/vendor/include/tlx/math/aggregate_min_max.hpp +0 -116
  486. package/vendor/include/tlx/math/bswap.hpp +0 -148
  487. package/vendor/include/tlx/math/bswap_be.hpp +0 -79
  488. package/vendor/include/tlx/math/bswap_le.hpp +0 -79
  489. package/vendor/include/tlx/math/clz.hpp +0 -174
  490. package/vendor/include/tlx/math/ctz.hpp +0 -174
  491. package/vendor/include/tlx/math/div_ceil.hpp +0 -36
  492. package/vendor/include/tlx/math/ffs.hpp +0 -123
  493. package/vendor/include/tlx/math/integer_log2.hpp +0 -189
  494. package/vendor/include/tlx/math/is_power_of_two.hpp +0 -74
  495. package/vendor/include/tlx/math/polynomial_regression.hpp +0 -243
  496. package/vendor/include/tlx/math/popcount.hpp +0 -173
  497. package/vendor/include/tlx/math/power_to_the.hpp +0 -44
  498. package/vendor/include/tlx/math/rol.hpp +0 -112
  499. package/vendor/include/tlx/math/ror.hpp +0 -112
  500. package/vendor/include/tlx/math/round_to_power_of_two.hpp +0 -121
  501. package/vendor/include/tlx/math/round_up.hpp +0 -36
  502. package/vendor/include/tlx/math/sgn.hpp +0 -38
  503. package/vendor/include/tlx/math.hpp +0 -46
  504. package/vendor/include/tlx/meta/apply_tuple.hpp +0 -55
  505. package/vendor/include/tlx/meta/call_for_range.hpp +0 -78
  506. package/vendor/include/tlx/meta/call_foreach.hpp +0 -60
  507. package/vendor/include/tlx/meta/call_foreach_tuple.hpp +0 -60
  508. package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +0 -61
  509. package/vendor/include/tlx/meta/call_foreach_with_index.hpp +0 -64
  510. package/vendor/include/tlx/meta/enable_if.hpp +0 -37
  511. package/vendor/include/tlx/meta/fold_left.hpp +0 -63
  512. package/vendor/include/tlx/meta/fold_left_tuple.hpp +0 -60
  513. package/vendor/include/tlx/meta/fold_right.hpp +0 -63
  514. package/vendor/include/tlx/meta/fold_right_tuple.hpp +0 -60
  515. package/vendor/include/tlx/meta/function_chain.hpp +0 -197
  516. package/vendor/include/tlx/meta/function_stack.hpp +0 -189
  517. package/vendor/include/tlx/meta/has_member.hpp +0 -80
  518. package/vendor/include/tlx/meta/has_method.hpp +0 -117
  519. package/vendor/include/tlx/meta/index_sequence.hpp +0 -66
  520. package/vendor/include/tlx/meta/is_std_array.hpp +0 -40
  521. package/vendor/include/tlx/meta/is_std_pair.hpp +0 -39
  522. package/vendor/include/tlx/meta/is_std_tuple.hpp +0 -39
  523. package/vendor/include/tlx/meta/is_std_vector.hpp +0 -39
  524. package/vendor/include/tlx/meta/log2.hpp +0 -101
  525. package/vendor/include/tlx/meta/no_operation.hpp +0 -55
  526. package/vendor/include/tlx/meta/static_index.hpp +0 -42
  527. package/vendor/include/tlx/meta/vexpand.hpp +0 -34
  528. package/vendor/include/tlx/meta/vmap_for_range.hpp +0 -84
  529. package/vendor/include/tlx/meta/vmap_foreach.hpp +0 -63
  530. package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +0 -59
  531. package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +0 -62
  532. package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +0 -70
  533. package/vendor/include/tlx/meta.hpp +0 -55
  534. package/vendor/include/tlx/multi_timer.hpp +0 -148
  535. package/vendor/include/tlx/port/setenv.hpp +0 -31
  536. package/vendor/include/tlx/port.hpp +0 -27
  537. package/vendor/include/tlx/semaphore.hpp +0 -119
  538. package/vendor/include/tlx/simple_vector.hpp +0 -20
  539. package/vendor/include/tlx/siphash.hpp +0 -282
  540. package/vendor/include/tlx/sort/networks/best.hpp +0 -611
  541. package/vendor/include/tlx/sort/networks/bose_nelson.hpp +0 -412
  542. package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +0 -507
  543. package/vendor/include/tlx/sort/networks/cswap.hpp +0 -60
  544. package/vendor/include/tlx/sort/parallel_mergesort.hpp +0 -398
  545. package/vendor/include/tlx/sort/strings/insertion_sort.hpp +0 -232
  546. package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +0 -185
  547. package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +0 -1647
  548. package/vendor/include/tlx/sort/strings/radix_sort.hpp +0 -934
  549. package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +0 -756
  550. package/vendor/include/tlx/sort/strings/string_ptr.hpp +0 -426
  551. package/vendor/include/tlx/sort/strings/string_set.hpp +0 -800
  552. package/vendor/include/tlx/sort/strings.hpp +0 -329
  553. package/vendor/include/tlx/sort/strings_parallel.hpp +0 -325
  554. package/vendor/include/tlx/sort.hpp +0 -29
  555. package/vendor/include/tlx/stack_allocator.hpp +0 -226
  556. package/vendor/include/tlx/string/appendline.hpp +0 -35
  557. package/vendor/include/tlx/string/base64.hpp +0 -87
  558. package/vendor/include/tlx/string/bitdump.hpp +0 -139
  559. package/vendor/include/tlx/string/compare_icase.hpp +0 -42
  560. package/vendor/include/tlx/string/contains.hpp +0 -36
  561. package/vendor/include/tlx/string/contains_word.hpp +0 -42
  562. package/vendor/include/tlx/string/ends_with.hpp +0 -79
  563. package/vendor/include/tlx/string/equal_icase.hpp +0 -42
  564. package/vendor/include/tlx/string/erase_all.hpp +0 -70
  565. package/vendor/include/tlx/string/escape_html.hpp +0 -34
  566. package/vendor/include/tlx/string/escape_uri.hpp +0 -34
  567. package/vendor/include/tlx/string/expand_environment_variables.hpp +0 -49
  568. package/vendor/include/tlx/string/extract_between.hpp +0 -40
  569. package/vendor/include/tlx/string/format_iec_units.hpp +0 -32
  570. package/vendor/include/tlx/string/format_si_iec_units.hpp +0 -19
  571. package/vendor/include/tlx/string/format_si_units.hpp +0 -32
  572. package/vendor/include/tlx/string/hash_djb2.hpp +0 -87
  573. package/vendor/include/tlx/string/hash_sdbm.hpp +0 -86
  574. package/vendor/include/tlx/string/hexdump.hpp +0 -154
  575. package/vendor/include/tlx/string/index_of.hpp +0 -56
  576. package/vendor/include/tlx/string/join.hpp +0 -65
  577. package/vendor/include/tlx/string/join_generic.hpp +0 -89
  578. package/vendor/include/tlx/string/join_quoted.hpp +0 -46
  579. package/vendor/include/tlx/string/less_icase.hpp +0 -64
  580. package/vendor/include/tlx/string/levenshtein.hpp +0 -193
  581. package/vendor/include/tlx/string/pad.hpp +0 -39
  582. package/vendor/include/tlx/string/parse_si_iec_units.hpp +0 -46
  583. package/vendor/include/tlx/string/parse_uri.hpp +0 -66
  584. package/vendor/include/tlx/string/parse_uri_form_data.hpp +0 -136
  585. package/vendor/include/tlx/string/replace.hpp +0 -141
  586. package/vendor/include/tlx/string/split.hpp +0 -170
  587. package/vendor/include/tlx/string/split_quoted.hpp +0 -49
  588. package/vendor/include/tlx/string/split_view.hpp +0 -218
  589. package/vendor/include/tlx/string/split_words.hpp +0 -53
  590. package/vendor/include/tlx/string/ssprintf.hpp +0 -45
  591. package/vendor/include/tlx/string/ssprintf_generic.hpp +0 -95
  592. package/vendor/include/tlx/string/starts_with.hpp +0 -44
  593. package/vendor/include/tlx/string/to_lower.hpp +0 -47
  594. package/vendor/include/tlx/string/to_upper.hpp +0 -47
  595. package/vendor/include/tlx/string/trim.hpp +0 -298
  596. package/vendor/include/tlx/string/union_words.hpp +0 -33
  597. package/vendor/include/tlx/string/word_wrap.hpp +0 -35
  598. package/vendor/include/tlx/string.hpp +0 -68
  599. package/vendor/include/tlx/thread_barrier_mutex.hpp +0 -109
  600. package/vendor/include/tlx/thread_barrier_spin.hpp +0 -127
  601. package/vendor/include/tlx/thread_pool.hpp +0 -151
  602. package/vendor/include/tlx/timestamp.hpp +0 -23
  603. package/vendor/include/tlx/unused.hpp +0 -28
  604. package/vendor/include/tlx/vector_free.hpp +0 -30
  605. package/vendor/include/tlx/version.hpp +0 -49
  606. package/vendor/include/ttmath/ttmath.h +0 -2881
  607. package/vendor/include/ttmath/ttmathbig.h +0 -6111
  608. package/vendor/include/ttmath/ttmathdec.h +0 -419
  609. package/vendor/include/ttmath/ttmathint.h +0 -1923
  610. package/vendor/include/ttmath/ttmathmisc.h +0 -250
  611. package/vendor/include/ttmath/ttmathobjects.h +0 -812
  612. package/vendor/include/ttmath/ttmathparser.h +0 -2791
  613. package/vendor/include/ttmath/ttmaththreads.h +0 -252
  614. package/vendor/include/ttmath/ttmathtypes.h +0 -707
  615. package/vendor/include/ttmath/ttmathuint.h +0 -4190
  616. package/vendor/include/ttmath/ttmathuint_noasm.h +0 -1038
  617. package/vendor/include/ttmath/ttmathuint_x86.h +0 -1620
  618. package/vendor/include/ttmath/ttmathuint_x86_64.h +0 -1177
  619. package/vendor/lib/cmake/tlx/tlx-config.cmake +0 -51
  620. package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +0 -19
  621. package/vendor/lib/cmake/tlx/tlx-targets.cmake +0 -106
  622. package/vendor/lib/cmake/tlx/tlx-version.cmake +0 -11
  623. package/vendor/lib/libtlx.a +0 -0
  624. package/vendor/lib/pkgconfig/networkit.pc +0 -11
  625. package/vendor/lib/pkgconfig/tlx.pc +0 -11
@@ -1,1385 +0,0 @@
1
- /*******************************************************************************
2
- * tlx/algorithm/multiway_merge.hpp
3
- *
4
- * Many variants of multiway merge.
5
- *
6
- * Copied and modified from STXXL, see http://stxxl.org, which itself extracted
7
- * it from MCSTL http://algo2.iti.uni-karlsruhe.de/singler/mcstl/. Both are
8
- * distributed under the Boost Software License, Version 1.0.
9
- *
10
- * Part of tlx - http://panthema.net/tlx
11
- *
12
- * Copyright (C) 2007 Johannes Singler <singler@ira.uka.de>
13
- * Copyright (C) 2014-2018 Timo Bingmann <tb@panthema.net>
14
- *
15
- * All rights reserved. Published under the Boost Software License, Version 1.0
16
- ******************************************************************************/
17
-
18
- #ifndef TLX_ALGORITHM_MULTIWAY_MERGE_HEADER
19
- #define TLX_ALGORITHM_MULTIWAY_MERGE_HEADER
20
-
21
- #include <tlx/algorithm/merge_advance.hpp>
22
- #include <tlx/container/loser_tree.hpp>
23
- #include <tlx/container/simple_vector.hpp>
24
- #include <tlx/define/likely.hpp>
25
- #include <tlx/unused.hpp>
26
- #include <algorithm>
27
- #include <cassert>
28
- #include <functional>
29
- #include <iterator>
30
- #include <numeric>
31
- #include <utility>
32
- #include <vector>
33
-
34
- namespace tlx {
35
-
36
- //! \addtogroup tlx_algorithm
37
- //! \{
38
-
39
- namespace multiway_merge_detail {
40
-
41
- //! Size of a sequence described by a pair of iterators.
42
- template <typename RandomAccessIteratorPair>
43
- typename std::iterator_traits<
44
- typename RandomAccessIteratorPair::first_type>::difference_type
45
- iterpair_size(const RandomAccessIteratorPair& p)
46
- {
47
- return p.second - p.first;
48
- }
49
-
50
- /*!
51
- * Iterator wrapper supporting an implicit supremum at the end of the sequence,
52
- * dominating all comparisons. Deriving from RandomAccessIterator is not
53
- * possible since RandomAccessIterator need not be a class.
54
- */
55
- template <typename RandomAccessIterator, typename Comparator>
56
- class guarded_iterator
57
- {
58
- public:
59
- //! Our own type
60
- using self_type = guarded_iterator<RandomAccessIterator, Comparator>;
61
-
62
- //! Value type of the iterator
63
- using value_type =
64
- typename std::iterator_traits<RandomAccessIterator>::value_type;
65
-
66
- private:
67
- //! Current iterator position.
68
- RandomAccessIterator current;
69
- //! End iterator of the sequence.
70
- RandomAccessIterator end_;
71
- //! Comparator.
72
- Comparator& comp_;
73
-
74
- public:
75
- /*!
76
- * Constructor. Sets iterator to beginning of sequence.
77
- * \param begin Begin iterator of sequence.
78
- * \param end End iterator of sequence.
79
- * \param comp Comparator provided for associated overloaded compare
80
- * operators.
81
- */
82
- guarded_iterator(RandomAccessIterator begin, RandomAccessIterator end,
83
- Comparator& comp)
84
- : current(begin), end_(end), comp_(comp)
85
- {
86
- }
87
-
88
- /*!
89
- * Pre-increment operator.
90
- * \return This.
91
- */
92
- self_type& operator++()
93
- {
94
- ++current;
95
- return *this;
96
- }
97
-
98
- /*!
99
- * Dereference operator.
100
- * \return Referenced element.
101
- */
102
- value_type& operator*()
103
- {
104
- return *current;
105
- }
106
-
107
- /*!
108
- * Convert to wrapped iterator.
109
- * \return Wrapped iterator.
110
- */
111
- RandomAccessIterator& iterator()
112
- {
113
- return current;
114
- }
115
-
116
- /*!
117
- * Compare two elements referenced by guarded iterators.
118
- * \param bi1 First iterator.
119
- * \param bi2 Second iterator.
120
- * \return \c True if less.
121
- */
122
- friend bool operator<(self_type& bi1, self_type& bi2)
123
- {
124
- if (bi1.current == bi1.end_) // bi1 is sup
125
- return bi2.current == bi2.end_; // bi2 is not sup
126
- if (bi2.current == bi2.end_) // bi2 is sup
127
- return true;
128
- return bi1.comp_(*bi1, *bi2); // normal compare
129
- }
130
-
131
- /*!
132
- * Compare two elements referenced by guarded iterators.
133
- * \param bi1 First iterator.
134
- * \param bi2 Second iterator.
135
- * \return \c True if less equal.
136
- */
137
- friend bool operator<=(self_type& bi1, self_type& bi2)
138
- {
139
- if (bi2.current == bi2.end_) // bi1 is sup
140
- return bi1.current != bi1.end_; // bi2 is not sup
141
- if (bi1.current == bi1.end_) // bi2 is sup
142
- return false;
143
- return !bi1.comp_(*bi2, *bi1); // normal compare
144
- }
145
- };
146
-
147
- template <typename RandomAccessIterator, typename Comparator>
148
- class unguarded_iterator
149
- {
150
- public:
151
- //! Our own type
152
- using self_type = unguarded_iterator<RandomAccessIterator, Comparator>;
153
-
154
- //! Value type of the iterator
155
- using value_type =
156
- typename std::iterator_traits<RandomAccessIterator>::value_type;
157
-
158
- private:
159
- //! Current iterator position.
160
- RandomAccessIterator current;
161
- //! Comparator.
162
- Comparator& comp_;
163
-
164
- public:
165
- /*!
166
- * Constructor. Sets iterator to beginning of sequence.
167
- * \param begin Begin iterator of sequence.
168
- * param end Unused, only for compatibility.
169
- * \param comp Unused, only for compatibility.
170
- */
171
- unguarded_iterator(RandomAccessIterator begin,
172
- RandomAccessIterator /* end */, Comparator& comp)
173
- : current(begin), comp_(comp)
174
- {
175
- }
176
-
177
- /*!
178
- * Pre-increment operator.
179
- * \return This.
180
- */
181
- self_type& operator++()
182
- {
183
- ++current;
184
- return *this;
185
- }
186
-
187
- /*!
188
- * Dereference operator.
189
- * \return Referenced element.
190
- */
191
- value_type& operator*()
192
- {
193
- return *current;
194
- }
195
-
196
- /*!
197
- * Convert to wrapped iterator.
198
- * \return Wrapped iterator.
199
- */
200
- RandomAccessIterator& iterator()
201
- {
202
- return current;
203
- }
204
-
205
- /*!
206
- * Compare two elements referenced by unguarded iterators.
207
- * \param bi1 First iterator.
208
- * \param bi2 Second iterator.
209
- * \return \c True if less.
210
- */
211
- friend bool operator<(self_type& bi1, self_type& bi2)
212
- {
213
- return bi1.comp_(*bi1, *bi2); // normal compare, unguarded
214
- }
215
-
216
- /*!
217
- * Compare two elements referenced by unguarded iterators.
218
- * \param bi1 First iterator.
219
- * \param bi2 Second iterator.
220
- * \return \c True if less equal.
221
- */
222
- friend bool operator<=(self_type& bi1, self_type& bi2)
223
- {
224
- return !bi1.comp_(*bi2, *bi1); // normal compare, unguarded
225
- }
226
- };
227
-
228
- /*!
229
- * Prepare a set of sequences to be merged without a (end) guard
230
- *
231
- * \param seqs_begin
232
- * \param seqs_end
233
- * \param comp
234
- * \param min_sequence
235
- * \tparam Stable
236
- * \pre (seqs_end - seqs_begin > 0)
237
- */
238
- template <bool Stable, typename RandomAccessIteratorIterator,
239
- typename Comparator>
240
- typename std::iterator_traits<typename std::iterator_traits<
241
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
242
- prepare_unguarded(RandomAccessIteratorIterator seqs_begin,
243
- RandomAccessIteratorIterator seqs_end, Comparator comp,
244
- int& min_sequence)
245
- {
246
- using RandomAccessIterator = typename std::iterator_traits<
247
- RandomAccessIteratorIterator>::value_type::first_type;
248
- using value_type =
249
- typename std::iterator_traits<RandomAccessIterator>::value_type;
250
- using diff_type =
251
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
252
-
253
- if ((*seqs_begin).first == (*seqs_begin).second)
254
- {
255
- // empty sequence found, it's the first one
256
- min_sequence = 0;
257
- return -1;
258
- }
259
-
260
- // last element in sequence
261
- value_type min = *((*seqs_begin).second - 1);
262
- min_sequence = 0;
263
- for (RandomAccessIteratorIterator s = seqs_begin + 1; s != seqs_end; ++s)
264
- {
265
- if ((*s).first == (*s).second)
266
- {
267
- // empty sequence found
268
- min_sequence = static_cast<int>(s - seqs_begin);
269
- return -1;
270
- }
271
- const value_type& v = *((*s).second - 1);
272
- if (comp(v, min))
273
- {
274
- // last element in sequence is strictly smaller
275
- min = v;
276
- min_sequence = static_cast<int>(s - seqs_begin);
277
- }
278
- }
279
-
280
- diff_type overhang_size = 0;
281
-
282
- int s = 0;
283
- for (s = 0; s <= min_sequence; ++s)
284
- {
285
- RandomAccessIterator split;
286
- if (Stable)
287
- split = std::upper_bound(seqs_begin[s].first, seqs_begin[s].second,
288
- min, comp);
289
- else
290
- split = std::lower_bound(seqs_begin[s].first, seqs_begin[s].second,
291
- min, comp);
292
-
293
- overhang_size += seqs_begin[s].second - split;
294
- }
295
-
296
- for (; s < (seqs_end - seqs_begin); ++s)
297
- {
298
- RandomAccessIterator split = std::lower_bound(
299
- seqs_begin[s].first, seqs_begin[s].second, min, comp);
300
- overhang_size += seqs_begin[s].second - split;
301
- }
302
-
303
- // so many elements will be left over afterwards
304
- return overhang_size;
305
- }
306
-
307
- /*!
308
- * Prepare a set of sequences to be merged with a (end) guard (sentinel)
309
- * \param seqs_begin
310
- * \param seqs_end
311
- * \param comp
312
- */
313
- template <typename RandomAccessIteratorIterator, typename Comparator>
314
- typename std::iterator_traits<typename std::iterator_traits<
315
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
316
- prepare_unguarded_sentinel(RandomAccessIteratorIterator seqs_begin,
317
- RandomAccessIteratorIterator seqs_end,
318
- Comparator comp)
319
- {
320
- using RandomAccessIterator = typename std::iterator_traits<
321
- RandomAccessIteratorIterator>::value_type::first_type;
322
- using value_type =
323
- typename std::iterator_traits<RandomAccessIterator>::value_type;
324
- using diff_type =
325
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
326
-
327
- value_type* max_value = nullptr; // last element in sequence
328
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
329
- {
330
- if ((*s).first == (*s).second)
331
- continue;
332
- value_type& v = *((*s).second - 1); // last element in sequence
333
- if (!max_value || comp(*max_value, v)) // strictly greater
334
- max_value = &v;
335
- }
336
-
337
- diff_type overhang_size = 0;
338
-
339
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
340
- {
341
- RandomAccessIterator split =
342
- std::lower_bound((*s).first, (*s).second, *max_value, comp);
343
- overhang_size += (*s).second - split;
344
- *((*s).second) = *max_value; // set sentinel
345
- }
346
-
347
- // so many elements will be left over afterwards
348
- return overhang_size;
349
- }
350
-
351
- /*!
352
- * Highly efficient 3-way merging procedure.
353
- *
354
- * Merging is done with the algorithm implementation described by Peter
355
- * Sanders. Basically, the idea is to minimize the number of necessary
356
- * comparison after merging an element. The implementation trick that makes
357
- * this fast is that the order of the sequences is stored in the instruction
358
- * pointer (translated into labels in C++).
359
- *
360
- * This works well for merging up to 3 sequences.
361
- *
362
- * Note that making the merging stable does \a not come at a performance hit.
363
- *
364
- * Whether the merging is done guarded or unguarded is selected by the used
365
- * iterator class.
366
- *
367
- * \param seqs_begin Begin iterator of iterator pair input sequence.
368
- * \param seqs_end End iterator of iterator pair input sequence.
369
- * \param target Begin iterator out output sequence.
370
- * \param size Maximum size to merge.
371
- * \param comp Comparator.
372
- * \return End iterator of output sequence.
373
- */
374
- template <template <typename RAI, typename C> class Iterator,
375
- typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
376
- typename Comparator>
377
- RandomAccessIterator3 multiway_merge_3_variant(
378
- RandomAccessIteratorIterator seqs_begin,
379
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
380
- typename std::iterator_traits<typename std::iterator_traits<
381
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
382
- size,
383
- Comparator comp)
384
- {
385
- assert(seqs_end - seqs_begin == 3);
386
- unused(seqs_end);
387
-
388
- using RandomAccessIterator = typename std::iterator_traits<
389
- RandomAccessIteratorIterator>::value_type::first_type;
390
-
391
- if (size == 0)
392
- return target;
393
-
394
- Iterator<RandomAccessIterator, Comparator> seq0(seqs_begin[0].first,
395
- seqs_begin[0].second, comp),
396
- seq1(seqs_begin[1].first, seqs_begin[1].second, comp),
397
- seq2(seqs_begin[2].first, seqs_begin[2].second, comp);
398
-
399
- if (seq0 <= seq1)
400
- {
401
- if (seq1 <= seq2)
402
- goto s012;
403
- else if (seq2 < seq0)
404
- goto s201;
405
- else
406
- goto s021;
407
- }
408
- else
409
- {
410
- if (seq1 <= seq2)
411
- {
412
- if (seq0 <= seq2)
413
- goto s102;
414
- else
415
- goto s120;
416
- }
417
- else
418
- goto s210;
419
- }
420
-
421
- #define TLX_MERGE3CASE(a, b, c, c0, c1) \
422
- s##a##b##c : * target = *seq##a; \
423
- ++target; \
424
- --size; \
425
- ++seq##a; \
426
- if (size == 0) \
427
- goto finish; \
428
- if (seq##a c0 seq##b) \
429
- goto s##a##b##c; \
430
- if (seq##a c1 seq##c) \
431
- goto s##b##a##c; \
432
- goto s##b##c##a;
433
-
434
- TLX_MERGE3CASE(0, 1, 2, <=, <=);
435
- TLX_MERGE3CASE(1, 2, 0, <=, <);
436
- TLX_MERGE3CASE(2, 0, 1, <, <);
437
- TLX_MERGE3CASE(1, 0, 2, <, <=);
438
- TLX_MERGE3CASE(0, 2, 1, <=, <=);
439
- TLX_MERGE3CASE(2, 1, 0, <, <);
440
-
441
- #undef TLX_MERGE3CASE
442
-
443
- finish:
444
- seqs_begin[0].first = seq0.iterator();
445
- seqs_begin[1].first = seq1.iterator();
446
- seqs_begin[2].first = seq2.iterator();
447
-
448
- return target;
449
- }
450
-
451
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
452
- typename Comparator>
453
- RandomAccessIterator3 multiway_merge_3_combined(
454
- RandomAccessIteratorIterator seqs_begin,
455
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
456
- typename std::iterator_traits<typename std::iterator_traits<
457
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
458
- size,
459
- Comparator comp)
460
- {
461
- using RandomAccessIterator = typename std::iterator_traits<
462
- RandomAccessIteratorIterator>::value_type::first_type;
463
- using DiffType =
464
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
465
-
466
- assert(seqs_end - seqs_begin == 3);
467
-
468
- int min_seq;
469
- RandomAccessIterator3 target_end;
470
- DiffType overhang =
471
- prepare_unguarded<true>(seqs_begin, seqs_end, comp, min_seq);
472
-
473
- DiffType total_size = 0;
474
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
475
- total_size += iterpair_size(*s);
476
-
477
- if (overhang != static_cast<DiffType>(-1))
478
- {
479
- DiffType unguarded_size = std::min(size, total_size - overhang);
480
- target_end = multiway_merge_3_variant<unguarded_iterator>(
481
- seqs_begin, seqs_end, target, unguarded_size, comp);
482
- overhang = size - unguarded_size;
483
- }
484
- else
485
- {
486
- // empty sequence found
487
- overhang = size;
488
- target_end = target;
489
- }
490
-
491
- switch (min_seq)
492
- {
493
- case 0:
494
- // iterators will be advanced accordingly
495
- target_end = merge_advance(seqs_begin[1].first, seqs_begin[1].second,
496
- seqs_begin[2].first, seqs_begin[2].second,
497
- target_end, overhang, comp);
498
- break;
499
- case 1:
500
- target_end = merge_advance(seqs_begin[0].first, seqs_begin[0].second,
501
- seqs_begin[2].first, seqs_begin[2].second,
502
- target_end, overhang, comp);
503
- break;
504
- case 2:
505
- target_end = merge_advance(seqs_begin[0].first, seqs_begin[0].second,
506
- seqs_begin[1].first, seqs_begin[1].second,
507
- target_end, overhang, comp);
508
- break;
509
- default:
510
- assert(false);
511
- }
512
-
513
- return target_end;
514
- }
515
-
516
- /*!
517
- * Highly efficient 4-way merging procedure.
518
- *
519
- * Merging is done with the algorithm implementation described by Peter
520
- * Sanders. Basically, the idea is to minimize the number of necessary
521
- * comparison after merging an element. The implementation trick that makes
522
- * this fast is that the order of the sequences is stored in the instruction
523
- * pointer (translated into goto labels in C++).
524
- *
525
- * This works well for merging up to 4 sequences.
526
- *
527
- * Note that making the merging stable does \a not come at a performance hit.
528
- *
529
- * Whether the merging is done guarded or unguarded is selected by the used
530
- * iterator class.
531
- *
532
- * \param seqs_begin Begin iterator of iterator pair input sequence.
533
- * \param seqs_end End iterator of iterator pair input sequence.
534
- * \param target Begin iterator out output sequence.
535
- * \param size Maximum size to merge.
536
- * \param comp Comparator.
537
- * \return End iterator of output sequence.
538
- */
539
- template <template <typename RAI, typename C> class iterator,
540
- typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
541
- typename Comparator>
542
- RandomAccessIterator3 multiway_merge_4_variant(
543
- RandomAccessIteratorIterator seqs_begin,
544
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
545
- typename std::iterator_traits<typename std::iterator_traits<
546
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
547
- size,
548
- Comparator comp)
549
- {
550
- assert(seqs_end - seqs_begin == 4);
551
- unused(seqs_end);
552
- using RandomAccessIterator = typename std::iterator_traits<
553
- RandomAccessIteratorIterator>::value_type::first_type;
554
-
555
- if (size == 0)
556
- return target;
557
-
558
- iterator<RandomAccessIterator, Comparator> seq0(seqs_begin[0].first,
559
- seqs_begin[0].second, comp),
560
- seq1(seqs_begin[1].first, seqs_begin[1].second, comp),
561
- seq2(seqs_begin[2].first, seqs_begin[2].second, comp),
562
- seq3(seqs_begin[3].first, seqs_begin[3].second, comp);
563
-
564
- #define TLX_DECISION(a, b, c, d) \
565
- do \
566
- { \
567
- if (seq##d < seq##a) \
568
- goto s##d##a##b##c; \
569
- if (seq##d < seq##b) \
570
- goto s##a##d##b##c; \
571
- if (seq##d < seq##c) \
572
- goto s##a##b##d##c; \
573
- goto s##a##b##c##d; \
574
- } while (0)
575
-
576
- if (seq0 <= seq1)
577
- {
578
- if (seq1 <= seq2)
579
- TLX_DECISION(0, 1, 2, 3);
580
- else if (seq2 < seq0)
581
- TLX_DECISION(2, 0, 1, 3);
582
- else
583
- TLX_DECISION(0, 2, 1, 3);
584
- }
585
- else
586
- {
587
- if (seq1 <= seq2)
588
- {
589
- if (seq0 <= seq2)
590
- TLX_DECISION(1, 0, 2, 3);
591
- else
592
- TLX_DECISION(1, 2, 0, 3);
593
- }
594
- else
595
- TLX_DECISION(2, 1, 0, 3);
596
- }
597
-
598
- #define TLX_MERGE4CASE(a, b, c, d, c0, c1, c2) \
599
- s##a##b##c##d : * target = *seq##a; \
600
- ++target; \
601
- --size; \
602
- ++seq##a; \
603
- if (size == 0) \
604
- goto finish; \
605
- if (seq##a c0 seq##b) \
606
- goto s##a##b##c##d; \
607
- if (seq##a c1 seq##c) \
608
- goto s##b##a##c##d; \
609
- if (seq##a c2 seq##d) \
610
- goto s##b##c##a##d; \
611
- goto s##b##c##d##a;
612
-
613
- TLX_MERGE4CASE(0, 1, 2, 3, <=, <=, <=);
614
- TLX_MERGE4CASE(0, 1, 3, 2, <=, <=, <=);
615
- TLX_MERGE4CASE(0, 2, 1, 3, <=, <=, <=);
616
- TLX_MERGE4CASE(0, 2, 3, 1, <=, <=, <=);
617
- TLX_MERGE4CASE(0, 3, 1, 2, <=, <=, <=);
618
- TLX_MERGE4CASE(0, 3, 2, 1, <=, <=, <=);
619
- TLX_MERGE4CASE(1, 0, 2, 3, <, <=, <=);
620
- TLX_MERGE4CASE(1, 0, 3, 2, <, <=, <=);
621
- TLX_MERGE4CASE(1, 2, 0, 3, <=, <, <=);
622
- TLX_MERGE4CASE(1, 2, 3, 0, <=, <=, <);
623
- TLX_MERGE4CASE(1, 3, 0, 2, <=, <, <=);
624
- TLX_MERGE4CASE(1, 3, 2, 0, <=, <=, <);
625
- TLX_MERGE4CASE(2, 0, 1, 3, <, <, <=);
626
- TLX_MERGE4CASE(2, 0, 3, 1, <, <=, <);
627
- TLX_MERGE4CASE(2, 1, 0, 3, <, <, <=);
628
- TLX_MERGE4CASE(2, 1, 3, 0, <, <=, <);
629
- TLX_MERGE4CASE(2, 3, 0, 1, <=, <, <);
630
- TLX_MERGE4CASE(2, 3, 1, 0, <=, <, <);
631
- TLX_MERGE4CASE(3, 0, 1, 2, <, <, <);
632
- TLX_MERGE4CASE(3, 0, 2, 1, <, <, <);
633
- TLX_MERGE4CASE(3, 1, 0, 2, <, <, <);
634
- TLX_MERGE4CASE(3, 1, 2, 0, <, <, <);
635
- TLX_MERGE4CASE(3, 2, 0, 1, <, <, <);
636
- TLX_MERGE4CASE(3, 2, 1, 0, <, <, <);
637
-
638
- #undef TLX_MERGE4CASE
639
- #undef TLX_DECISION
640
-
641
- finish:
642
- seqs_begin[0].first = seq0.iterator();
643
- seqs_begin[1].first = seq1.iterator();
644
- seqs_begin[2].first = seq2.iterator();
645
- seqs_begin[3].first = seq3.iterator();
646
-
647
- return target;
648
- }
649
-
650
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
651
- typename Comparator>
652
- RandomAccessIterator3 multiway_merge_4_combined(
653
- RandomAccessIteratorIterator seqs_begin,
654
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
655
- typename std::iterator_traits<typename std::iterator_traits<
656
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
657
- size,
658
- Comparator comp)
659
- {
660
- assert(seqs_end - seqs_begin == 4);
661
- using RandomAccessIteratorPair =
662
- typename std::iterator_traits<RandomAccessIteratorIterator>::value_type;
663
- using DiffType = typename std::iterator_traits<
664
- RandomAccessIteratorIterator>::difference_type;
665
-
666
- int min_seq;
667
- RandomAccessIterator3 target_end;
668
- DiffType overhang =
669
- prepare_unguarded<true>(seqs_begin, seqs_end, comp, min_seq);
670
-
671
- DiffType total_size = 0;
672
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
673
- total_size += iterpair_size(*s);
674
-
675
- if (overhang != static_cast<DiffType>(-1))
676
- {
677
- DiffType unguarded_size = std::min(size, total_size - overhang);
678
- target_end = multiway_merge_4_variant<unguarded_iterator>(
679
- seqs_begin, seqs_end, target, unguarded_size, comp);
680
- overhang = size - unguarded_size;
681
- }
682
- else
683
- {
684
- // empty sequence found
685
- overhang = size;
686
- target_end = target;
687
- }
688
-
689
- std::vector<RandomAccessIteratorPair> one_missing(seqs_begin, seqs_end);
690
- // remove
691
- one_missing.erase(one_missing.begin() + min_seq);
692
-
693
- target_end = multiway_merge_3_variant<guarded_iterator>(
694
- one_missing.begin(), one_missing.end(), target_end, overhang, comp);
695
-
696
- // insert back again
697
- one_missing.insert(one_missing.begin() + min_seq, seqs_begin[min_seq]);
698
- // write back modified iterators
699
- std::copy(one_missing.begin(), one_missing.end(), seqs_begin);
700
-
701
- return target_end;
702
- }
703
-
704
- /*!
705
- * Basic multi-way merging procedure.
706
- *
707
- * The head elements are kept in a sorted array, new heads are inserted
708
- * linearly.
709
- *
710
- * \param seqs_begin Begin iterator of iterator pair input sequence.
711
- * \param seqs_end End iterator of iterator pair input sequence.
712
- * \param target Begin iterator out output sequence.
713
- * \param size Maximum size to merge.
714
- * \param comp Comparator.
715
- * \tparam Stable Stable merging incurs a performance penalty.
716
- * \return End iterator of output sequence.
717
- */
718
- template <bool Stable, typename RandomAccessIteratorIterator,
719
- typename RandomAccessIterator3, typename Comparator>
720
- RandomAccessIterator3 multiway_merge_bubble(
721
- RandomAccessIteratorIterator seqs_begin,
722
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
723
- typename std::iterator_traits<typename std::iterator_traits<
724
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
725
- size,
726
- Comparator comp)
727
- {
728
- using RandomAccessIterator = typename std::iterator_traits<
729
- RandomAccessIteratorIterator>::value_type::first_type;
730
- using value_type =
731
- typename std::iterator_traits<RandomAccessIterator>::value_type;
732
- using DiffType =
733
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
734
-
735
- // num remaining pieces
736
- int num_seqs = static_cast<int>(seqs_end - seqs_begin), nrp;
737
-
738
- simple_vector<value_type> pl(num_seqs);
739
- simple_vector<int> source(num_seqs);
740
- DiffType total_size = 0;
741
-
742
- #define TLX_POS(i) seqs_begin[(i)].first
743
- #define TLX_STOPS(i) seqs_begin[(i)].second
744
-
745
- // write entries into queue
746
- nrp = 0;
747
- for (int pi = 0; pi < num_seqs; ++pi)
748
- {
749
- if (TLX_STOPS(pi) != TLX_POS(pi))
750
- {
751
- pl[nrp] = *(TLX_POS(pi));
752
- source[nrp] = pi;
753
- ++nrp;
754
- total_size += iterpair_size(seqs_begin[pi]);
755
- }
756
- }
757
-
758
- if (Stable)
759
- {
760
- for (int k = 0; k < nrp - 1; ++k)
761
- for (int pi = nrp - 1; pi > k; --pi)
762
- if (comp(pl[pi], pl[pi - 1]) ||
763
- (!comp(pl[pi - 1], pl[pi]) && source[pi] < source[pi - 1]))
764
- {
765
- std::swap(pl[pi - 1], pl[pi]);
766
- std::swap(source[pi - 1], source[pi]);
767
- }
768
- }
769
- else
770
- {
771
- for (int k = 0; k < nrp - 1; ++k)
772
- for (int pi = nrp - 1; pi > k; --pi)
773
- if (comp(pl[pi], pl[pi - 1]))
774
- {
775
- std::swap(pl[pi - 1], pl[pi]);
776
- std::swap(source[pi - 1], source[pi]);
777
- }
778
- }
779
-
780
- // iterate
781
- if (Stable)
782
- {
783
- int j;
784
- while (nrp > 0 && size > 0)
785
- {
786
- if (source[0] < source[1])
787
- {
788
- // pl[0] <= pl[1] ?
789
- while ((nrp == 1 || !(comp(pl[1], pl[0]))) && size > 0)
790
- {
791
- *target = pl[0];
792
- ++target;
793
- ++TLX_POS(source[0]);
794
- --size;
795
- if (TLX_POS(source[0]) == TLX_STOPS(source[0]))
796
- {
797
- // move everything to the left
798
- for (int s = 0; s < nrp - 1; ++s)
799
- {
800
- pl[s] = pl[s + 1];
801
- source[s] = source[s + 1];
802
- }
803
- --nrp;
804
- break;
805
- }
806
- pl[0] = *(TLX_POS(source[0]));
807
- }
808
- }
809
- else
810
- {
811
- // pl[0] < pl[1] ?
812
- while ((nrp == 1 || comp(pl[0], pl[1])) && size > 0)
813
- {
814
- *target = pl[0];
815
- ++target;
816
- ++TLX_POS(source[0]);
817
- --size;
818
- if (TLX_POS(source[0]) == TLX_STOPS(source[0]))
819
- {
820
- for (int s = 0; s < nrp - 1; ++s)
821
- {
822
- pl[s] = pl[s + 1];
823
- source[s] = source[s + 1];
824
- }
825
- --nrp;
826
- break;
827
- }
828
- pl[0] = *(TLX_POS(source[0]));
829
- }
830
- }
831
-
832
- // sink down
833
- j = 1;
834
- while ((j < nrp) &&
835
- (comp(pl[j], pl[j - 1]) ||
836
- (!comp(pl[j - 1], pl[j]) && (source[j] < source[j - 1]))))
837
- {
838
- std::swap(pl[j - 1], pl[j]);
839
- std::swap(source[j - 1], source[j]);
840
- ++j;
841
- }
842
- }
843
- }
844
- else
845
- {
846
- int j;
847
- while (nrp > 0 && size > 0)
848
- {
849
- // pl[0] <= pl[1] ?
850
- while ((nrp == 1 || !comp(pl[1], pl[0])) && size > 0)
851
- {
852
- *target = pl[0];
853
- ++target;
854
- ++TLX_POS(source[0]);
855
- --size;
856
- if (TLX_POS(source[0]) == TLX_STOPS(source[0]))
857
- {
858
- for (int s = 0; s < (nrp - 1); ++s)
859
- {
860
- pl[s] = pl[s + 1];
861
- source[s] = source[s + 1];
862
- }
863
- --nrp;
864
- break;
865
- }
866
- pl[0] = *(TLX_POS(source[0]));
867
- }
868
-
869
- // sink down
870
- j = 1;
871
- while ((j < nrp) && comp(pl[j], pl[j - 1]))
872
- {
873
- std::swap(pl[j - 1], pl[j]);
874
- std::swap(source[j - 1], source[j]);
875
- ++j;
876
- }
877
- }
878
- }
879
-
880
- #undef TLX_POS
881
- #undef TLX_STOPS
882
-
883
- return target;
884
- }
885
-
886
- /*!
887
- * Multi-way merging procedure for a high branching factor, guarded case.
888
- *
889
- * The head elements are kept in a loser tree.
890
- * \param seqs_begin Begin iterator of iterator pair input sequence.
891
- * \param seqs_end End iterator of iterator pair input sequence.
892
- * \param target Begin iterator out output sequence.
893
- * \param size Maximum size to merge.
894
- * \param comp Comparator.
895
- * \tparam Stable Stable merging incurs a performance penalty.
896
- * \return End iterator of output sequence.
897
- */
898
- template <typename LoserTreeType, typename RandomAccessIteratorIterator,
899
- typename RandomAccessIterator3, typename Comparator>
900
- RandomAccessIterator3 multiway_merge_loser_tree(
901
- RandomAccessIteratorIterator seqs_begin,
902
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
903
- typename std::iterator_traits<typename std::iterator_traits<
904
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
905
- size,
906
- Comparator comp)
907
- {
908
- using Source = typename LoserTreeType::Source;
909
- using size_type = typename LoserTreeType::Source;
910
- using RandomAccessIteratorPair =
911
- typename std::iterator_traits<RandomAccessIteratorIterator>::value_type;
912
- using RandomAccessIterator = typename RandomAccessIteratorPair::first_type;
913
- using DiffType =
914
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
915
-
916
- const Source k = static_cast<Source>(seqs_end - seqs_begin);
917
-
918
- LoserTreeType lt(static_cast<size_type>(k), comp);
919
-
920
- const DiffType total_size = std::min<DiffType>(
921
- size,
922
- std::accumulate(seqs_begin, seqs_end, DiffType(0),
923
- [](DiffType sum, const RandomAccessIteratorPair& x) {
924
- return sum + iterpair_size(x);
925
- }));
926
-
927
- for (Source t = 0; t < k; ++t)
928
- {
929
- if (TLX_UNLIKELY(seqs_begin[t].first == seqs_begin[t].second))
930
- lt.insert_start(nullptr, t, true);
931
- else
932
- lt.insert_start(&*seqs_begin[t].first, t, false);
933
- }
934
-
935
- lt.init();
936
-
937
- if (total_size == 0)
938
- return target;
939
-
940
- // take out first
941
- Source source = lt.min_source();
942
-
943
- *target = *seqs_begin[source].first;
944
- ++target;
945
- ++seqs_begin[source].first;
946
-
947
- for (DiffType i = 1; i < total_size; ++i)
948
- {
949
- // feed
950
- if (seqs_begin[source].first == seqs_begin[source].second)
951
- lt.delete_min_insert(nullptr, true);
952
- else
953
- // replace from same source
954
- lt.delete_min_insert(&*seqs_begin[source].first, false);
955
-
956
- // take out following
957
- source = lt.min_source();
958
-
959
- *target = *seqs_begin[source].first;
960
- ++target;
961
- ++seqs_begin[source].first;
962
- }
963
-
964
- return target;
965
- }
966
-
967
- /*!
968
- * Multi-way merging procedure for a high branching factor, unguarded case.
969
- * The head elements are kept in a loser tree.
970
- *
971
- * \param seqs_begin Begin iterator of iterator pair input sequence.
972
- * \param seqs_end End iterator of iterator pair input sequence.
973
- * \param target Begin iterator out output sequence.
974
- * \param size Maximum size to merge.
975
- * \param comp Comparator.
976
- * \tparam Stable Stable merging incurs a performance penalty.
977
- * \return End iterator of output sequence.
978
- * \pre No input will run out of elements during the merge.
979
- */
980
- template <typename LoserTreeType, typename RandomAccessIteratorIterator,
981
- typename RandomAccessIterator3, typename Comparator>
982
- RandomAccessIterator3 multiway_merge_loser_tree_unguarded(
983
- RandomAccessIteratorIterator seqs_begin,
984
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
985
- typename std::iterator_traits<typename std::iterator_traits<
986
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
987
- size,
988
- Comparator comp)
989
- {
990
- using Source = typename LoserTreeType::Source;
991
- using size_type = typename LoserTreeType::Source;
992
- using RandomAccessIteratorPair =
993
- typename std::iterator_traits<RandomAccessIteratorIterator>::value_type;
994
- using RandomAccessIterator = typename RandomAccessIteratorPair ::first_type;
995
- using DiffType =
996
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
997
-
998
- Source k = static_cast<Source>(seqs_end - seqs_begin);
999
-
1000
- // sentinel is item at end of first sequence.
1001
- LoserTreeType lt(static_cast<size_type>(k), *(seqs_begin->second - 1),
1002
- comp);
1003
-
1004
- DiffType total_size = 0;
1005
-
1006
- for (Source t = 0; t < k; ++t)
1007
- {
1008
- assert(seqs_begin[t].first != seqs_begin[t].second);
1009
-
1010
- lt.insert_start(&*seqs_begin[t].first, t, false);
1011
-
1012
- total_size += iterpair_size(seqs_begin[t]);
1013
- }
1014
-
1015
- lt.init();
1016
-
1017
- // do not go past end
1018
- size = std::min(total_size, size);
1019
-
1020
- RandomAccessIterator3 target_end = target + size;
1021
- if (target == target_end)
1022
- return target;
1023
-
1024
- // take out first
1025
- int source = lt.min_source();
1026
-
1027
- *target = *seqs_begin[source].first;
1028
- ++seqs_begin[source].first;
1029
- ++target;
1030
-
1031
- while (target < target_end)
1032
- {
1033
- // feed. replace from same source
1034
- lt.delete_min_insert(&*seqs_begin[source].first, false);
1035
-
1036
- // take out following
1037
- source = lt.min_source();
1038
-
1039
- *target = *seqs_begin[source].first;
1040
- ++seqs_begin[source].first;
1041
- ++target;
1042
- }
1043
-
1044
- return target;
1045
- }
1046
-
1047
- template <bool Stable, typename RandomAccessIteratorIterator,
1048
- typename RandomAccessIterator3, typename Comparator>
1049
- RandomAccessIterator3 multiway_merge_loser_tree_combined(
1050
- RandomAccessIteratorIterator seqs_begin,
1051
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1052
- typename std::iterator_traits<typename std::iterator_traits<
1053
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1054
- size,
1055
- Comparator comp)
1056
- {
1057
- using RandomAccessIterator = typename std::iterator_traits<
1058
- RandomAccessIteratorIterator>::value_type::first_type;
1059
- using value_type =
1060
- typename std::iterator_traits<RandomAccessIterator>::value_type;
1061
- using DiffType =
1062
- typename std::iterator_traits<RandomAccessIterator>::difference_type;
1063
-
1064
- int min_seq;
1065
- RandomAccessIterator3 target_end;
1066
- DiffType overhang =
1067
- prepare_unguarded<Stable>(seqs_begin, seqs_end, comp, min_seq);
1068
-
1069
- DiffType total_size = 0;
1070
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
1071
- total_size += iterpair_size(*s);
1072
-
1073
- if (overhang != static_cast<DiffType>(-1))
1074
- {
1075
- DiffType unguarded_size = std::min(size, total_size - overhang);
1076
- target_end = multiway_merge_loser_tree_unguarded<
1077
- LoserTreeUnguarded<Stable, value_type, Comparator> >(
1078
- seqs_begin, seqs_end, target, unguarded_size, comp);
1079
- overhang = size - unguarded_size;
1080
- }
1081
- else
1082
- {
1083
- // empty sequence found
1084
- overhang = size;
1085
- target_end = target;
1086
- }
1087
-
1088
- target_end =
1089
- multiway_merge_loser_tree<LoserTree<Stable, value_type, Comparator> >(
1090
- seqs_begin, seqs_end, target_end, overhang, comp);
1091
-
1092
- return target_end;
1093
- }
1094
-
1095
- template <bool Stable, typename RandomAccessIteratorIterator,
1096
- typename RandomAccessIterator3, typename Comparator>
1097
- RandomAccessIterator3 multiway_merge_loser_tree_sentinel(
1098
- RandomAccessIteratorIterator seqs_begin,
1099
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1100
- typename std::iterator_traits<typename std::iterator_traits<
1101
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1102
- size,
1103
- Comparator comp)
1104
- {
1105
- using RandomAccessIterator = typename std::iterator_traits<
1106
- RandomAccessIteratorIterator>::value_type::first_type;
1107
- using value_type =
1108
- typename std::iterator_traits<RandomAccessIterator>::value_type;
1109
-
1110
- // move end of sequences to include the sentinel for merging
1111
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
1112
- ++(*s).second;
1113
-
1114
- RandomAccessIterator3 target_end = multiway_merge_loser_tree_unguarded<
1115
- LoserTreeUnguarded<Stable, value_type, Comparator> >(
1116
- seqs_begin, seqs_end, target, size, comp);
1117
-
1118
- // restore end of sequences
1119
- for (RandomAccessIteratorIterator s = seqs_begin; s != seqs_end; ++s)
1120
- --(*s).second;
1121
-
1122
- return target_end;
1123
- }
1124
-
1125
- } // namespace multiway_merge_detail
1126
-
1127
- /******************************************************************************/
1128
- // Multiway Merge Algorithm Switch
1129
-
1130
- /*!
1131
- * Different merging algorithms: bubblesort-alike, loser-tree variants, enum
1132
- * sentinel
1133
- */
1134
- enum MultiwayMergeAlgorithm
1135
- {
1136
- MWMA_LOSER_TREE,
1137
- MWMA_LOSER_TREE_COMBINED,
1138
- MWMA_LOSER_TREE_SENTINEL,
1139
- MWMA_BUBBLE,
1140
- MWMA_ALGORITHM_LAST,
1141
- MWMA_ALGORITHM_DEFAULT = MWMA_LOSER_TREE_COMBINED
1142
- };
1143
-
1144
- /*!
1145
- * Sequential multi-way merging switch.
1146
- *
1147
- * The decision if based on the branching factor and runtime settings.
1148
- *
1149
- * \param seqs_begin Begin iterator of iterator pair input sequence.
1150
- * \param seqs_end End iterator of iterator pair input sequence.
1151
- * \param target Begin iterator out output sequence.
1152
- * \param size Maximum size to merge.
1153
- * \param comp Comparator.
1154
- * \param mwma MultiwayMergeAlgorithm set to use.
1155
- * \tparam Stable Stable merging incurs a performance penalty.
1156
- * \tparam Sentinels The sequences have a sentinel element.
1157
- * \return End iterator of output sequence.
1158
- */
1159
- template <bool Stable, bool Sentinels, typename RandomAccessIteratorIterator,
1160
- typename RandomAccessIterator3,
1161
- typename Comparator = std::less<typename std::iterator_traits<
1162
- typename std::iterator_traits<RandomAccessIteratorIterator>::
1163
- value_type::first_type>::value_type> >
1164
- RandomAccessIterator3 multiway_merge_base(
1165
- RandomAccessIteratorIterator seqs_begin,
1166
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1167
- typename std::iterator_traits<typename std::iterator_traits<
1168
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1169
- size,
1170
- Comparator comp = Comparator(),
1171
- MultiwayMergeAlgorithm mwma = MWMA_ALGORITHM_DEFAULT)
1172
- {
1173
- using RandomAccessIterator = typename std::iterator_traits<
1174
- RandomAccessIteratorIterator>::value_type::first_type;
1175
- using value_type =
1176
- typename std::iterator_traits<RandomAccessIterator>::value_type;
1177
-
1178
- RandomAccessIterator3 return_target = target;
1179
- int k = static_cast<int>(seqs_end - seqs_begin);
1180
-
1181
- if (!Sentinels && mwma == MWMA_LOSER_TREE_SENTINEL)
1182
- mwma = MWMA_LOSER_TREE_COMBINED;
1183
-
1184
- using namespace multiway_merge_detail;
1185
-
1186
- switch (k)
1187
- {
1188
- case 0:
1189
- break;
1190
- case 1:
1191
- return_target =
1192
- std::copy(seqs_begin[0].first, seqs_begin[0].first + size, target);
1193
- seqs_begin[0].first += size;
1194
- break;
1195
- case 2:
1196
- return_target = merge_advance(seqs_begin[0].first, seqs_begin[0].second,
1197
- seqs_begin[1].first, seqs_begin[1].second,
1198
- target, size, comp);
1199
- break;
1200
- case 3:
1201
- switch (mwma)
1202
- {
1203
- case MWMA_LOSER_TREE_COMBINED:
1204
- return_target = multiway_merge_3_combined(seqs_begin, seqs_end,
1205
- target, size, comp);
1206
- break;
1207
- case MWMA_LOSER_TREE_SENTINEL:
1208
- return_target = multiway_merge_3_variant<unguarded_iterator>(
1209
- seqs_begin, seqs_end, target, size, comp);
1210
- break;
1211
- default:
1212
- return_target = multiway_merge_3_variant<guarded_iterator>(
1213
- seqs_begin, seqs_end, target, size, comp);
1214
- break;
1215
- }
1216
- break;
1217
- case 4:
1218
- switch (mwma)
1219
- {
1220
- case MWMA_LOSER_TREE_COMBINED:
1221
- return_target = multiway_merge_4_combined(seqs_begin, seqs_end,
1222
- target, size, comp);
1223
- break;
1224
- case MWMA_LOSER_TREE_SENTINEL:
1225
- return_target = multiway_merge_4_variant<unguarded_iterator>(
1226
- seqs_begin, seqs_end, target, size, comp);
1227
- break;
1228
- default:
1229
- return_target = multiway_merge_4_variant<guarded_iterator>(
1230
- seqs_begin, seqs_end, target, size, comp);
1231
- break;
1232
- }
1233
- break;
1234
- default: {
1235
- switch (mwma)
1236
- {
1237
- case MWMA_BUBBLE:
1238
- return_target = multiway_merge_bubble<Stable>(seqs_begin, seqs_end,
1239
- target, size, comp);
1240
- break;
1241
- case MWMA_LOSER_TREE:
1242
- return_target = multiway_merge_loser_tree<
1243
- LoserTree<Stable, value_type, Comparator> >(
1244
- seqs_begin, seqs_end, target, size, comp);
1245
- break;
1246
- case MWMA_LOSER_TREE_COMBINED:
1247
- return_target = multiway_merge_loser_tree_combined<Stable>(
1248
- seqs_begin, seqs_end, target, size, comp);
1249
- break;
1250
- case MWMA_LOSER_TREE_SENTINEL:
1251
- return_target = multiway_merge_loser_tree_sentinel<Stable>(
1252
- seqs_begin, seqs_end, target, size, comp);
1253
- break;
1254
- default:
1255
- assert(0 && "multiway_merge algorithm not implemented");
1256
- break;
1257
- }
1258
- }
1259
- }
1260
-
1261
- return return_target;
1262
- }
1263
-
1264
- /******************************************************************************/
1265
- // multiway_merge() Frontends
1266
-
1267
- /*!
1268
- * Sequential multi-way merge.
1269
- *
1270
- * \param seqs_begin Begin iterator of iterator pair input sequence.
1271
- * \param seqs_end End iterator of iterator pair input sequence.
1272
- * \param target Begin iterator out output sequence.
1273
- * \param size Maximum size to merge.
1274
- * \param comp Comparator.
1275
- * \param mwma MultiwayMergeAlgorithm set to use.
1276
- * \return End iterator of output sequence.
1277
- */
1278
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
1279
- typename Comparator = std::less<typename std::iterator_traits<
1280
- typename std::iterator_traits<RandomAccessIteratorIterator>::
1281
- value_type::first_type>::value_type> >
1282
- RandomAccessIterator3 multiway_merge(
1283
- RandomAccessIteratorIterator seqs_begin,
1284
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1285
- typename std::iterator_traits<typename std::iterator_traits<
1286
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1287
- size,
1288
- Comparator comp = Comparator(),
1289
- MultiwayMergeAlgorithm mwma = MWMA_ALGORITHM_DEFAULT)
1290
- {
1291
- return multiway_merge_base</* Stable */ false, /* Sentinels */ false>(
1292
- seqs_begin, seqs_end, target, size, comp, mwma);
1293
- }
1294
-
1295
- /*!
1296
- * Stable sequential multi-way merge.
1297
- *
1298
- * \param seqs_begin Begin iterator of iterator pair input sequence.
1299
- * \param seqs_end End iterator of iterator pair input sequence.
1300
- * \param target Begin iterator out output sequence.
1301
- * \param size Maximum size to merge.
1302
- * \param comp Comparator.
1303
- * \param mwma MultiwayMergeAlgorithm set to use.
1304
- * \return End iterator of output sequence.
1305
- */
1306
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
1307
- typename Comparator = std::less<typename std::iterator_traits<
1308
- typename std::iterator_traits<RandomAccessIteratorIterator>::
1309
- value_type::first_type>::value_type> >
1310
- RandomAccessIterator3 stable_multiway_merge(
1311
- RandomAccessIteratorIterator seqs_begin,
1312
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1313
- typename std::iterator_traits<typename std::iterator_traits<
1314
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1315
- size,
1316
- Comparator comp = Comparator(),
1317
- MultiwayMergeAlgorithm mwma = MWMA_ALGORITHM_DEFAULT)
1318
- {
1319
- return multiway_merge_base</* Stable */ true, /* Sentinels */ false>(
1320
- seqs_begin, seqs_end, target, size, comp, mwma);
1321
- }
1322
-
1323
- /*!
1324
- * Sequential multi-way merge with sentinels in sequences.
1325
- *
1326
- * \param seqs_begin Begin iterator of iterator pair input sequence.
1327
- * \param seqs_end End iterator of iterator pair input sequence.
1328
- * \param target Begin iterator out output sequence.
1329
- * \param size Maximum size to merge.
1330
- * \param comp Comparator.
1331
- * \param mwma MultiwayMergeAlgorithm set to use.
1332
- * \return End iterator of output sequence.
1333
- */
1334
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
1335
- typename Comparator = std::less<typename std::iterator_traits<
1336
- typename std::iterator_traits<RandomAccessIteratorIterator>::
1337
- value_type::first_type>::value_type> >
1338
- RandomAccessIterator3 multiway_merge_sentinels(
1339
- RandomAccessIteratorIterator seqs_begin,
1340
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1341
- typename std::iterator_traits<typename std::iterator_traits<
1342
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1343
- size,
1344
- Comparator comp = Comparator(),
1345
- MultiwayMergeAlgorithm mwma = MWMA_ALGORITHM_DEFAULT)
1346
- {
1347
- return multiway_merge_base</* Stable */ false, /* Sentinels */ true>(
1348
- seqs_begin, seqs_end, target, size, comp, mwma);
1349
- }
1350
-
1351
- /*!
1352
- * Stable sequential multi-way merge with sentinels in sequences.
1353
- *
1354
- * \param seqs_begin Begin iterator of iterator pair input sequence.
1355
- * \param seqs_end End iterator of iterator pair input sequence.
1356
- * \param target Begin iterator out output sequence.
1357
- * \param size Maximum size to merge.
1358
- * \param comp Comparator.
1359
- * \param mwma MultiwayMergeAlgorithm set to use.
1360
- * \return End iterator of output sequence.
1361
- */
1362
- template <typename RandomAccessIteratorIterator, typename RandomAccessIterator3,
1363
- typename Comparator = std::less<typename std::iterator_traits<
1364
- typename std::iterator_traits<RandomAccessIteratorIterator>::
1365
- value_type::first_type>::value_type> >
1366
- RandomAccessIterator3 stable_multiway_merge_sentinels(
1367
- RandomAccessIteratorIterator seqs_begin,
1368
- RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target,
1369
- typename std::iterator_traits<typename std::iterator_traits<
1370
- RandomAccessIteratorIterator>::value_type::first_type>::difference_type
1371
- size,
1372
- Comparator comp = Comparator(),
1373
- MultiwayMergeAlgorithm mwma = MWMA_ALGORITHM_DEFAULT)
1374
- {
1375
- return multiway_merge_base</* Stable */ true, /* Sentinels */ true>(
1376
- seqs_begin, seqs_end, target, size, comp, mwma);
1377
- }
1378
-
1379
- //! \}
1380
-
1381
- } // namespace tlx
1382
-
1383
- #endif // !TLX_ALGORITHM_MULTIWAY_MERGE_HEADER
1384
-
1385
- /******************************************************************************/