@ladybugmem/icebug 0.1.0

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 (624) hide show
  1. package/README.md +14 -0
  2. package/binding.gyp +54 -0
  3. package/build/Release/.deps/Release/icebug.node.d +1 -0
  4. package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +291 -0
  5. package/build/Release/icebug.node +0 -0
  6. package/build/Release/obj.target/icebug/src/addon.o +0 -0
  7. package/lib/index.d.ts +361 -0
  8. package/lib/index.js +102 -0
  9. package/package.json +42 -0
  10. package/src/addon.cpp +1253 -0
  11. package/vendor/include/networkit/GlobalState.hpp +86 -0
  12. package/vendor/include/networkit/Globals.hpp +41 -0
  13. package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +27 -0
  14. package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +1292 -0
  15. package/vendor/include/networkit/algebraic/CSRMatrix.hpp +11 -0
  16. package/vendor/include/networkit/algebraic/DenseMatrix.hpp +537 -0
  17. package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +514 -0
  18. package/vendor/include/networkit/algebraic/GraphBLAS.hpp +323 -0
  19. package/vendor/include/networkit/algebraic/MatrixTools.hpp +156 -0
  20. package/vendor/include/networkit/algebraic/Semirings.hpp +171 -0
  21. package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +111 -0
  22. package/vendor/include/networkit/algebraic/Vector.hpp +371 -0
  23. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +72 -0
  24. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +88 -0
  25. package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +96 -0
  26. package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +145 -0
  27. package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +122 -0
  28. package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +76 -0
  29. package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +113 -0
  30. package/vendor/include/networkit/auxiliary/ArrayTools.hpp +85 -0
  31. package/vendor/include/networkit/auxiliary/BloomFilter.hpp +70 -0
  32. package/vendor/include/networkit/auxiliary/BucketPQ.hpp +142 -0
  33. package/vendor/include/networkit/auxiliary/Enforce.hpp +117 -0
  34. package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +74 -0
  35. package/vendor/include/networkit/auxiliary/HashUtils.hpp +28 -0
  36. package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +52 -0
  37. package/vendor/include/networkit/auxiliary/Log.hpp +119 -0
  38. package/vendor/include/networkit/auxiliary/MissingMath.hpp +48 -0
  39. package/vendor/include/networkit/auxiliary/Multiprecision.hpp +17 -0
  40. package/vendor/include/networkit/auxiliary/NumberParsing.hpp +307 -0
  41. package/vendor/include/networkit/auxiliary/NumericTools.hpp +57 -0
  42. package/vendor/include/networkit/auxiliary/Parallel.hpp +56 -0
  43. package/vendor/include/networkit/auxiliary/Parallelism.hpp +33 -0
  44. package/vendor/include/networkit/auxiliary/PrioQueue.hpp +252 -0
  45. package/vendor/include/networkit/auxiliary/Random.hpp +122 -0
  46. package/vendor/include/networkit/auxiliary/SetIntersector.hpp +72 -0
  47. package/vendor/include/networkit/auxiliary/SignalHandling.hpp +39 -0
  48. package/vendor/include/networkit/auxiliary/SortedList.hpp +128 -0
  49. package/vendor/include/networkit/auxiliary/SparseVector.hpp +215 -0
  50. package/vendor/include/networkit/auxiliary/SpinLock.hpp +23 -0
  51. package/vendor/include/networkit/auxiliary/StringBuilder.hpp +322 -0
  52. package/vendor/include/networkit/auxiliary/StringTools.hpp +76 -0
  53. package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +76 -0
  54. package/vendor/include/networkit/auxiliary/Timer.hpp +145 -0
  55. package/vendor/include/networkit/auxiliary/VectorComparator.hpp +32 -0
  56. package/vendor/include/networkit/base/Algorithm.hpp +41 -0
  57. package/vendor/include/networkit/base/DynAlgorithm.hpp +31 -0
  58. package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +62 -0
  59. package/vendor/include/networkit/centrality/ApproxCloseness.hpp +136 -0
  60. package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +156 -0
  61. package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +124 -0
  62. package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +84 -0
  63. package/vendor/include/networkit/centrality/Betweenness.hpp +47 -0
  64. package/vendor/include/networkit/centrality/Centrality.hpp +98 -0
  65. package/vendor/include/networkit/centrality/Closeness.hpp +107 -0
  66. package/vendor/include/networkit/centrality/ComplexPaths.hpp +113 -0
  67. package/vendor/include/networkit/centrality/CoreDecomposition.hpp +161 -0
  68. package/vendor/include/networkit/centrality/DegreeCentrality.hpp +55 -0
  69. package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +95 -0
  70. package/vendor/include/networkit/centrality/DynBetweenness.hpp +99 -0
  71. package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +98 -0
  72. package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +115 -0
  73. package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +223 -0
  74. package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +41 -0
  75. package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +51 -0
  76. package/vendor/include/networkit/centrality/ForestCentrality.hpp +112 -0
  77. package/vendor/include/networkit/centrality/GedWalk.hpp +225 -0
  78. package/vendor/include/networkit/centrality/GroupCloseness.hpp +115 -0
  79. package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +78 -0
  80. package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +77 -0
  81. package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +106 -0
  82. package/vendor/include/networkit/centrality/GroupDegree.hpp +155 -0
  83. package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +83 -0
  84. package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +48 -0
  85. package/vendor/include/networkit/centrality/KPathCentrality.hpp +52 -0
  86. package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +242 -0
  87. package/vendor/include/networkit/centrality/KatzCentrality.hpp +62 -0
  88. package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +44 -0
  89. package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +60 -0
  90. package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +43 -0
  91. package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +42 -0
  92. package/vendor/include/networkit/centrality/PageRank.hpp +101 -0
  93. package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +48 -0
  94. package/vendor/include/networkit/centrality/Sfigality.hpp +45 -0
  95. package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +86 -0
  96. package/vendor/include/networkit/centrality/TopCloseness.hpp +136 -0
  97. package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +151 -0
  98. package/vendor/include/networkit/clique/MaximalCliques.hpp +83 -0
  99. package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +59 -0
  100. package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +156 -0
  101. package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +57 -0
  102. package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +43 -0
  103. package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +33 -0
  104. package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +62 -0
  105. package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +31 -0
  106. package/vendor/include/networkit/community/ClusteringGenerator.hpp +75 -0
  107. package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +58 -0
  108. package/vendor/include/networkit/community/Conductance.hpp +32 -0
  109. package/vendor/include/networkit/community/CoverF1Similarity.hpp +53 -0
  110. package/vendor/include/networkit/community/CoverHubDominance.hpp +38 -0
  111. package/vendor/include/networkit/community/Coverage.hpp +25 -0
  112. package/vendor/include/networkit/community/CutClustering.hpp +62 -0
  113. package/vendor/include/networkit/community/DissimilarityMeasure.hpp +31 -0
  114. package/vendor/include/networkit/community/DynamicNMIDistance.hpp +44 -0
  115. package/vendor/include/networkit/community/EdgeCut.hpp +24 -0
  116. package/vendor/include/networkit/community/GraphClusteringTools.hpp +103 -0
  117. package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +28 -0
  118. package/vendor/include/networkit/community/HubDominance.hpp +46 -0
  119. package/vendor/include/networkit/community/IntrapartitionDensity.hpp +44 -0
  120. package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +40 -0
  121. package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +40 -0
  122. package/vendor/include/networkit/community/JaccardMeasure.hpp +25 -0
  123. package/vendor/include/networkit/community/LFM.hpp +49 -0
  124. package/vendor/include/networkit/community/LPDegreeOrdered.hpp +48 -0
  125. package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +100 -0
  126. package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +31 -0
  127. package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +31 -0
  128. package/vendor/include/networkit/community/LouvainMapEquation.hpp +135 -0
  129. package/vendor/include/networkit/community/Modularity.hpp +54 -0
  130. package/vendor/include/networkit/community/NMIDistance.hpp +28 -0
  131. package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +27 -0
  132. package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +51 -0
  133. package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +175 -0
  134. package/vendor/include/networkit/community/PLM.hpp +89 -0
  135. package/vendor/include/networkit/community/PLP.hpp +83 -0
  136. package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +37 -0
  137. package/vendor/include/networkit/community/ParallelLeiden.hpp +96 -0
  138. package/vendor/include/networkit/community/ParallelLeidenView.hpp +138 -0
  139. package/vendor/include/networkit/community/PartitionFragmentation.hpp +30 -0
  140. package/vendor/include/networkit/community/PartitionHubDominance.hpp +37 -0
  141. package/vendor/include/networkit/community/PartitionIntersection.hpp +25 -0
  142. package/vendor/include/networkit/community/QualityMeasure.hpp +27 -0
  143. package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +40 -0
  144. package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +40 -0
  145. package/vendor/include/networkit/community/StablePartitionNodes.hpp +48 -0
  146. package/vendor/include/networkit/components/BiconnectedComponents.hpp +116 -0
  147. package/vendor/include/networkit/components/ComponentDecomposition.hpp +72 -0
  148. package/vendor/include/networkit/components/ConnectedComponents.hpp +55 -0
  149. package/vendor/include/networkit/components/DynConnectedComponents.hpp +71 -0
  150. package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +73 -0
  151. package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +44 -0
  152. package/vendor/include/networkit/components/RandomSpanningForest.hpp +36 -0
  153. package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +50 -0
  154. package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +59 -0
  155. package/vendor/include/networkit/correlation/Assortativity.hpp +64 -0
  156. package/vendor/include/networkit/distance/APSP.hpp +70 -0
  157. package/vendor/include/networkit/distance/AStar.hpp +68 -0
  158. package/vendor/include/networkit/distance/AStarGeneral.hpp +110 -0
  159. package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +52 -0
  160. package/vendor/include/networkit/distance/AffectedNodes.hpp +130 -0
  161. package/vendor/include/networkit/distance/AlgebraicDistance.hpp +63 -0
  162. package/vendor/include/networkit/distance/BFS.hpp +43 -0
  163. package/vendor/include/networkit/distance/BidirectionalBFS.hpp +51 -0
  164. package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +69 -0
  165. package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +89 -0
  166. package/vendor/include/networkit/distance/Diameter.hpp +97 -0
  167. package/vendor/include/networkit/distance/Dijkstra.hpp +50 -0
  168. package/vendor/include/networkit/distance/DynAPSP.hpp +67 -0
  169. package/vendor/include/networkit/distance/DynBFS.hpp +56 -0
  170. package/vendor/include/networkit/distance/DynDijkstra.hpp +57 -0
  171. package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +67 -0
  172. package/vendor/include/networkit/distance/DynSSSP.hpp +87 -0
  173. package/vendor/include/networkit/distance/Eccentricity.hpp +32 -0
  174. package/vendor/include/networkit/distance/EffectiveDiameter.hpp +47 -0
  175. package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +57 -0
  176. package/vendor/include/networkit/distance/FloydWarshall.hpp +93 -0
  177. package/vendor/include/networkit/distance/GraphDistance.hpp +49 -0
  178. package/vendor/include/networkit/distance/HopPlotApproximation.hpp +62 -0
  179. package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +66 -0
  180. package/vendor/include/networkit/distance/IncompleteSSSP.hpp +41 -0
  181. package/vendor/include/networkit/distance/JaccardDistance.hpp +57 -0
  182. package/vendor/include/networkit/distance/MultiTargetBFS.hpp +32 -0
  183. package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +40 -0
  184. package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +47 -0
  185. package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +56 -0
  186. package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +56 -0
  187. package/vendor/include/networkit/distance/NodeDistance.hpp +54 -0
  188. package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +76 -0
  189. package/vendor/include/networkit/distance/ReverseBFS.hpp +46 -0
  190. package/vendor/include/networkit/distance/SPSP.hpp +143 -0
  191. package/vendor/include/networkit/distance/SSSP.hpp +216 -0
  192. package/vendor/include/networkit/distance/STSP.hpp +193 -0
  193. package/vendor/include/networkit/distance/Volume.hpp +66 -0
  194. package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +40 -0
  195. package/vendor/include/networkit/dynamics/DGSWriter.hpp +30 -0
  196. package/vendor/include/networkit/dynamics/GraphDifference.hpp +110 -0
  197. package/vendor/include/networkit/dynamics/GraphEvent.hpp +55 -0
  198. package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +39 -0
  199. package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +55 -0
  200. package/vendor/include/networkit/dynamics/GraphUpdater.hpp +38 -0
  201. package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +26 -0
  202. package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +33 -0
  203. package/vendor/include/networkit/edgescores/EdgeScore.hpp +50 -0
  204. package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +33 -0
  205. package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +33 -0
  206. package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +32 -0
  207. package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +35 -0
  208. package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +29 -0
  209. package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +23 -0
  210. package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +39 -0
  211. package/vendor/include/networkit/embedding/Node2Vec.hpp +83 -0
  212. package/vendor/include/networkit/flow/EdmondsKarp.hpp +112 -0
  213. package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +87 -0
  214. package/vendor/include/networkit/generators/ChungLuGenerator.hpp +46 -0
  215. package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +63 -0
  216. package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +56 -0
  217. package/vendor/include/networkit/generators/ConfigurationModel.hpp +36 -0
  218. package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +33 -0
  219. package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +33 -0
  220. package/vendor/include/networkit/generators/DynamicDGSParser.hpp +51 -0
  221. package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +34 -0
  222. package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +55 -0
  223. package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +40 -0
  224. package/vendor/include/networkit/generators/DynamicGraphSource.hpp +79 -0
  225. package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +143 -0
  226. package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +26 -0
  227. package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +54 -0
  228. package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +65 -0
  229. package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +318 -0
  230. package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +56 -0
  231. package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +48 -0
  232. package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +236 -0
  233. package/vendor/include/networkit/generators/LFRGenerator.hpp +175 -0
  234. package/vendor/include/networkit/generators/MocnikGenerator.hpp +147 -0
  235. package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +58 -0
  236. package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +128 -0
  237. package/vendor/include/networkit/generators/PubWebGenerator.hpp +94 -0
  238. package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +37 -0
  239. package/vendor/include/networkit/generators/RmatGenerator.hpp +67 -0
  240. package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +42 -0
  241. package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +30 -0
  242. package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +41 -0
  243. package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +43 -0
  244. package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +857 -0
  245. package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +587 -0
  246. package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +726 -0
  247. package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +232 -0
  248. package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +149 -0
  249. package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +143 -0
  250. package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +248 -0
  251. package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +145 -0
  252. package/vendor/include/networkit/global/ClusteringCoefficient.hpp +42 -0
  253. package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +24 -0
  254. package/vendor/include/networkit/graph/Attributes.hpp +568 -0
  255. package/vendor/include/networkit/graph/BFS.hpp +111 -0
  256. package/vendor/include/networkit/graph/DFS.hpp +71 -0
  257. package/vendor/include/networkit/graph/Dijkstra.hpp +83 -0
  258. package/vendor/include/networkit/graph/EdgeIterators.hpp +171 -0
  259. package/vendor/include/networkit/graph/Graph.hpp +2083 -0
  260. package/vendor/include/networkit/graph/GraphBuilder.hpp +289 -0
  261. package/vendor/include/networkit/graph/GraphR.hpp +133 -0
  262. package/vendor/include/networkit/graph/GraphTools.hpp +589 -0
  263. package/vendor/include/networkit/graph/GraphW.hpp +1236 -0
  264. package/vendor/include/networkit/graph/KruskalMSF.hpp +50 -0
  265. package/vendor/include/networkit/graph/NeighborIterators.hpp +163 -0
  266. package/vendor/include/networkit/graph/NodeIterators.hpp +127 -0
  267. package/vendor/include/networkit/graph/PrimMSF.hpp +66 -0
  268. package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +133 -0
  269. package/vendor/include/networkit/graph/SpanningForest.hpp +41 -0
  270. package/vendor/include/networkit/graph/TopologicalSort.hpp +87 -0
  271. package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +126 -0
  272. package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +68 -0
  273. package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +44 -0
  274. package/vendor/include/networkit/independentset/Luby.hpp +27 -0
  275. package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +45 -0
  276. package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +47 -0
  277. package/vendor/include/networkit/io/BinaryPartitionReader.hpp +41 -0
  278. package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +44 -0
  279. package/vendor/include/networkit/io/CoverReader.hpp +27 -0
  280. package/vendor/include/networkit/io/CoverWriter.hpp +21 -0
  281. package/vendor/include/networkit/io/DGSReader.hpp +39 -0
  282. package/vendor/include/networkit/io/DibapGraphReader.hpp +43 -0
  283. package/vendor/include/networkit/io/DotGraphWriter.hpp +39 -0
  284. package/vendor/include/networkit/io/DotPartitionWriter.hpp +23 -0
  285. package/vendor/include/networkit/io/DynamicGraphReader.hpp +29 -0
  286. package/vendor/include/networkit/io/EdgeListCoverReader.hpp +35 -0
  287. package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +43 -0
  288. package/vendor/include/networkit/io/EdgeListReader.hpp +61 -0
  289. package/vendor/include/networkit/io/EdgeListWriter.hpp +48 -0
  290. package/vendor/include/networkit/io/GMLGraphReader.hpp +33 -0
  291. package/vendor/include/networkit/io/GMLGraphWriter.hpp +33 -0
  292. package/vendor/include/networkit/io/GraphIO.hpp +52 -0
  293. package/vendor/include/networkit/io/GraphReader.hpp +40 -0
  294. package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +71 -0
  295. package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +61 -0
  296. package/vendor/include/networkit/io/GraphWriter.hpp +27 -0
  297. package/vendor/include/networkit/io/KONECTGraphReader.hpp +44 -0
  298. package/vendor/include/networkit/io/LineFileReader.hpp +42 -0
  299. package/vendor/include/networkit/io/METISGraphReader.hpp +36 -0
  300. package/vendor/include/networkit/io/METISGraphWriter.hpp +29 -0
  301. package/vendor/include/networkit/io/METISParser.hpp +63 -0
  302. package/vendor/include/networkit/io/MTXGraphReader.hpp +31 -0
  303. package/vendor/include/networkit/io/MTXParser.hpp +87 -0
  304. package/vendor/include/networkit/io/MatrixMarketReader.hpp +33 -0
  305. package/vendor/include/networkit/io/MatrixReader.hpp +33 -0
  306. package/vendor/include/networkit/io/MemoryMappedFile.hpp +80 -0
  307. package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +144 -0
  308. package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +50 -0
  309. package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +71 -0
  310. package/vendor/include/networkit/io/PartitionReader.hpp +34 -0
  311. package/vendor/include/networkit/io/PartitionWriter.hpp +31 -0
  312. package/vendor/include/networkit/io/RBGraphReader.hpp +37 -0
  313. package/vendor/include/networkit/io/RBMatrixReader.hpp +49 -0
  314. package/vendor/include/networkit/io/RasterReader.hpp +40 -0
  315. package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +28 -0
  316. package/vendor/include/networkit/io/SNAPGraphReader.hpp +53 -0
  317. package/vendor/include/networkit/io/SNAPGraphWriter.hpp +53 -0
  318. package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +44 -0
  319. package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +27 -0
  320. package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +39 -0
  321. package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +37 -0
  322. package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +36 -0
  323. package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +70 -0
  324. package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +39 -0
  325. package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +135 -0
  326. package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +44 -0
  327. package/vendor/include/networkit/linkprediction/KatzIndex.hpp +84 -0
  328. package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +98 -0
  329. package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +56 -0
  330. package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +60 -0
  331. package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +42 -0
  332. package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +54 -0
  333. package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +48 -0
  334. package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +40 -0
  335. package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +66 -0
  336. package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +37 -0
  337. package/vendor/include/networkit/linkprediction/ROCMetric.hpp +39 -0
  338. package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +47 -0
  339. package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +38 -0
  340. package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +50 -0
  341. package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +39 -0
  342. package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +35 -0
  343. package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +35 -0
  344. package/vendor/include/networkit/matching/BMatcher.hpp +52 -0
  345. package/vendor/include/networkit/matching/BMatching.hpp +115 -0
  346. package/vendor/include/networkit/matching/BSuitorMatcher.hpp +170 -0
  347. package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +78 -0
  348. package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +35 -0
  349. package/vendor/include/networkit/matching/Matcher.hpp +55 -0
  350. package/vendor/include/networkit/matching/Matching.hpp +111 -0
  351. package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +46 -0
  352. package/vendor/include/networkit/matching/SuitorMatcher.hpp +62 -0
  353. package/vendor/include/networkit/numerics/ConjugateGradient.hpp +163 -0
  354. package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +99 -0
  355. package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +70 -0
  356. package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +460 -0
  357. package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +47 -0
  358. package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +56 -0
  359. package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +52 -0
  360. package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +133 -0
  361. package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +28 -0
  362. package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +165 -0
  363. package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +1090 -0
  364. package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +316 -0
  365. package/vendor/include/networkit/numerics/LinearSolver.hpp +151 -0
  366. package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +61 -0
  367. package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +36 -0
  368. package/vendor/include/networkit/numerics/Smoother.hpp +37 -0
  369. package/vendor/include/networkit/overlap/HashingOverlapper.hpp +28 -0
  370. package/vendor/include/networkit/overlap/Overlapper.hpp +27 -0
  371. package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +113 -0
  372. package/vendor/include/networkit/randomization/Curveball.hpp +49 -0
  373. package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +39 -0
  374. package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +39 -0
  375. package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +82 -0
  376. package/vendor/include/networkit/randomization/EdgeSwitching.hpp +157 -0
  377. package/vendor/include/networkit/randomization/GlobalCurveball.hpp +69 -0
  378. package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +303 -0
  379. package/vendor/include/networkit/reachability/AllSimplePaths.hpp +122 -0
  380. package/vendor/include/networkit/reachability/ReachableNodes.hpp +83 -0
  381. package/vendor/include/networkit/scd/ApproximatePageRank.hpp +51 -0
  382. package/vendor/include/networkit/scd/CliqueDetect.hpp +55 -0
  383. package/vendor/include/networkit/scd/CombinedSCD.hpp +51 -0
  384. package/vendor/include/networkit/scd/GCE.hpp +42 -0
  385. package/vendor/include/networkit/scd/LFMLocal.hpp +54 -0
  386. package/vendor/include/networkit/scd/LocalT.hpp +40 -0
  387. package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +46 -0
  388. package/vendor/include/networkit/scd/PageRankNibble.hpp +55 -0
  389. package/vendor/include/networkit/scd/RandomBFS.hpp +33 -0
  390. package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +121 -0
  391. package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +76 -0
  392. package/vendor/include/networkit/scd/SetConductance.hpp +47 -0
  393. package/vendor/include/networkit/scd/TCE.hpp +41 -0
  394. package/vendor/include/networkit/scd/TwoPhaseL.hpp +40 -0
  395. package/vendor/include/networkit/scoring/EdgeScoring.hpp +44 -0
  396. package/vendor/include/networkit/scoring/ModularityScoring.hpp +79 -0
  397. package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +59 -0
  398. package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +28 -0
  399. package/vendor/include/networkit/sparsification/ForestFireScore.hpp +34 -0
  400. package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +40 -0
  401. package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +30 -0
  402. package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +124 -0
  403. package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +63 -0
  404. package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +38 -0
  405. package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +33 -0
  406. package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +29 -0
  407. package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +23 -0
  408. package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +35 -0
  409. package/vendor/include/networkit/sparsification/SimmelianScore.hpp +92 -0
  410. package/vendor/include/networkit/sparsification/Sparsifiers.hpp +166 -0
  411. package/vendor/include/networkit/structures/Cover.hpp +248 -0
  412. package/vendor/include/networkit/structures/LocalCommunity.hpp +363 -0
  413. package/vendor/include/networkit/structures/Partition.hpp +335 -0
  414. package/vendor/include/networkit/structures/UnionFind.hpp +66 -0
  415. package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +157 -0
  416. package/vendor/include/networkit/viz/MaxentStress.hpp +346 -0
  417. package/vendor/include/networkit/viz/Octree.hpp +428 -0
  418. package/vendor/include/networkit/viz/PivotMDS.hpp +63 -0
  419. package/vendor/include/networkit/viz/Point.hpp +415 -0
  420. package/vendor/include/networkit/viz/PostscriptWriter.hpp +78 -0
  421. package/vendor/include/tlx/algorithm/exclusive_scan.hpp +56 -0
  422. package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +56 -0
  423. package/vendor/include/tlx/algorithm/merge_advance.hpp +177 -0
  424. package/vendor/include/tlx/algorithm/merge_combine.hpp +76 -0
  425. package/vendor/include/tlx/algorithm/multisequence_partition.hpp +346 -0
  426. package/vendor/include/tlx/algorithm/multisequence_selection.hpp +351 -0
  427. package/vendor/include/tlx/algorithm/multiway_merge.hpp +1385 -0
  428. package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +257 -0
  429. package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +408 -0
  430. package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +116 -0
  431. package/vendor/include/tlx/algorithm.hpp +36 -0
  432. package/vendor/include/tlx/allocator_base.hpp +100 -0
  433. package/vendor/include/tlx/backtrace.hpp +54 -0
  434. package/vendor/include/tlx/cmdline_parser.hpp +498 -0
  435. package/vendor/include/tlx/container/btree.hpp +3977 -0
  436. package/vendor/include/tlx/container/btree_map.hpp +634 -0
  437. package/vendor/include/tlx/container/btree_multimap.hpp +627 -0
  438. package/vendor/include/tlx/container/btree_multiset.hpp +612 -0
  439. package/vendor/include/tlx/container/btree_set.hpp +612 -0
  440. package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +416 -0
  441. package/vendor/include/tlx/container/d_ary_heap.hpp +311 -0
  442. package/vendor/include/tlx/container/loser_tree.hpp +1009 -0
  443. package/vendor/include/tlx/container/lru_cache.hpp +319 -0
  444. package/vendor/include/tlx/container/radix_heap.hpp +735 -0
  445. package/vendor/include/tlx/container/ring_buffer.hpp +428 -0
  446. package/vendor/include/tlx/container/simple_vector.hpp +304 -0
  447. package/vendor/include/tlx/container/splay_tree.hpp +399 -0
  448. package/vendor/include/tlx/container/string_view.hpp +805 -0
  449. package/vendor/include/tlx/container.hpp +40 -0
  450. package/vendor/include/tlx/counting_ptr.hpp +522 -0
  451. package/vendor/include/tlx/define/attribute_always_inline.hpp +34 -0
  452. package/vendor/include/tlx/define/attribute_fallthrough.hpp +36 -0
  453. package/vendor/include/tlx/define/attribute_format_printf.hpp +34 -0
  454. package/vendor/include/tlx/define/attribute_packed.hpp +34 -0
  455. package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +34 -0
  456. package/vendor/include/tlx/define/constexpr.hpp +31 -0
  457. package/vendor/include/tlx/define/deprecated.hpp +39 -0
  458. package/vendor/include/tlx/define/endian.hpp +49 -0
  459. package/vendor/include/tlx/define/likely.hpp +33 -0
  460. package/vendor/include/tlx/define/visibility_hidden.hpp +34 -0
  461. package/vendor/include/tlx/define.hpp +36 -0
  462. package/vendor/include/tlx/delegate.hpp +524 -0
  463. package/vendor/include/tlx/die/core.hpp +311 -0
  464. package/vendor/include/tlx/die.hpp +106 -0
  465. package/vendor/include/tlx/digest/md5.hpp +81 -0
  466. package/vendor/include/tlx/digest/sha1.hpp +81 -0
  467. package/vendor/include/tlx/digest/sha256.hpp +81 -0
  468. package/vendor/include/tlx/digest/sha512.hpp +81 -0
  469. package/vendor/include/tlx/digest.hpp +30 -0
  470. package/vendor/include/tlx/logger/all.hpp +33 -0
  471. package/vendor/include/tlx/logger/array.hpp +43 -0
  472. package/vendor/include/tlx/logger/core.hpp +287 -0
  473. package/vendor/include/tlx/logger/deque.hpp +42 -0
  474. package/vendor/include/tlx/logger/map.hpp +65 -0
  475. package/vendor/include/tlx/logger/set.hpp +60 -0
  476. package/vendor/include/tlx/logger/tuple.hpp +66 -0
  477. package/vendor/include/tlx/logger/unordered_map.hpp +68 -0
  478. package/vendor/include/tlx/logger/unordered_set.hpp +64 -0
  479. package/vendor/include/tlx/logger/wrap_unprintable.hpp +75 -0
  480. package/vendor/include/tlx/logger.hpp +44 -0
  481. package/vendor/include/tlx/math/abs_diff.hpp +35 -0
  482. package/vendor/include/tlx/math/aggregate.hpp +231 -0
  483. package/vendor/include/tlx/math/aggregate_min_max.hpp +116 -0
  484. package/vendor/include/tlx/math/bswap.hpp +148 -0
  485. package/vendor/include/tlx/math/bswap_be.hpp +79 -0
  486. package/vendor/include/tlx/math/bswap_le.hpp +79 -0
  487. package/vendor/include/tlx/math/clz.hpp +174 -0
  488. package/vendor/include/tlx/math/ctz.hpp +174 -0
  489. package/vendor/include/tlx/math/div_ceil.hpp +36 -0
  490. package/vendor/include/tlx/math/ffs.hpp +123 -0
  491. package/vendor/include/tlx/math/integer_log2.hpp +189 -0
  492. package/vendor/include/tlx/math/is_power_of_two.hpp +74 -0
  493. package/vendor/include/tlx/math/polynomial_regression.hpp +243 -0
  494. package/vendor/include/tlx/math/popcount.hpp +173 -0
  495. package/vendor/include/tlx/math/power_to_the.hpp +44 -0
  496. package/vendor/include/tlx/math/rol.hpp +112 -0
  497. package/vendor/include/tlx/math/ror.hpp +112 -0
  498. package/vendor/include/tlx/math/round_to_power_of_two.hpp +121 -0
  499. package/vendor/include/tlx/math/round_up.hpp +36 -0
  500. package/vendor/include/tlx/math/sgn.hpp +38 -0
  501. package/vendor/include/tlx/math.hpp +46 -0
  502. package/vendor/include/tlx/meta/apply_tuple.hpp +55 -0
  503. package/vendor/include/tlx/meta/call_for_range.hpp +78 -0
  504. package/vendor/include/tlx/meta/call_foreach.hpp +60 -0
  505. package/vendor/include/tlx/meta/call_foreach_tuple.hpp +60 -0
  506. package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +61 -0
  507. package/vendor/include/tlx/meta/call_foreach_with_index.hpp +64 -0
  508. package/vendor/include/tlx/meta/enable_if.hpp +37 -0
  509. package/vendor/include/tlx/meta/fold_left.hpp +63 -0
  510. package/vendor/include/tlx/meta/fold_left_tuple.hpp +60 -0
  511. package/vendor/include/tlx/meta/fold_right.hpp +63 -0
  512. package/vendor/include/tlx/meta/fold_right_tuple.hpp +60 -0
  513. package/vendor/include/tlx/meta/function_chain.hpp +197 -0
  514. package/vendor/include/tlx/meta/function_stack.hpp +189 -0
  515. package/vendor/include/tlx/meta/has_member.hpp +80 -0
  516. package/vendor/include/tlx/meta/has_method.hpp +117 -0
  517. package/vendor/include/tlx/meta/index_sequence.hpp +66 -0
  518. package/vendor/include/tlx/meta/is_std_array.hpp +40 -0
  519. package/vendor/include/tlx/meta/is_std_pair.hpp +39 -0
  520. package/vendor/include/tlx/meta/is_std_tuple.hpp +39 -0
  521. package/vendor/include/tlx/meta/is_std_vector.hpp +39 -0
  522. package/vendor/include/tlx/meta/log2.hpp +101 -0
  523. package/vendor/include/tlx/meta/no_operation.hpp +55 -0
  524. package/vendor/include/tlx/meta/static_index.hpp +42 -0
  525. package/vendor/include/tlx/meta/vexpand.hpp +34 -0
  526. package/vendor/include/tlx/meta/vmap_for_range.hpp +84 -0
  527. package/vendor/include/tlx/meta/vmap_foreach.hpp +63 -0
  528. package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +59 -0
  529. package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +62 -0
  530. package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +70 -0
  531. package/vendor/include/tlx/meta.hpp +55 -0
  532. package/vendor/include/tlx/multi_timer.hpp +148 -0
  533. package/vendor/include/tlx/port/setenv.hpp +31 -0
  534. package/vendor/include/tlx/port.hpp +27 -0
  535. package/vendor/include/tlx/semaphore.hpp +119 -0
  536. package/vendor/include/tlx/simple_vector.hpp +20 -0
  537. package/vendor/include/tlx/siphash.hpp +282 -0
  538. package/vendor/include/tlx/sort/networks/best.hpp +611 -0
  539. package/vendor/include/tlx/sort/networks/bose_nelson.hpp +412 -0
  540. package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +507 -0
  541. package/vendor/include/tlx/sort/networks/cswap.hpp +60 -0
  542. package/vendor/include/tlx/sort/parallel_mergesort.hpp +398 -0
  543. package/vendor/include/tlx/sort/strings/insertion_sort.hpp +232 -0
  544. package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +185 -0
  545. package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +1647 -0
  546. package/vendor/include/tlx/sort/strings/radix_sort.hpp +934 -0
  547. package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +756 -0
  548. package/vendor/include/tlx/sort/strings/string_ptr.hpp +426 -0
  549. package/vendor/include/tlx/sort/strings/string_set.hpp +800 -0
  550. package/vendor/include/tlx/sort/strings.hpp +329 -0
  551. package/vendor/include/tlx/sort/strings_parallel.hpp +325 -0
  552. package/vendor/include/tlx/sort.hpp +29 -0
  553. package/vendor/include/tlx/stack_allocator.hpp +226 -0
  554. package/vendor/include/tlx/string/appendline.hpp +35 -0
  555. package/vendor/include/tlx/string/base64.hpp +87 -0
  556. package/vendor/include/tlx/string/bitdump.hpp +139 -0
  557. package/vendor/include/tlx/string/compare_icase.hpp +42 -0
  558. package/vendor/include/tlx/string/contains.hpp +36 -0
  559. package/vendor/include/tlx/string/contains_word.hpp +42 -0
  560. package/vendor/include/tlx/string/ends_with.hpp +79 -0
  561. package/vendor/include/tlx/string/equal_icase.hpp +42 -0
  562. package/vendor/include/tlx/string/erase_all.hpp +70 -0
  563. package/vendor/include/tlx/string/escape_html.hpp +34 -0
  564. package/vendor/include/tlx/string/escape_uri.hpp +34 -0
  565. package/vendor/include/tlx/string/expand_environment_variables.hpp +49 -0
  566. package/vendor/include/tlx/string/extract_between.hpp +40 -0
  567. package/vendor/include/tlx/string/format_iec_units.hpp +32 -0
  568. package/vendor/include/tlx/string/format_si_iec_units.hpp +19 -0
  569. package/vendor/include/tlx/string/format_si_units.hpp +32 -0
  570. package/vendor/include/tlx/string/hash_djb2.hpp +87 -0
  571. package/vendor/include/tlx/string/hash_sdbm.hpp +86 -0
  572. package/vendor/include/tlx/string/hexdump.hpp +154 -0
  573. package/vendor/include/tlx/string/index_of.hpp +56 -0
  574. package/vendor/include/tlx/string/join.hpp +65 -0
  575. package/vendor/include/tlx/string/join_generic.hpp +89 -0
  576. package/vendor/include/tlx/string/join_quoted.hpp +46 -0
  577. package/vendor/include/tlx/string/less_icase.hpp +64 -0
  578. package/vendor/include/tlx/string/levenshtein.hpp +193 -0
  579. package/vendor/include/tlx/string/pad.hpp +39 -0
  580. package/vendor/include/tlx/string/parse_si_iec_units.hpp +46 -0
  581. package/vendor/include/tlx/string/parse_uri.hpp +66 -0
  582. package/vendor/include/tlx/string/parse_uri_form_data.hpp +136 -0
  583. package/vendor/include/tlx/string/replace.hpp +141 -0
  584. package/vendor/include/tlx/string/split.hpp +170 -0
  585. package/vendor/include/tlx/string/split_quoted.hpp +49 -0
  586. package/vendor/include/tlx/string/split_view.hpp +218 -0
  587. package/vendor/include/tlx/string/split_words.hpp +53 -0
  588. package/vendor/include/tlx/string/ssprintf.hpp +45 -0
  589. package/vendor/include/tlx/string/ssprintf_generic.hpp +95 -0
  590. package/vendor/include/tlx/string/starts_with.hpp +44 -0
  591. package/vendor/include/tlx/string/to_lower.hpp +47 -0
  592. package/vendor/include/tlx/string/to_upper.hpp +47 -0
  593. package/vendor/include/tlx/string/trim.hpp +298 -0
  594. package/vendor/include/tlx/string/union_words.hpp +33 -0
  595. package/vendor/include/tlx/string/word_wrap.hpp +35 -0
  596. package/vendor/include/tlx/string.hpp +68 -0
  597. package/vendor/include/tlx/thread_barrier_mutex.hpp +109 -0
  598. package/vendor/include/tlx/thread_barrier_spin.hpp +127 -0
  599. package/vendor/include/tlx/thread_pool.hpp +151 -0
  600. package/vendor/include/tlx/timestamp.hpp +23 -0
  601. package/vendor/include/tlx/unused.hpp +28 -0
  602. package/vendor/include/tlx/vector_free.hpp +30 -0
  603. package/vendor/include/tlx/version.hpp +49 -0
  604. package/vendor/include/ttmath/ttmath.h +2881 -0
  605. package/vendor/include/ttmath/ttmathbig.h +6111 -0
  606. package/vendor/include/ttmath/ttmathdec.h +419 -0
  607. package/vendor/include/ttmath/ttmathint.h +1923 -0
  608. package/vendor/include/ttmath/ttmathmisc.h +250 -0
  609. package/vendor/include/ttmath/ttmathobjects.h +812 -0
  610. package/vendor/include/ttmath/ttmathparser.h +2791 -0
  611. package/vendor/include/ttmath/ttmaththreads.h +252 -0
  612. package/vendor/include/ttmath/ttmathtypes.h +707 -0
  613. package/vendor/include/ttmath/ttmathuint.h +4190 -0
  614. package/vendor/include/ttmath/ttmathuint_noasm.h +1038 -0
  615. package/vendor/include/ttmath/ttmathuint_x86.h +1620 -0
  616. package/vendor/include/ttmath/ttmathuint_x86_64.h +1177 -0
  617. package/vendor/lib/cmake/tlx/tlx-config.cmake +51 -0
  618. package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +19 -0
  619. package/vendor/lib/cmake/tlx/tlx-targets.cmake +106 -0
  620. package/vendor/lib/cmake/tlx/tlx-version.cmake +11 -0
  621. package/vendor/lib/libnetworkit.dylib +0 -0
  622. package/vendor/lib/libtlx.a +0 -0
  623. package/vendor/lib/pkgconfig/networkit.pc +11 -0
  624. package/vendor/lib/pkgconfig/tlx.pc +11 -0
@@ -0,0 +1,398 @@
1
+ /*******************************************************************************
2
+ * tlx/sort/parallel_mergesort.hpp
3
+ *
4
+ * **EXPERIMENTAL** Parallel multiway mergesort **EXPERIMENTAL**
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_SORT_PARALLEL_MERGESORT_HEADER
19
+ #define TLX_SORT_PARALLEL_MERGESORT_HEADER
20
+
21
+ #include <tlx/algorithm/multiway_merge_splitting.hpp>
22
+ #include <tlx/algorithm/parallel_multiway_merge.hpp>
23
+ #include <tlx/container/simple_vector.hpp>
24
+ #include <tlx/thread_barrier_mutex.hpp>
25
+ #include <algorithm>
26
+ #include <cstddef>
27
+ #include <functional>
28
+ #include <iterator>
29
+ #include <thread>
30
+ #include <utility>
31
+
32
+ #if defined(_OPENMP)
33
+ #include <omp.h>
34
+ #endif
35
+
36
+ namespace tlx {
37
+
38
+ //! \addtogroup tlx_sort
39
+ //! \{
40
+
41
+ namespace parallel_mergesort_detail {
42
+
43
+ //! Subsequence description.
44
+ template <typename DiffType>
45
+ struct PMWMSPiece
46
+ {
47
+ //! Begin of subsequence.
48
+ DiffType begin;
49
+ //! End of subsequence.
50
+ DiffType end;
51
+ };
52
+
53
+ /*!
54
+ * Data accessed by all threads.
55
+ *
56
+ * PMWMS = parallel multiway mergesort
57
+ */
58
+ template <typename RandomAccessIterator>
59
+ struct PMWMSSortingData
60
+ {
61
+ using ValueType =
62
+ typename std::iterator_traits<RandomAccessIterator>::value_type;
63
+ using DiffType =
64
+ typename std::iterator_traits<RandomAccessIterator>::difference_type;
65
+
66
+ //! Input begin.
67
+ RandomAccessIterator source;
68
+ //! Start indices, per thread.
69
+ simple_vector<DiffType> starts;
70
+
71
+ /** Storage in which to sort. */
72
+ simple_vector<ValueType*> temporary;
73
+ /** Samples. */
74
+ simple_vector<ValueType> samples;
75
+ /** Offsets to add to the found positions. */
76
+ simple_vector<DiffType> offsets;
77
+ /** PMWMSPieces of data to merge \c [thread][sequence] */
78
+ simple_vector<simple_vector<PMWMSPiece<DiffType> > > pieces;
79
+
80
+ explicit PMWMSSortingData(size_t num_threads)
81
+ : starts(num_threads + 1),
82
+ temporary(num_threads),
83
+ offsets(num_threads - 1),
84
+ pieces(num_threads)
85
+ {
86
+ }
87
+ };
88
+
89
+ /*!
90
+ * Select samples from a sequence.
91
+ * \param sd Pointer to sorting data struct. Result will be placed in \c
92
+ * sd->samples. \param num_samples Number of samples to select. \param iam my
93
+ * thread number \param num_threads number of threads in group
94
+ */
95
+ template <typename RandomAccessIterator, typename DiffType>
96
+ void determine_samples(PMWMSSortingData<RandomAccessIterator>* sd,
97
+ DiffType& num_samples, size_t iam, size_t num_threads)
98
+ {
99
+ num_samples = parallel_multiway_merge_oversampling * num_threads - 1;
100
+
101
+ simple_vector<DiffType> es(num_samples + 2);
102
+ multiway_merge_detail::equally_split(sd->starts[iam + 1] - sd->starts[iam],
103
+ static_cast<size_t>(num_samples + 1),
104
+ es.begin());
105
+
106
+ for (DiffType i = 0; i < num_samples; i++)
107
+ {
108
+ sd->samples[iam * num_samples + i] =
109
+ sd->source[sd->starts[iam] + es[i + 1]];
110
+ }
111
+ }
112
+
113
+ /*!
114
+ * PMWMS code executed by each thread.
115
+ * \param sd Pointer to sorting data struct.
116
+ * \param iam my thread number
117
+ * \param num_threads number of threads in group
118
+ * \param barrier thread barrier from main function
119
+ * \param comp Comparator.
120
+ * \param mwmsa MultiwayMergeSplittingAlgorithm to use.
121
+ */
122
+ template <bool Stable, typename RandomAccessIterator, typename Comparator>
123
+ void parallel_sort_mwms_pu(PMWMSSortingData<RandomAccessIterator>* sd,
124
+ size_t iam, size_t num_threads,
125
+ ThreadBarrierMutex& barrier, Comparator& comp,
126
+ MultiwayMergeSplittingAlgorithm mwmsa)
127
+ {
128
+ using ValueType =
129
+ typename std::iterator_traits<RandomAccessIterator>::value_type;
130
+ using DiffType =
131
+ typename std::iterator_traits<RandomAccessIterator>::difference_type;
132
+
133
+ // length of this thread's chunk, before merging
134
+ DiffType length_local = sd->starts[iam + 1] - sd->starts[iam];
135
+
136
+ using SortingPlacesIterator = ValueType*;
137
+
138
+ // sort in temporary storage, leave space for sentinel
139
+ sd->temporary[iam] = static_cast<ValueType*>(
140
+ ::operator new(sizeof(ValueType) * (length_local + 1)));
141
+
142
+ // copy there
143
+ std::uninitialized_copy(sd->source + sd->starts[iam],
144
+ sd->source + sd->starts[iam] + length_local,
145
+ sd->temporary[iam]);
146
+
147
+ // sort locally
148
+ if (Stable)
149
+ std::stable_sort(sd->temporary[iam], sd->temporary[iam] + length_local,
150
+ comp);
151
+ else
152
+ std::sort(sd->temporary[iam], sd->temporary[iam] + length_local, comp);
153
+
154
+ // invariant: locally sorted subsequence in sd->temporary[iam],
155
+ // sd->temporary[iam] + length_local
156
+
157
+ if (mwmsa == MWMSA_SAMPLING)
158
+ {
159
+ DiffType num_samples;
160
+ determine_samples(sd, num_samples, iam, num_threads);
161
+
162
+ barrier.wait(
163
+ [&]() { std::sort(sd->samples.begin(), sd->samples.end(), comp); });
164
+
165
+ for (size_t s = 0; s < num_threads; s++)
166
+ {
167
+ // for each sequence
168
+ if (num_samples * iam > 0)
169
+ sd->pieces[iam][s].begin =
170
+ std::lower_bound(sd->temporary[s],
171
+ sd->temporary[s] + sd->starts[s + 1] -
172
+ sd->starts[s],
173
+ sd->samples[num_samples * iam], comp) -
174
+ sd->temporary[s];
175
+ else
176
+ // absolute beginning
177
+ sd->pieces[iam][s].begin = 0;
178
+
179
+ if ((num_samples * (iam + 1)) < (num_samples * num_threads))
180
+ sd->pieces[iam][s].end =
181
+ std::lower_bound(
182
+ sd->temporary[s],
183
+ sd->temporary[s] + sd->starts[s + 1] - sd->starts[s],
184
+ sd->samples[num_samples * (iam + 1)], comp) -
185
+ sd->temporary[s];
186
+ else
187
+ // absolute end
188
+ sd->pieces[iam][s].end = sd->starts[s + 1] - sd->starts[s];
189
+ }
190
+ }
191
+ else if (mwmsa == MWMSA_EXACT)
192
+ {
193
+ barrier.wait();
194
+
195
+ simple_vector<std::pair<SortingPlacesIterator, SortingPlacesIterator> >
196
+ seqs(num_threads);
197
+
198
+ for (size_t s = 0; s < num_threads; s++)
199
+ seqs[s] = std::make_pair(sd->temporary[s], sd->temporary[s] +
200
+ sd->starts[s + 1] -
201
+ sd->starts[s]);
202
+
203
+ simple_vector<SortingPlacesIterator> offsets(num_threads);
204
+
205
+ // if not last thread
206
+ if (iam < num_threads - 1)
207
+ multisequence_partition(seqs.begin(), seqs.end(),
208
+ sd->starts[iam + 1], offsets.begin(), comp);
209
+
210
+ for (size_t seq = 0; seq < num_threads; seq++)
211
+ {
212
+ // for each sequence
213
+ if (iam < (num_threads - 1))
214
+ sd->pieces[iam][seq].end = offsets[seq] - seqs[seq].first;
215
+ else
216
+ // absolute end of this sequence
217
+ sd->pieces[iam][seq].end =
218
+ sd->starts[seq + 1] - sd->starts[seq];
219
+ }
220
+
221
+ barrier.wait();
222
+
223
+ for (size_t seq = 0; seq < num_threads; seq++)
224
+ {
225
+ // for each sequence
226
+ if (iam > 0)
227
+ sd->pieces[iam][seq].begin = sd->pieces[iam - 1][seq].end;
228
+ else
229
+ // absolute beginning
230
+ sd->pieces[iam][seq].begin = 0;
231
+ }
232
+ }
233
+
234
+ // offset from target begin, length after merging
235
+ DiffType offset = 0, length_am = 0;
236
+ for (size_t s = 0; s < num_threads; s++)
237
+ {
238
+ length_am += sd->pieces[iam][s].end - sd->pieces[iam][s].begin;
239
+ offset += sd->pieces[iam][s].begin;
240
+ }
241
+
242
+ // merge directly to target
243
+
244
+ simple_vector<std::pair<SortingPlacesIterator, SortingPlacesIterator> >
245
+ seqs(num_threads);
246
+
247
+ for (size_t s = 0; s < num_threads; s++)
248
+ {
249
+ seqs[s] = std::make_pair(sd->temporary[s] + sd->pieces[iam][s].begin,
250
+ sd->temporary[s] + sd->pieces[iam][s].end);
251
+ }
252
+
253
+ multiway_merge_base<Stable, /* Sentinels */ false>(
254
+ seqs.begin(), seqs.end(), sd->source + offset, length_am, comp);
255
+
256
+ barrier.wait();
257
+
258
+ operator delete(sd->temporary[iam]);
259
+ }
260
+
261
+ } // namespace parallel_mergesort_detail
262
+
263
+ //! \name Parallel Sorting Algorithms
264
+ //! \{
265
+
266
+ /*!
267
+ * Parallel multiway mergesort main call.
268
+ *
269
+ * \param begin Begin iterator of sequence.
270
+ * \param end End iterator of sequence.
271
+ * \param comp Comparator.
272
+ * \param num_threads Number of threads to use.
273
+ * \param mwmsa MultiwayMergeSplittingAlgorithm to use.
274
+ * \tparam Stable Stable sorting.
275
+ */
276
+ template <bool Stable, typename RandomAccessIterator, typename Comparator>
277
+ void parallel_mergesort_base(
278
+ RandomAccessIterator begin, RandomAccessIterator end, Comparator comp,
279
+ size_t num_threads = std::thread::hardware_concurrency(),
280
+ MultiwayMergeSplittingAlgorithm mwmsa = MWMSA_DEFAULT)
281
+ {
282
+ using namespace parallel_mergesort_detail;
283
+
284
+ using DiffType =
285
+ typename std::iterator_traits<RandomAccessIterator>::difference_type;
286
+
287
+ DiffType n = end - begin;
288
+
289
+ if (n <= 1)
290
+ return;
291
+
292
+ // at least one element per thread
293
+ if (num_threads > static_cast<size_t>(n))
294
+ num_threads = static_cast<size_t>(n);
295
+
296
+ PMWMSSortingData<RandomAccessIterator> sd(num_threads);
297
+ sd.source = begin;
298
+
299
+ if (mwmsa == MWMSA_SAMPLING)
300
+ {
301
+ sd.samples.resize(
302
+ num_threads *
303
+ (parallel_multiway_merge_oversampling * num_threads - 1));
304
+ }
305
+
306
+ for (size_t s = 0; s < num_threads; s++)
307
+ sd.pieces[s].resize(num_threads);
308
+
309
+ DiffType* starts = sd.starts.data();
310
+
311
+ DiffType chunk_length = n / num_threads, split = n % num_threads, start = 0;
312
+ for (size_t i = 0; i < num_threads; i++)
313
+ {
314
+ starts[i] = start;
315
+ start += (i < static_cast<size_t>(split)) ? (chunk_length + 1) :
316
+ chunk_length;
317
+ }
318
+ starts[num_threads] = start;
319
+
320
+ // now sort in parallel
321
+
322
+ ThreadBarrierMutex barrier(num_threads);
323
+
324
+ #if defined(_OPENMP)
325
+ #pragma omp parallel num_threads(num_threads)
326
+ {
327
+ size_t iam = omp_get_thread_num();
328
+ parallel_sort_mwms_pu<Stable>(&sd, iam, num_threads, barrier, comp,
329
+ mwmsa);
330
+ }
331
+ #else
332
+ simple_vector<std::thread> threads(num_threads);
333
+ for (size_t iam = 0; iam < num_threads; ++iam)
334
+ {
335
+ threads[iam] = std::thread([&, iam]() {
336
+ parallel_sort_mwms_pu<Stable>(&sd, iam, num_threads, barrier, comp,
337
+ mwmsa);
338
+ });
339
+ }
340
+ for (size_t i = 0; i < num_threads; i++)
341
+ {
342
+ threads[i].join();
343
+ }
344
+ #endif // defined(_OPENMP)
345
+ }
346
+
347
+ /*!
348
+ * Parallel multiway mergesort.
349
+ *
350
+ * \param begin Begin iterator of sequence.
351
+ * \param end End iterator of sequence.
352
+ * \param comp Comparator.
353
+ * \param num_threads Number of threads to use.
354
+ * \param mwmsa MultiwayMergeSplittingAlgorithm to use.
355
+ */
356
+ template <typename RandomAccessIterator,
357
+ typename Comparator = std::less<
358
+ typename std::iterator_traits<RandomAccessIterator>::value_type> >
359
+ void parallel_mergesort(
360
+ RandomAccessIterator begin, RandomAccessIterator end,
361
+ Comparator comp = Comparator(),
362
+ size_t num_threads = std::thread::hardware_concurrency(),
363
+ MultiwayMergeSplittingAlgorithm mwmsa = MWMSA_DEFAULT)
364
+ {
365
+ return parallel_mergesort_base</* Stable */ false>(begin, end, comp,
366
+ num_threads, mwmsa);
367
+ }
368
+
369
+ /*!
370
+ * Stable parallel multiway mergesort.
371
+ *
372
+ * \param begin Begin iterator of sequence.
373
+ * \param end End iterator of sequence.
374
+ * \param comp Comparator.
375
+ * \param num_threads Number of threads to use.
376
+ * \param mwmsa MultiwayMergeSplittingAlgorithm to use.
377
+ */
378
+ template <typename RandomAccessIterator,
379
+ typename Comparator = std::less<
380
+ typename std::iterator_traits<RandomAccessIterator>::value_type> >
381
+ void stable_parallel_mergesort(
382
+ RandomAccessIterator begin, RandomAccessIterator end,
383
+ Comparator comp = Comparator(),
384
+ size_t num_threads = std::thread::hardware_concurrency(),
385
+ MultiwayMergeSplittingAlgorithm mwmsa = MWMSA_DEFAULT)
386
+ {
387
+ return parallel_mergesort_base</* Stable */ true>(begin, end, comp,
388
+ num_threads, mwmsa);
389
+ }
390
+
391
+ //! \}
392
+ //! \}
393
+
394
+ } // namespace tlx
395
+
396
+ #endif // !TLX_SORT_PARALLEL_MERGESORT_HEADER
397
+
398
+ /******************************************************************************/
@@ -0,0 +1,232 @@
1
+ /*******************************************************************************
2
+ * tlx/sort/strings/insertion_sort.hpp
3
+ *
4
+ * Base insertion string sort. This is an internal implementation header, see
5
+ * tlx/sort/strings.hpp for public front-end functions.
6
+ *
7
+ * Part of tlx - http://panthema.net/tlx
8
+ *
9
+ * Copyright (C) 2015-2019 Timo Bingmann <tb@panthema.net>
10
+ *
11
+ * All rights reserved. Published under the Boost Software License, Version 1.0
12
+ ******************************************************************************/
13
+
14
+ #ifndef TLX_SORT_STRINGS_INSERTION_SORT_HEADER
15
+ #define TLX_SORT_STRINGS_INSERTION_SORT_HEADER
16
+
17
+ #include <tlx/define/likely.hpp>
18
+ #include <tlx/meta/enable_if.hpp>
19
+ #include <tlx/sort/strings/string_ptr.hpp>
20
+
21
+ namespace tlx {
22
+
23
+ //! \addtogroup tlx_sort
24
+ //! \{
25
+
26
+ namespace sort_strings_detail {
27
+
28
+ /******************************************************************************/
29
+
30
+ //! Generic insertion sort for abstract string sets. This method only requires
31
+ //! O(1) additional memory for sorting n strings, but runs in time O(nD).
32
+ template <typename StringPtr>
33
+ static inline typename enable_if<!StringPtr::with_lcp, void>::type
34
+ insertion_sort(const StringPtr& strptr, size_t depth, size_t /* memory */)
35
+ {
36
+ typedef typename StringPtr::StringSet StringSet;
37
+ typedef typename StringSet::Iterator Iterator;
38
+ typedef typename StringSet::String String;
39
+ typedef typename StringSet::CharIterator CharIterator;
40
+
41
+ // this stores the begin iterator and size n, making the loops faster
42
+ const typename StringPtr::StringSet& ss = strptr.active();
43
+ size_t n = ss.size();
44
+ if (n <= 1)
45
+ return;
46
+
47
+ const Iterator begin = ss.begin();
48
+ Iterator j;
49
+
50
+ for (Iterator i = begin + 1; TLX_UNLIKELY(--n != 0); ++i)
51
+ {
52
+ String tmp = std::move(ss[i]);
53
+ j = i;
54
+
55
+ while (TLX_LIKELY(j != begin))
56
+ {
57
+ CharIterator s = ss.get_chars(ss[j - 1], depth);
58
+ CharIterator t = ss.get_chars(tmp, depth);
59
+
60
+ while (TLX_LIKELY(ss.is_equal(ss[j - 1], s, tmp, t)))
61
+ ++s, ++t;
62
+
63
+ if (TLX_UNLIKELY(ss.is_leq(ss[j - 1], s, tmp, t)))
64
+ break;
65
+
66
+ ss[j] = std::move(ss[j - 1]);
67
+ --j;
68
+ }
69
+
70
+ ss[j] = std::move(tmp);
71
+ }
72
+ }
73
+
74
+ /******************************************************************************/
75
+
76
+ //! LCP insertion sort for abstract string sets. Enabled via SFINAE if
77
+ //! StringPtr::with_lcp is true. This method only requires O(1) additional
78
+ //! memory for sorting n strings, and runs in time O(n^2 + D).
79
+ template <typename StringPtr>
80
+ static inline typename enable_if<StringPtr::with_lcp, void>::type
81
+ insertion_sort(const StringPtr& strptr, size_t depth, size_t /* memory */)
82
+ {
83
+ typedef typename StringPtr::StringSet StringSet;
84
+ typedef typename StringPtr::LcpType LcpType;
85
+ typedef typename StringSet::Iterator Iterator;
86
+ typedef typename StringSet::String String;
87
+ typedef typename StringSet::CharIterator CharIterator;
88
+
89
+ // this stores the begin iterator and size n, making the loops faster
90
+ const StringSet& ss = strptr.active();
91
+ size_t n = ss.size();
92
+ if (n <= 1)
93
+ return;
94
+
95
+ const Iterator begin = ss.begin();
96
+
97
+ for (size_t j = 0; j < n - 1; ++j)
98
+ {
99
+ // insert strings[j] into sorted strings[0..j-1]
100
+
101
+ String new_str = std::move(ss[begin + j]);
102
+ LcpType new_lcp = depth; // start with LCP depth
103
+
104
+ size_t i = j;
105
+ while (i > 0)
106
+ {
107
+ LcpType prev_lcp = new_lcp;
108
+
109
+ String cur_str = std::move(ss[begin + i - 1]);
110
+ LcpType cur_lcp = strptr.get_lcp(i);
111
+
112
+ if (cur_lcp < new_lcp)
113
+ {
114
+ // CASE 1: lcp goes down -> insert string
115
+
116
+ // move comparison string back
117
+ ss[begin + i - 1] = std::move(cur_str);
118
+ break;
119
+ }
120
+
121
+ if (cur_lcp == new_lcp)
122
+ {
123
+ // CASE 2: compare more characters
124
+
125
+ CharIterator c1 = ss.get_chars(new_str, new_lcp);
126
+ CharIterator c2 = ss.get_chars(cur_str, new_lcp);
127
+
128
+ while (ss.is_equal(new_str, c1, cur_str, c2))
129
+ ++c1, ++c2, ++new_lcp;
130
+
131
+ // if (new_str >= curr_str) -> insert string
132
+ if (!ss.is_less(new_str, c1, cur_str, c2))
133
+ {
134
+ // update lcp of prev (smaller string) with inserted string
135
+ strptr.set_lcp(i, new_lcp);
136
+ // lcp of inserted string with next string
137
+ new_lcp = prev_lcp;
138
+
139
+ // move comparison string back
140
+ ss[begin + i - 1] = std::move(cur_str);
141
+ break;
142
+ }
143
+ }
144
+ // else (cur_lcp > new_lcp), CASE 3: nothing to do
145
+
146
+ ss[begin + i] = std::move(cur_str);
147
+ strptr.set_lcp(i + 1, cur_lcp);
148
+
149
+ --i;
150
+ }
151
+
152
+ ss[begin + i] = std::move(new_str);
153
+ strptr.set_lcp(i + 1, new_lcp);
154
+ }
155
+
156
+ // last loop specialized with checks for out-of-bound access to lcp.
157
+ {
158
+ size_t j = n - 1;
159
+
160
+ // insert strings[j] into sorted strings[0..j-1]
161
+
162
+ String new_str = std::move(ss[begin + j]);
163
+ LcpType new_lcp = depth; // start with LCP depth
164
+
165
+ size_t i = j;
166
+ while (i > 0)
167
+ {
168
+ LcpType prev_lcp = new_lcp;
169
+
170
+ String cur_str = std::move(ss[begin + i - 1]);
171
+ LcpType cur_lcp = strptr.get_lcp(i);
172
+
173
+ if (cur_lcp < new_lcp)
174
+ {
175
+ // CASE 1: lcp goes down -> insert string
176
+
177
+ // move comparison string back
178
+ ss[begin + i - 1] = std::move(cur_str);
179
+ break;
180
+ }
181
+
182
+ if (cur_lcp == new_lcp)
183
+ {
184
+ // CASE 2: compare more characters
185
+
186
+ CharIterator c1 = ss.get_chars(new_str, new_lcp);
187
+ CharIterator c2 = ss.get_chars(cur_str, new_lcp);
188
+
189
+ while (ss.is_equal(new_str, c1, cur_str, c2))
190
+ ++c1, ++c2, ++new_lcp;
191
+
192
+ // if (new_str >= curr_str) -> insert string
193
+ if (!ss.is_less(new_str, c1, cur_str, c2))
194
+ {
195
+ // update lcp of prev (smaller string) with inserted string
196
+ strptr.set_lcp(i, new_lcp);
197
+ // lcp of inserted string with next string
198
+ new_lcp = prev_lcp;
199
+
200
+ // move comparison string back
201
+ ss[begin + i - 1] = std::move(cur_str);
202
+ break;
203
+ }
204
+ }
205
+ // else (cur_lcp > new_lcp), CASE 3: nothing to do
206
+
207
+ ss[begin + i] = std::move(cur_str);
208
+ if (i + 1 < n) // check out-of-bounds copy
209
+ strptr.set_lcp(i + 1, cur_lcp);
210
+
211
+ --i;
212
+ }
213
+
214
+ ss[begin + i] = std::move(new_str);
215
+ if (i + 1 < n)
216
+ { // check out-of-bounds save
217
+ strptr.set_lcp(i + 1, new_lcp);
218
+ }
219
+ }
220
+ }
221
+
222
+ /******************************************************************************/
223
+
224
+ } // namespace sort_strings_detail
225
+
226
+ //! \}
227
+
228
+ } // namespace tlx
229
+
230
+ #endif // !TLX_SORT_STRINGS_INSERTION_SORT_HEADER
231
+
232
+ /******************************************************************************/