@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,55 @@
1
+ /*******************************************************************************
2
+ * tlx/meta.hpp
3
+ *
4
+ * Part of tlx - http://panthema.net/tlx
5
+ *
6
+ * Copyright (C) 2017 Timo Bingmann <tb@panthema.net>
7
+ *
8
+ * All rights reserved. Published under the Boost Software License, Version 1.0
9
+ ******************************************************************************/
10
+
11
+ #ifndef TLX_META_HEADER
12
+ #define TLX_META_HEADER
13
+
14
+ //! \defgroup tlx_meta Meta-Template Programming
15
+ //! Tools for easier meta-template programming
16
+
17
+ /*[[[perl
18
+ foreach (sort glob("tlx/meta/"."*.hpp")) {
19
+ print "#include <$_> // NOLINT(misc-include-cleaner)\n"
20
+ }
21
+ ]]]*/
22
+ #include <tlx/meta/apply_tuple.hpp> // NOLINT(misc-include-cleaner)
23
+ #include <tlx/meta/call_for_range.hpp> // NOLINT(misc-include-cleaner)
24
+ #include <tlx/meta/call_foreach.hpp> // NOLINT(misc-include-cleaner)
25
+ #include <tlx/meta/call_foreach_tuple.hpp> // NOLINT(misc-include-cleaner)
26
+ #include <tlx/meta/call_foreach_tuple_with_index.hpp> // NOLINT(misc-include-cleaner)
27
+ #include <tlx/meta/call_foreach_with_index.hpp> // NOLINT(misc-include-cleaner)
28
+ #include <tlx/meta/enable_if.hpp> // NOLINT(misc-include-cleaner)
29
+ #include <tlx/meta/fold_left.hpp> // NOLINT(misc-include-cleaner)
30
+ #include <tlx/meta/fold_left_tuple.hpp> // NOLINT(misc-include-cleaner)
31
+ #include <tlx/meta/fold_right.hpp> // NOLINT(misc-include-cleaner)
32
+ #include <tlx/meta/fold_right_tuple.hpp> // NOLINT(misc-include-cleaner)
33
+ #include <tlx/meta/function_chain.hpp> // NOLINT(misc-include-cleaner)
34
+ #include <tlx/meta/function_stack.hpp> // NOLINT(misc-include-cleaner)
35
+ #include <tlx/meta/has_member.hpp> // NOLINT(misc-include-cleaner)
36
+ #include <tlx/meta/has_method.hpp> // NOLINT(misc-include-cleaner)
37
+ #include <tlx/meta/index_sequence.hpp> // NOLINT(misc-include-cleaner)
38
+ #include <tlx/meta/is_std_array.hpp> // NOLINT(misc-include-cleaner)
39
+ #include <tlx/meta/is_std_pair.hpp> // NOLINT(misc-include-cleaner)
40
+ #include <tlx/meta/is_std_tuple.hpp> // NOLINT(misc-include-cleaner)
41
+ #include <tlx/meta/is_std_vector.hpp> // NOLINT(misc-include-cleaner)
42
+ #include <tlx/meta/log2.hpp> // NOLINT(misc-include-cleaner)
43
+ #include <tlx/meta/no_operation.hpp> // NOLINT(misc-include-cleaner)
44
+ #include <tlx/meta/static_index.hpp> // NOLINT(misc-include-cleaner)
45
+ #include <tlx/meta/vexpand.hpp> // NOLINT(misc-include-cleaner)
46
+ #include <tlx/meta/vmap_for_range.hpp> // NOLINT(misc-include-cleaner)
47
+ #include <tlx/meta/vmap_foreach.hpp> // NOLINT(misc-include-cleaner)
48
+ #include <tlx/meta/vmap_foreach_tuple.hpp> // NOLINT(misc-include-cleaner)
49
+ #include <tlx/meta/vmap_foreach_tuple_with_index.hpp> // NOLINT(misc-include-cleaner)
50
+ #include <tlx/meta/vmap_foreach_with_index.hpp> // NOLINT(misc-include-cleaner)
51
+ // [[[end]]]
52
+
53
+ #endif // !TLX_META_HEADER
54
+
55
+ /******************************************************************************/
@@ -0,0 +1,148 @@
1
+ /*******************************************************************************
2
+ * tlx/multi_timer.hpp
3
+ *
4
+ * Part of tlx - http://panthema.net/tlx
5
+ *
6
+ * Copyright (C) 2018-2019 Timo Bingmann <tb@panthema.net>
7
+ *
8
+ * All rights reserved. Published under the Boost Software License, Version 1.0
9
+ ******************************************************************************/
10
+
11
+ #ifndef TLX_MULTI_TIMER_HEADER
12
+ #define TLX_MULTI_TIMER_HEADER
13
+
14
+ #include <chrono>
15
+ #include <cstdint>
16
+ #include <ostream>
17
+ #include <vector>
18
+
19
+ namespace tlx {
20
+
21
+ /*!
22
+ * MultiTimer can be used to measure time usage of different phases in a program
23
+ * or algorithm. It contains multiple named "timers", which can be activated
24
+ * without prior definition. At most one timer is start at any time, which
25
+ * means `start()` will stop any current timer and start a new one.
26
+ *
27
+ * Timers are identified by strings, which are passed as const char*, which MUST
28
+ * remain valid for the lifetime of the MultiTimer. Dynamic strings will not
29
+ * work, the standard way is to use plain string literals. The strings are hash
30
+ * for faster searches.
31
+ *
32
+ * MultiTimer can also be used for multi-threading parallel programs. Each
33
+ * thread must create and keep its own MultiTimer instance, which can then be
34
+ * added together into a global MultiTimer object. The add() method of the
35
+ * global object is internally thread-safe using a global mutex.
36
+ */
37
+ class MultiTimer
38
+ {
39
+ public:
40
+ //! constructor
41
+ MultiTimer();
42
+
43
+ //! default copy-constructor
44
+ MultiTimer(const MultiTimer&);
45
+ //! default assignment operator
46
+ MultiTimer& operator=(const MultiTimer&);
47
+ //! move-constructor: default
48
+ MultiTimer(MultiTimer&&) noexcept;
49
+ //! move-assignment operator: default
50
+ MultiTimer& operator=(MultiTimer&&) noexcept;
51
+
52
+ //! destructor
53
+ ~MultiTimer();
54
+
55
+ //! start new timer phase, stop the currently running one.
56
+ void start(const char* timer);
57
+
58
+ //! stop the currently running timer.
59
+ void stop();
60
+
61
+ //! zero timers.
62
+ void reset();
63
+
64
+ //! return name of currently running timer.
65
+ const char* running() const;
66
+
67
+ //! return timer duration in seconds of timer.
68
+ double get(const char* timer);
69
+ //! return total duration of all timers.
70
+ double total() const;
71
+
72
+ //! print all timers as a TIMER line to os
73
+ void print(const char* info, std::ostream& os) const;
74
+ //! print all timers as a TIMER line to stderr
75
+ void print(const char* info) const;
76
+
77
+ //! add all timers from another, internally holds a global mutex lock,
78
+ //! because this is used to add thread values
79
+ MultiTimer& add(const MultiTimer& b);
80
+
81
+ //! add all timers from another, internally holds a global mutex lock,
82
+ //! because this is used to add thread values
83
+ MultiTimer& operator+=(const MultiTimer& b);
84
+
85
+ private:
86
+ //! timer entry
87
+ struct Entry;
88
+
89
+ //! array of timers
90
+ std::vector<Entry> timers_;
91
+
92
+ //! total duration
93
+ std::chrono::duration<double> total_duration_;
94
+
95
+ //! currently running timer name
96
+ const char* running_ = nullptr;
97
+ //! hash of running_
98
+ std::uint32_t running_hash_ = 0;
99
+ //! start of currently running timer name
100
+ std::chrono::time_point<std::chrono::high_resolution_clock> time_point_;
101
+
102
+ //! internal methods to find or create new timer entries
103
+ Entry& find_or_create(const char* name);
104
+ };
105
+
106
+ //! RAII Scoped MultiTimer switcher: switches the timer of a MultiTimer on
107
+ //! construction and back to old one on destruction.
108
+ class ScopedMultiTimerSwitch
109
+ {
110
+ public:
111
+ //! construct and timer to switch to
112
+ ScopedMultiTimerSwitch(MultiTimer& timer, const char* new_timer);
113
+
114
+ //! change back timer to previous timer.
115
+ ~ScopedMultiTimerSwitch();
116
+
117
+ private:
118
+ //! reference to MultiTimer
119
+ MultiTimer& timer_;
120
+
121
+ //! previous timer, used to switch back to on destruction
122
+ const char* previous_;
123
+ };
124
+
125
+ //! Independent RAII Scoped MultiTimer: contains a MultiTimer which is started
126
+ //! with the given timer, and added to the base MultiTimer on destruction.
127
+ class ScopedMultiTimer
128
+ {
129
+ public:
130
+ //! construct and change timer to tm
131
+ ScopedMultiTimer(MultiTimer& base, const char* timer);
132
+
133
+ //! change back timer to previous timer.
134
+ ~ScopedMultiTimer();
135
+
136
+ private:
137
+ //! reference to base timer
138
+ MultiTimer& base_;
139
+
140
+ //! contained independent timer
141
+ MultiTimer timer_;
142
+ };
143
+
144
+ } // namespace tlx
145
+
146
+ #endif // !TLX_MULTI_TIMER_HEADER
147
+
148
+ /******************************************************************************/
@@ -0,0 +1,31 @@
1
+ /*******************************************************************************
2
+ * tlx/port/setenv.hpp
3
+ *
4
+ * Part of tlx - http://panthema.net/tlx
5
+ *
6
+ * Copyright (C) 2016-2018 Timo Bingmann <tb@panthema.net>
7
+ *
8
+ * All rights reserved. Published under the Boost Software License, Version 1.0
9
+ ******************************************************************************/
10
+
11
+ #ifndef TLX_PORT_SETENV_HEADER
12
+ #define TLX_PORT_SETENV_HEADER
13
+
14
+ namespace tlx {
15
+
16
+ //! \addtogroup tlx_port
17
+ //! \{
18
+
19
+ /*!
20
+ * setenv - change or add an environment variable.
21
+ * Windows porting madness because setenv() is apparently dangerous.
22
+ */
23
+ int setenv(const char* name, const char* value, int overwrite);
24
+
25
+ //! \}
26
+
27
+ } // namespace tlx
28
+
29
+ #endif // !TLX_PORT_SETENV_HEADER
30
+
31
+ /******************************************************************************/
@@ -0,0 +1,27 @@
1
+ /*******************************************************************************
2
+ * tlx/port.hpp
3
+ *
4
+ * Part of tlx - http://panthema.net/tlx
5
+ *
6
+ * Copyright (C) 2017 Timo Bingmann <tb@panthema.net>
7
+ *
8
+ * All rights reserved. Published under the Boost Software License, Version 1.0
9
+ ******************************************************************************/
10
+
11
+ #ifndef TLX_PORT_HEADER
12
+ #define TLX_PORT_HEADER
13
+
14
+ //! \defgroup tlx_port Helpers for Portable Code
15
+ //! Tools to enable easier writing of portable code.
16
+
17
+ /*[[[perl
18
+ foreach (sort glob("tlx/port/"."*.hpp")) {
19
+ print "#include <$_> // NOLINT(misc-include-cleaner)\n";
20
+ }
21
+ ]]]*/
22
+ #include <tlx/port/setenv.hpp> // NOLINT(misc-include-cleaner)
23
+ // [[[end]]]
24
+
25
+ #endif // !TLX_PORT_HEADER
26
+
27
+ /******************************************************************************/
@@ -0,0 +1,119 @@
1
+ /*******************************************************************************
2
+ * tlx/semaphore.hpp
3
+ *
4
+ * A simple semaphore implementation using C++11 synchronization methods.
5
+ *
6
+ * Copied and modified from STXXL https://github.com/stxxl/stxxl, which is
7
+ * distributed under the Boost Software License, Version 1.0.
8
+ *
9
+ * Part of tlx - http://panthema.net/tlx
10
+ *
11
+ * Copyright (C) 2002 Roman Dementiev <dementiev@mpi-sb.mpg.de>
12
+ * Copyright (C) 2013-2018 Timo Bingmann <tb@panthema.net>
13
+ *
14
+ * All rights reserved. Published under the Boost Software License, Version 1.0
15
+ ******************************************************************************/
16
+
17
+ #ifndef TLX_SEMAPHORE_HEADER
18
+ #define TLX_SEMAPHORE_HEADER
19
+
20
+ #include <condition_variable>
21
+ #include <cstddef>
22
+ #include <mutex>
23
+
24
+ namespace tlx {
25
+
26
+ //! A simple semaphore implementation using C++11 synchronization methods.
27
+ class Semaphore
28
+ {
29
+ public:
30
+ //! construct semaphore
31
+ explicit Semaphore(size_t initial_value = 0) : value_(initial_value)
32
+ {
33
+ }
34
+
35
+ //! non-copyable: delete copy-constructor
36
+ Semaphore(const Semaphore&) = delete;
37
+ //! non-copyable: delete assignment operator
38
+ Semaphore& operator=(const Semaphore&) = delete;
39
+
40
+ //! move-constructor: just move the value
41
+ Semaphore(Semaphore&& s) noexcept : value_(s.value_)
42
+ {
43
+ }
44
+
45
+ //! move-assignment: just move the value
46
+ Semaphore& operator=(Semaphore&& s) noexcept
47
+ {
48
+ value_ = s.value_;
49
+ return *this;
50
+ }
51
+
52
+ //! function increments the semaphore and signals any threads that are
53
+ //! blocked waiting a change in the semaphore
54
+ size_t signal()
55
+ {
56
+ std::unique_lock<std::mutex> lock(mutex_);
57
+ size_t res = ++value_;
58
+ cv_.notify_one();
59
+ return res;
60
+ }
61
+
62
+ //! function increments the semaphore and signals any threads that are
63
+ //! blocked waiting a change in the semaphore
64
+ size_t signal(size_t delta)
65
+ {
66
+ std::unique_lock<std::mutex> lock(mutex_);
67
+ size_t res = (value_ += delta);
68
+ cv_.notify_all();
69
+ return res;
70
+ }
71
+
72
+ //! function decrements the semaphore by delta and blocks if the semaphore
73
+ //! is < (delta + slack) until another thread signals a change
74
+ size_t wait(size_t delta = 1, size_t slack = 0)
75
+ {
76
+ std::unique_lock<std::mutex> lock(mutex_);
77
+ while (value_ < delta + slack)
78
+ cv_.wait(lock);
79
+ value_ -= delta;
80
+ return value_;
81
+ }
82
+
83
+ //! function decrements the semaphore by delta if (delta + slack) tokens are
84
+ //! available as a batch. the function will not block and returns true if
85
+ //! delta was acquired otherwise false.
86
+ bool try_acquire(size_t delta = 1, size_t slack = 0)
87
+ {
88
+ std::unique_lock<std::mutex> lock(mutex_);
89
+ if (value_ < delta + slack)
90
+ return false;
91
+ value_ -= delta;
92
+ return true;
93
+ }
94
+
95
+ //! return the current value -- should only be used for debugging.
96
+ size_t value() const
97
+ {
98
+ return value_;
99
+ }
100
+
101
+ private:
102
+ //! value of the semaphore
103
+ size_t value_;
104
+
105
+ //! mutex for condition variable
106
+ std::mutex mutex_;
107
+
108
+ //! condition variable
109
+ std::condition_variable cv_;
110
+ };
111
+
112
+ //! alias for STL-like code style
113
+ using semaphore = Semaphore;
114
+
115
+ } // namespace tlx
116
+
117
+ #endif // !TLX_SEMAPHORE_HEADER
118
+
119
+ /******************************************************************************/
@@ -0,0 +1,20 @@
1
+ /*******************************************************************************
2
+ * tlx/simple_vector.hpp
3
+ *
4
+ * Alias for <tlx/container/simple_vector.hpp>
5
+ *
6
+ * Part of tlx - http://panthema.net/tlx
7
+ *
8
+ * Copyright (C) 2018 Timo Bingmann <tb@panthema.net>
9
+ *
10
+ * All rights reserved. Published under the Boost Software License, Version 1.0
11
+ ******************************************************************************/
12
+
13
+ #ifndef TLX_SIMPLE_VECTOR_HEADER
14
+ #define TLX_SIMPLE_VECTOR_HEADER
15
+
16
+ #include <tlx/container/simple_vector.hpp> // NOLINT(misc-include-cleaner)
17
+
18
+ #endif // !TLX_SIMPLE_VECTOR_HEADER
19
+
20
+ /******************************************************************************/
@@ -0,0 +1,282 @@
1
+ /*******************************************************************************
2
+ * tlx/siphash.hpp
3
+ *
4
+ * SipHash Implementations borrowed under Public Domain license from
5
+ * https://github.com/floodyberry/siphash
6
+ *
7
+ * Part of tlx - http://panthema.net/tlx
8
+ *
9
+ * Copyright (C) 2017-2024 Timo Bingmann <tb@panthema.net>
10
+ *
11
+ * All rights reserved. Published under the Boost Software License, Version 1.0
12
+ ******************************************************************************/
13
+
14
+ #ifndef TLX_SIPHASH_HEADER
15
+ #define TLX_SIPHASH_HEADER
16
+
17
+ #include <tlx/container/string_view.hpp>
18
+ #include <tlx/define/attribute_fallthrough.hpp>
19
+ #include <tlx/math/bswap_le.hpp>
20
+ #include <tlx/math/rol.hpp>
21
+ #include <cstdint>
22
+ #include <cstdlib>
23
+
24
+ #if defined(_MSC_VER)
25
+
26
+ #include <intrin.h>
27
+
28
+ #if (_MSC_VER > 1200) || defined(_mm_free)
29
+ #define __SSE2__
30
+ #endif
31
+
32
+ #endif // !defined(_MSC_VER)
33
+
34
+ #if defined(__SSE2__)
35
+ #include <emmintrin.h>
36
+ #include <xmmintrin.h>
37
+ #endif
38
+
39
+ namespace tlx {
40
+
41
+ static inline std::uint64_t siphash_plain(const std::uint8_t key[16],
42
+ const std::uint8_t* m, size_t len)
43
+ {
44
+ std::uint64_t v0, v1, v2, v3;
45
+ std::uint64_t mi, k0, k1;
46
+ std::uint64_t last7;
47
+ size_t i, blocks;
48
+
49
+ k0 = bswap64_le(*reinterpret_cast<const std::uint64_t*>(key + 0));
50
+ k1 = bswap64_le(*reinterpret_cast<const std::uint64_t*>(key + 8));
51
+ v0 = k0 ^ 0x736f6d6570736575ULL;
52
+ v1 = k1 ^ 0x646f72616e646f6dULL;
53
+ v2 = k0 ^ 0x6c7967656e657261ULL;
54
+ v3 = k1 ^ 0x7465646279746573ULL;
55
+
56
+ last7 = static_cast<std::uint64_t>(len & 0xff) << 56;
57
+
58
+ #define TLX_SIPCOMPRESS() \
59
+ v0 += v1; \
60
+ v2 += v3; \
61
+ v1 = rol64(v1, 13); \
62
+ v3 = rol64(v3, 16); \
63
+ v1 ^= v0; \
64
+ v3 ^= v2; \
65
+ v0 = rol64(v0, 32); \
66
+ v2 += v1; \
67
+ v0 += v3; \
68
+ v1 = rol64(v1, 17); \
69
+ v3 = rol64(v3, 21); \
70
+ v1 ^= v2; \
71
+ v3 ^= v0; \
72
+ v2 = rol64(v2, 32);
73
+
74
+ for (i = 0, blocks = (len & ~7); i < blocks; i += 8)
75
+ {
76
+ mi = bswap64_le(*reinterpret_cast<const std::uint64_t*>(m + i));
77
+ v3 ^= mi;
78
+ TLX_SIPCOMPRESS();
79
+ TLX_SIPCOMPRESS();
80
+ v0 ^= mi;
81
+ }
82
+
83
+ switch (len - blocks)
84
+ {
85
+ case 7:
86
+ last7 |= static_cast<std::uint64_t>(m[i + 6]) << 48;
87
+ TLX_ATTRIBUTE_FALLTHROUGH;
88
+ case 6:
89
+ last7 |= static_cast<std::uint64_t>(m[i + 5]) << 40;
90
+ TLX_ATTRIBUTE_FALLTHROUGH;
91
+ case 5:
92
+ last7 |= static_cast<std::uint64_t>(m[i + 4]) << 32;
93
+ TLX_ATTRIBUTE_FALLTHROUGH;
94
+ case 4:
95
+ last7 |= static_cast<std::uint64_t>(m[i + 3]) << 24;
96
+ TLX_ATTRIBUTE_FALLTHROUGH;
97
+ case 3:
98
+ last7 |= static_cast<std::uint64_t>(m[i + 2]) << 16;
99
+ TLX_ATTRIBUTE_FALLTHROUGH;
100
+ case 2:
101
+ last7 |= static_cast<std::uint64_t>(m[i + 1]) << 8;
102
+ TLX_ATTRIBUTE_FALLTHROUGH;
103
+ case 1:
104
+ last7 |= static_cast<std::uint64_t>(m[i + 0]);
105
+ TLX_ATTRIBUTE_FALLTHROUGH;
106
+ case 0:
107
+ default:;
108
+ }
109
+
110
+ v3 ^= last7;
111
+ TLX_SIPCOMPRESS();
112
+ TLX_SIPCOMPRESS();
113
+ v0 ^= last7;
114
+ v2 ^= 0xff;
115
+ TLX_SIPCOMPRESS();
116
+ TLX_SIPCOMPRESS();
117
+ TLX_SIPCOMPRESS();
118
+ TLX_SIPCOMPRESS();
119
+
120
+ #undef TLX_SIPCOMPRESS
121
+
122
+ return v0 ^ v1 ^ v2 ^ v3;
123
+ }
124
+
125
+ /******************************************************************************/
126
+ // SSE2 vectorization
127
+
128
+ #if defined(__SSE2__)
129
+
130
+ union siphash_packedelem64
131
+ {
132
+ std::uint64_t u[2];
133
+ __m128i v;
134
+ };
135
+
136
+ /* 0,2,1,3 */
137
+ static const siphash_packedelem64 siphash_init[2] = {
138
+ {{0x736f6d6570736575ULL, 0x6c7967656e657261ULL}},
139
+ {{0x646f72616e646f6dULL, 0x7465646279746573ULL}}};
140
+
141
+ static const siphash_packedelem64 siphash_final = {
142
+ {0x0000000000000000ULL, 0x00000000000000ffULL}};
143
+
144
+ static inline std::uint64_t siphash_sse2(const std::uint8_t key[16],
145
+ const std::uint8_t* m, size_t len)
146
+ {
147
+ __m128i k, v02, v20, v13, v11, v33, mi;
148
+ std::uint64_t last7;
149
+ std::uint32_t lo, hi;
150
+ size_t i, blocks;
151
+
152
+ k = _mm_loadu_si128(reinterpret_cast<const __m128i*>(key + 0));
153
+ v02 = siphash_init[0].v;
154
+ v13 = siphash_init[1].v;
155
+ v02 = _mm_xor_si128(v02, _mm_unpacklo_epi64(k, k));
156
+ v13 = _mm_xor_si128(v13, _mm_unpackhi_epi64(k, k));
157
+
158
+ last7 = static_cast<std::uint64_t>(len & 0xff) << 56;
159
+
160
+ #define TLX_SIPCOMPRESS() \
161
+ v11 = v13; \
162
+ v33 = _mm_shuffle_epi32(v13, _MM_SHUFFLE(1, 0, 3, 2)); \
163
+ v11 = _mm_or_si128(_mm_slli_epi64(v11, 13), _mm_srli_epi64(v11, 64 - 13)); \
164
+ v02 = _mm_add_epi64(v02, v13); \
165
+ v33 = _mm_shufflelo_epi16(v33, _MM_SHUFFLE(2, 1, 0, 3)); \
166
+ v13 = _mm_unpacklo_epi64(v11, v33); \
167
+ v13 = _mm_xor_si128(v13, v02); \
168
+ v20 = _mm_shuffle_epi32(v02, _MM_SHUFFLE(0, 1, 3, 2)); \
169
+ v11 = v13; \
170
+ v33 = _mm_shuffle_epi32(v13, _MM_SHUFFLE(1, 0, 3, 2)); \
171
+ v11 = _mm_or_si128(_mm_slli_epi64(v11, 17), _mm_srli_epi64(v11, 64 - 17)); \
172
+ v20 = _mm_add_epi64(v20, v13); \
173
+ v33 = _mm_or_si128(_mm_slli_epi64(v33, 21), _mm_srli_epi64(v33, 64 - 21)); \
174
+ v13 = _mm_unpacklo_epi64(v11, v33); \
175
+ v02 = _mm_shuffle_epi32(v20, _MM_SHUFFLE(0, 1, 3, 2)); \
176
+ v13 = _mm_xor_si128(v13, v20);
177
+
178
+ for (i = 0, blocks = (len & ~7); i < blocks; i += 8)
179
+ {
180
+ mi = _mm_loadl_epi64(reinterpret_cast<const __m128i*>(m + i));
181
+ v13 = _mm_xor_si128(v13, _mm_slli_si128(mi, 8));
182
+ TLX_SIPCOMPRESS();
183
+ TLX_SIPCOMPRESS();
184
+ v02 = _mm_xor_si128(v02, mi);
185
+ }
186
+
187
+ switch (len - blocks)
188
+ {
189
+ case 7:
190
+ last7 |= static_cast<std::uint64_t>(m[i + 6]) << 48;
191
+ TLX_ATTRIBUTE_FALLTHROUGH;
192
+ case 6:
193
+ last7 |= static_cast<std::uint64_t>(m[i + 5]) << 40;
194
+ TLX_ATTRIBUTE_FALLTHROUGH;
195
+ case 5:
196
+ last7 |= static_cast<std::uint64_t>(m[i + 4]) << 32;
197
+ TLX_ATTRIBUTE_FALLTHROUGH;
198
+ case 4:
199
+ last7 |= static_cast<std::uint64_t>(m[i + 3]) << 24;
200
+ TLX_ATTRIBUTE_FALLTHROUGH;
201
+ case 3:
202
+ last7 |= static_cast<std::uint64_t>(m[i + 2]) << 16;
203
+ TLX_ATTRIBUTE_FALLTHROUGH;
204
+ case 2:
205
+ last7 |= static_cast<std::uint64_t>(m[i + 1]) << 8;
206
+ TLX_ATTRIBUTE_FALLTHROUGH;
207
+ case 1:
208
+ last7 |= static_cast<std::uint64_t>(m[i + 0]);
209
+ TLX_ATTRIBUTE_FALLTHROUGH;
210
+ case 0:
211
+ default:;
212
+ }
213
+
214
+ mi = _mm_unpacklo_epi32(
215
+ _mm_cvtsi32_si128(static_cast<std::uint32_t>(last7)),
216
+ _mm_cvtsi32_si128(static_cast<std::uint32_t>(last7 >> 32)));
217
+ v13 = _mm_xor_si128(v13, _mm_slli_si128(mi, 8));
218
+ TLX_SIPCOMPRESS();
219
+ TLX_SIPCOMPRESS();
220
+ v02 = _mm_xor_si128(v02, mi);
221
+ v02 = _mm_xor_si128(v02, siphash_final.v);
222
+ TLX_SIPCOMPRESS();
223
+ TLX_SIPCOMPRESS();
224
+ TLX_SIPCOMPRESS();
225
+ TLX_SIPCOMPRESS();
226
+
227
+ v02 = _mm_xor_si128(v02, v13);
228
+ v02 = _mm_xor_si128(v02, _mm_shuffle_epi32(v02, _MM_SHUFFLE(1, 0, 3, 2)));
229
+ lo = _mm_cvtsi128_si32(v02);
230
+ hi = _mm_cvtsi128_si32(_mm_srli_si128(v02, 4));
231
+
232
+ #undef TLX_SIPCOMPRESS
233
+
234
+ return (static_cast<std::uint64_t>(hi) << 32) | lo;
235
+ }
236
+
237
+ #endif // defined(__SSE2__)
238
+
239
+ /******************************************************************************/
240
+ // Switch between available implementations
241
+
242
+ static inline std::uint64_t siphash(const std::uint8_t key[16],
243
+ const std::uint8_t* msg, size_t size)
244
+ {
245
+ #if defined(__SSE2__)
246
+ return siphash_sse2(key, msg, size);
247
+ #else
248
+ return siphash_plain(key, msg, size);
249
+ #endif
250
+ }
251
+
252
+ static inline std::uint64_t siphash(const std::uint8_t* msg, size_t size)
253
+ {
254
+ const unsigned char key[16] = {0, 1, 2, 3, 4, 5, 6, 7,
255
+ 8, 9, 10, 11, 12, 13, 14, 15};
256
+ return siphash(key, msg, size);
257
+ }
258
+
259
+ static inline std::uint64_t siphash(const char* msg, size_t size)
260
+ {
261
+ return siphash(reinterpret_cast<const std::uint8_t*>(msg), size);
262
+ }
263
+
264
+ static inline std::uint64_t siphash(tlx::string_view str)
265
+ {
266
+ return siphash(str.data(), str.size());
267
+ }
268
+
269
+ template <typename Type>
270
+ static inline std::uint64_t siphash(const Type& value)
271
+ {
272
+ return siphash(reinterpret_cast<const std::uint8_t*>(&value),
273
+ sizeof(value));
274
+ }
275
+
276
+ #undef rol64
277
+
278
+ } // namespace tlx
279
+
280
+ #endif // !TLX_SIPHASH_HEADER
281
+
282
+ /******************************************************************************/