@ladybugmem/icebug 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +32 -10
- package/lib/index.js +23 -11
- package/package.json +9 -15
- package/prebuilds/darwin-arm64/icebug.node +0 -0
- package/{vendor/lib → prebuilds/darwin-arm64}/libnetworkit.dylib +0 -0
- package/prebuilds/linux-x64/icebug.node +0 -0
- package/prebuilds/linux-x64/libnetworkit.so +0 -0
- package/scripts/download-icebug.sh +92 -0
- package/build/Release/.deps/Release/icebug.node.d +0 -1
- package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +0 -291
- package/build/Release/icebug.node +0 -0
- package/build/Release/obj.target/icebug/src/addon.o +0 -0
- package/vendor/include/networkit/GlobalState.hpp +0 -86
- package/vendor/include/networkit/Globals.hpp +0 -41
- package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +0 -27
- package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +0 -1292
- package/vendor/include/networkit/algebraic/CSRMatrix.hpp +0 -11
- package/vendor/include/networkit/algebraic/DenseMatrix.hpp +0 -537
- package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +0 -514
- package/vendor/include/networkit/algebraic/GraphBLAS.hpp +0 -323
- package/vendor/include/networkit/algebraic/MatrixTools.hpp +0 -156
- package/vendor/include/networkit/algebraic/Semirings.hpp +0 -171
- package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +0 -111
- package/vendor/include/networkit/algebraic/Vector.hpp +0 -371
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +0 -72
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +0 -88
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +0 -96
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +0 -145
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +0 -122
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +0 -76
- package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +0 -113
- package/vendor/include/networkit/auxiliary/ArrayTools.hpp +0 -85
- package/vendor/include/networkit/auxiliary/BloomFilter.hpp +0 -70
- package/vendor/include/networkit/auxiliary/BucketPQ.hpp +0 -142
- package/vendor/include/networkit/auxiliary/Enforce.hpp +0 -117
- package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +0 -74
- package/vendor/include/networkit/auxiliary/HashUtils.hpp +0 -28
- package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +0 -52
- package/vendor/include/networkit/auxiliary/Log.hpp +0 -119
- package/vendor/include/networkit/auxiliary/MissingMath.hpp +0 -48
- package/vendor/include/networkit/auxiliary/Multiprecision.hpp +0 -17
- package/vendor/include/networkit/auxiliary/NumberParsing.hpp +0 -307
- package/vendor/include/networkit/auxiliary/NumericTools.hpp +0 -57
- package/vendor/include/networkit/auxiliary/Parallel.hpp +0 -56
- package/vendor/include/networkit/auxiliary/Parallelism.hpp +0 -33
- package/vendor/include/networkit/auxiliary/PrioQueue.hpp +0 -252
- package/vendor/include/networkit/auxiliary/Random.hpp +0 -122
- package/vendor/include/networkit/auxiliary/SetIntersector.hpp +0 -72
- package/vendor/include/networkit/auxiliary/SignalHandling.hpp +0 -39
- package/vendor/include/networkit/auxiliary/SortedList.hpp +0 -128
- package/vendor/include/networkit/auxiliary/SparseVector.hpp +0 -215
- package/vendor/include/networkit/auxiliary/SpinLock.hpp +0 -23
- package/vendor/include/networkit/auxiliary/StringBuilder.hpp +0 -322
- package/vendor/include/networkit/auxiliary/StringTools.hpp +0 -76
- package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +0 -76
- package/vendor/include/networkit/auxiliary/Timer.hpp +0 -145
- package/vendor/include/networkit/auxiliary/VectorComparator.hpp +0 -32
- package/vendor/include/networkit/base/Algorithm.hpp +0 -41
- package/vendor/include/networkit/base/DynAlgorithm.hpp +0 -31
- package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +0 -62
- package/vendor/include/networkit/centrality/ApproxCloseness.hpp +0 -136
- package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +0 -156
- package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +0 -124
- package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +0 -84
- package/vendor/include/networkit/centrality/Betweenness.hpp +0 -47
- package/vendor/include/networkit/centrality/Centrality.hpp +0 -98
- package/vendor/include/networkit/centrality/Closeness.hpp +0 -107
- package/vendor/include/networkit/centrality/ComplexPaths.hpp +0 -113
- package/vendor/include/networkit/centrality/CoreDecomposition.hpp +0 -161
- package/vendor/include/networkit/centrality/DegreeCentrality.hpp +0 -55
- package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +0 -95
- package/vendor/include/networkit/centrality/DynBetweenness.hpp +0 -99
- package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +0 -98
- package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +0 -115
- package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +0 -223
- package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +0 -41
- package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +0 -51
- package/vendor/include/networkit/centrality/ForestCentrality.hpp +0 -112
- package/vendor/include/networkit/centrality/GedWalk.hpp +0 -225
- package/vendor/include/networkit/centrality/GroupCloseness.hpp +0 -115
- package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +0 -78
- package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +0 -77
- package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +0 -106
- package/vendor/include/networkit/centrality/GroupDegree.hpp +0 -155
- package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +0 -83
- package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +0 -48
- package/vendor/include/networkit/centrality/KPathCentrality.hpp +0 -52
- package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +0 -242
- package/vendor/include/networkit/centrality/KatzCentrality.hpp +0 -62
- package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +0 -44
- package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +0 -60
- package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +0 -43
- package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +0 -42
- package/vendor/include/networkit/centrality/PageRank.hpp +0 -101
- package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +0 -48
- package/vendor/include/networkit/centrality/Sfigality.hpp +0 -45
- package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +0 -86
- package/vendor/include/networkit/centrality/TopCloseness.hpp +0 -136
- package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +0 -151
- package/vendor/include/networkit/clique/MaximalCliques.hpp +0 -83
- package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +0 -59
- package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +0 -156
- package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +0 -57
- package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +0 -43
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +0 -33
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +0 -62
- package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +0 -31
- package/vendor/include/networkit/community/ClusteringGenerator.hpp +0 -75
- package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +0 -58
- package/vendor/include/networkit/community/Conductance.hpp +0 -32
- package/vendor/include/networkit/community/CoverF1Similarity.hpp +0 -53
- package/vendor/include/networkit/community/CoverHubDominance.hpp +0 -38
- package/vendor/include/networkit/community/Coverage.hpp +0 -25
- package/vendor/include/networkit/community/CutClustering.hpp +0 -62
- package/vendor/include/networkit/community/DissimilarityMeasure.hpp +0 -31
- package/vendor/include/networkit/community/DynamicNMIDistance.hpp +0 -44
- package/vendor/include/networkit/community/EdgeCut.hpp +0 -24
- package/vendor/include/networkit/community/GraphClusteringTools.hpp +0 -103
- package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +0 -28
- package/vendor/include/networkit/community/HubDominance.hpp +0 -46
- package/vendor/include/networkit/community/IntrapartitionDensity.hpp +0 -44
- package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +0 -40
- package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +0 -40
- package/vendor/include/networkit/community/JaccardMeasure.hpp +0 -25
- package/vendor/include/networkit/community/LFM.hpp +0 -49
- package/vendor/include/networkit/community/LPDegreeOrdered.hpp +0 -48
- package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +0 -100
- package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +0 -31
- package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +0 -31
- package/vendor/include/networkit/community/LouvainMapEquation.hpp +0 -135
- package/vendor/include/networkit/community/Modularity.hpp +0 -54
- package/vendor/include/networkit/community/NMIDistance.hpp +0 -28
- package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +0 -27
- package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +0 -51
- package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +0 -175
- package/vendor/include/networkit/community/PLM.hpp +0 -89
- package/vendor/include/networkit/community/PLP.hpp +0 -83
- package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +0 -37
- package/vendor/include/networkit/community/ParallelLeiden.hpp +0 -96
- package/vendor/include/networkit/community/ParallelLeidenView.hpp +0 -138
- package/vendor/include/networkit/community/PartitionFragmentation.hpp +0 -30
- package/vendor/include/networkit/community/PartitionHubDominance.hpp +0 -37
- package/vendor/include/networkit/community/PartitionIntersection.hpp +0 -25
- package/vendor/include/networkit/community/QualityMeasure.hpp +0 -27
- package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +0 -40
- package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +0 -40
- package/vendor/include/networkit/community/StablePartitionNodes.hpp +0 -48
- package/vendor/include/networkit/components/BiconnectedComponents.hpp +0 -116
- package/vendor/include/networkit/components/ComponentDecomposition.hpp +0 -72
- package/vendor/include/networkit/components/ConnectedComponents.hpp +0 -55
- package/vendor/include/networkit/components/DynConnectedComponents.hpp +0 -71
- package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +0 -73
- package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +0 -44
- package/vendor/include/networkit/components/RandomSpanningForest.hpp +0 -36
- package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +0 -50
- package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +0 -59
- package/vendor/include/networkit/correlation/Assortativity.hpp +0 -64
- package/vendor/include/networkit/distance/APSP.hpp +0 -70
- package/vendor/include/networkit/distance/AStar.hpp +0 -68
- package/vendor/include/networkit/distance/AStarGeneral.hpp +0 -110
- package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +0 -52
- package/vendor/include/networkit/distance/AffectedNodes.hpp +0 -130
- package/vendor/include/networkit/distance/AlgebraicDistance.hpp +0 -63
- package/vendor/include/networkit/distance/BFS.hpp +0 -43
- package/vendor/include/networkit/distance/BidirectionalBFS.hpp +0 -51
- package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +0 -69
- package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +0 -89
- package/vendor/include/networkit/distance/Diameter.hpp +0 -97
- package/vendor/include/networkit/distance/Dijkstra.hpp +0 -50
- package/vendor/include/networkit/distance/DynAPSP.hpp +0 -67
- package/vendor/include/networkit/distance/DynBFS.hpp +0 -56
- package/vendor/include/networkit/distance/DynDijkstra.hpp +0 -57
- package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +0 -67
- package/vendor/include/networkit/distance/DynSSSP.hpp +0 -87
- package/vendor/include/networkit/distance/Eccentricity.hpp +0 -32
- package/vendor/include/networkit/distance/EffectiveDiameter.hpp +0 -47
- package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +0 -57
- package/vendor/include/networkit/distance/FloydWarshall.hpp +0 -93
- package/vendor/include/networkit/distance/GraphDistance.hpp +0 -49
- package/vendor/include/networkit/distance/HopPlotApproximation.hpp +0 -62
- package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +0 -66
- package/vendor/include/networkit/distance/IncompleteSSSP.hpp +0 -41
- package/vendor/include/networkit/distance/JaccardDistance.hpp +0 -57
- package/vendor/include/networkit/distance/MultiTargetBFS.hpp +0 -32
- package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +0 -40
- package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +0 -47
- package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +0 -56
- package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +0 -56
- package/vendor/include/networkit/distance/NodeDistance.hpp +0 -54
- package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +0 -76
- package/vendor/include/networkit/distance/ReverseBFS.hpp +0 -46
- package/vendor/include/networkit/distance/SPSP.hpp +0 -143
- package/vendor/include/networkit/distance/SSSP.hpp +0 -216
- package/vendor/include/networkit/distance/STSP.hpp +0 -193
- package/vendor/include/networkit/distance/Volume.hpp +0 -66
- package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +0 -40
- package/vendor/include/networkit/dynamics/DGSWriter.hpp +0 -30
- package/vendor/include/networkit/dynamics/GraphDifference.hpp +0 -110
- package/vendor/include/networkit/dynamics/GraphEvent.hpp +0 -55
- package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +0 -39
- package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +0 -55
- package/vendor/include/networkit/dynamics/GraphUpdater.hpp +0 -38
- package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +0 -26
- package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScore.hpp +0 -50
- package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +0 -32
- package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +0 -35
- package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +0 -29
- package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +0 -23
- package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +0 -39
- package/vendor/include/networkit/embedding/Node2Vec.hpp +0 -83
- package/vendor/include/networkit/flow/EdmondsKarp.hpp +0 -112
- package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +0 -87
- package/vendor/include/networkit/generators/ChungLuGenerator.hpp +0 -46
- package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +0 -63
- package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +0 -56
- package/vendor/include/networkit/generators/ConfigurationModel.hpp +0 -36
- package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +0 -33
- package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +0 -33
- package/vendor/include/networkit/generators/DynamicDGSParser.hpp +0 -51
- package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +0 -34
- package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +0 -55
- package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +0 -40
- package/vendor/include/networkit/generators/DynamicGraphSource.hpp +0 -79
- package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +0 -143
- package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +0 -26
- package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +0 -54
- package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +0 -65
- package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +0 -318
- package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +0 -56
- package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +0 -48
- package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +0 -236
- package/vendor/include/networkit/generators/LFRGenerator.hpp +0 -175
- package/vendor/include/networkit/generators/MocnikGenerator.hpp +0 -147
- package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +0 -58
- package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +0 -128
- package/vendor/include/networkit/generators/PubWebGenerator.hpp +0 -94
- package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +0 -37
- package/vendor/include/networkit/generators/RmatGenerator.hpp +0 -67
- package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +0 -42
- package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +0 -30
- package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +0 -41
- package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +0 -43
- package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +0 -857
- package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +0 -587
- package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +0 -726
- package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +0 -232
- package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +0 -149
- package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +0 -143
- package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +0 -248
- package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +0 -145
- package/vendor/include/networkit/global/ClusteringCoefficient.hpp +0 -42
- package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +0 -24
- package/vendor/include/networkit/graph/Attributes.hpp +0 -568
- package/vendor/include/networkit/graph/BFS.hpp +0 -111
- package/vendor/include/networkit/graph/DFS.hpp +0 -71
- package/vendor/include/networkit/graph/Dijkstra.hpp +0 -83
- package/vendor/include/networkit/graph/EdgeIterators.hpp +0 -171
- package/vendor/include/networkit/graph/Graph.hpp +0 -2083
- package/vendor/include/networkit/graph/GraphBuilder.hpp +0 -289
- package/vendor/include/networkit/graph/GraphR.hpp +0 -133
- package/vendor/include/networkit/graph/GraphTools.hpp +0 -589
- package/vendor/include/networkit/graph/GraphW.hpp +0 -1236
- package/vendor/include/networkit/graph/KruskalMSF.hpp +0 -50
- package/vendor/include/networkit/graph/NeighborIterators.hpp +0 -163
- package/vendor/include/networkit/graph/NodeIterators.hpp +0 -127
- package/vendor/include/networkit/graph/PrimMSF.hpp +0 -66
- package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +0 -133
- package/vendor/include/networkit/graph/SpanningForest.hpp +0 -41
- package/vendor/include/networkit/graph/TopologicalSort.hpp +0 -87
- package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +0 -126
- package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +0 -68
- package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +0 -44
- package/vendor/include/networkit/independentset/Luby.hpp +0 -27
- package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +0 -45
- package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +0 -47
- package/vendor/include/networkit/io/BinaryPartitionReader.hpp +0 -41
- package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +0 -44
- package/vendor/include/networkit/io/CoverReader.hpp +0 -27
- package/vendor/include/networkit/io/CoverWriter.hpp +0 -21
- package/vendor/include/networkit/io/DGSReader.hpp +0 -39
- package/vendor/include/networkit/io/DibapGraphReader.hpp +0 -43
- package/vendor/include/networkit/io/DotGraphWriter.hpp +0 -39
- package/vendor/include/networkit/io/DotPartitionWriter.hpp +0 -23
- package/vendor/include/networkit/io/DynamicGraphReader.hpp +0 -29
- package/vendor/include/networkit/io/EdgeListCoverReader.hpp +0 -35
- package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +0 -43
- package/vendor/include/networkit/io/EdgeListReader.hpp +0 -61
- package/vendor/include/networkit/io/EdgeListWriter.hpp +0 -48
- package/vendor/include/networkit/io/GMLGraphReader.hpp +0 -33
- package/vendor/include/networkit/io/GMLGraphWriter.hpp +0 -33
- package/vendor/include/networkit/io/GraphIO.hpp +0 -52
- package/vendor/include/networkit/io/GraphReader.hpp +0 -40
- package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +0 -71
- package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +0 -61
- package/vendor/include/networkit/io/GraphWriter.hpp +0 -27
- package/vendor/include/networkit/io/KONECTGraphReader.hpp +0 -44
- package/vendor/include/networkit/io/LineFileReader.hpp +0 -42
- package/vendor/include/networkit/io/METISGraphReader.hpp +0 -36
- package/vendor/include/networkit/io/METISGraphWriter.hpp +0 -29
- package/vendor/include/networkit/io/METISParser.hpp +0 -63
- package/vendor/include/networkit/io/MTXGraphReader.hpp +0 -31
- package/vendor/include/networkit/io/MTXParser.hpp +0 -87
- package/vendor/include/networkit/io/MatrixMarketReader.hpp +0 -33
- package/vendor/include/networkit/io/MatrixReader.hpp +0 -33
- package/vendor/include/networkit/io/MemoryMappedFile.hpp +0 -80
- package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +0 -144
- package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +0 -50
- package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +0 -71
- package/vendor/include/networkit/io/PartitionReader.hpp +0 -34
- package/vendor/include/networkit/io/PartitionWriter.hpp +0 -31
- package/vendor/include/networkit/io/RBGraphReader.hpp +0 -37
- package/vendor/include/networkit/io/RBMatrixReader.hpp +0 -49
- package/vendor/include/networkit/io/RasterReader.hpp +0 -40
- package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +0 -28
- package/vendor/include/networkit/io/SNAPGraphReader.hpp +0 -53
- package/vendor/include/networkit/io/SNAPGraphWriter.hpp +0 -53
- package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +0 -44
- package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +0 -27
- package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +0 -39
- package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +0 -37
- package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +0 -36
- package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +0 -70
- package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +0 -39
- package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +0 -135
- package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +0 -44
- package/vendor/include/networkit/linkprediction/KatzIndex.hpp +0 -84
- package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +0 -98
- package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +0 -56
- package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +0 -60
- package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +0 -42
- package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +0 -54
- package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +0 -48
- package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +0 -40
- package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +0 -66
- package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +0 -37
- package/vendor/include/networkit/linkprediction/ROCMetric.hpp +0 -39
- package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +0 -47
- package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +0 -38
- package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +0 -50
- package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +0 -39
- package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +0 -35
- package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +0 -35
- package/vendor/include/networkit/matching/BMatcher.hpp +0 -52
- package/vendor/include/networkit/matching/BMatching.hpp +0 -115
- package/vendor/include/networkit/matching/BSuitorMatcher.hpp +0 -170
- package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +0 -78
- package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +0 -35
- package/vendor/include/networkit/matching/Matcher.hpp +0 -55
- package/vendor/include/networkit/matching/Matching.hpp +0 -111
- package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +0 -46
- package/vendor/include/networkit/matching/SuitorMatcher.hpp +0 -62
- package/vendor/include/networkit/numerics/ConjugateGradient.hpp +0 -163
- package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +0 -99
- package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +0 -70
- package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +0 -460
- package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +0 -47
- package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +0 -56
- package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +0 -52
- package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +0 -133
- package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +0 -28
- package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +0 -165
- package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +0 -1090
- package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +0 -316
- package/vendor/include/networkit/numerics/LinearSolver.hpp +0 -151
- package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +0 -61
- package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +0 -36
- package/vendor/include/networkit/numerics/Smoother.hpp +0 -37
- package/vendor/include/networkit/overlap/HashingOverlapper.hpp +0 -28
- package/vendor/include/networkit/overlap/Overlapper.hpp +0 -27
- package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +0 -113
- package/vendor/include/networkit/randomization/Curveball.hpp +0 -49
- package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +0 -39
- package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +0 -39
- package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +0 -82
- package/vendor/include/networkit/randomization/EdgeSwitching.hpp +0 -157
- package/vendor/include/networkit/randomization/GlobalCurveball.hpp +0 -69
- package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +0 -303
- package/vendor/include/networkit/reachability/AllSimplePaths.hpp +0 -122
- package/vendor/include/networkit/reachability/ReachableNodes.hpp +0 -83
- package/vendor/include/networkit/scd/ApproximatePageRank.hpp +0 -51
- package/vendor/include/networkit/scd/CliqueDetect.hpp +0 -55
- package/vendor/include/networkit/scd/CombinedSCD.hpp +0 -51
- package/vendor/include/networkit/scd/GCE.hpp +0 -42
- package/vendor/include/networkit/scd/LFMLocal.hpp +0 -54
- package/vendor/include/networkit/scd/LocalT.hpp +0 -40
- package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +0 -46
- package/vendor/include/networkit/scd/PageRankNibble.hpp +0 -55
- package/vendor/include/networkit/scd/RandomBFS.hpp +0 -33
- package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +0 -121
- package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +0 -76
- package/vendor/include/networkit/scd/SetConductance.hpp +0 -47
- package/vendor/include/networkit/scd/TCE.hpp +0 -41
- package/vendor/include/networkit/scd/TwoPhaseL.hpp +0 -40
- package/vendor/include/networkit/scoring/EdgeScoring.hpp +0 -44
- package/vendor/include/networkit/scoring/ModularityScoring.hpp +0 -79
- package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +0 -59
- package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +0 -28
- package/vendor/include/networkit/sparsification/ForestFireScore.hpp +0 -34
- package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +0 -40
- package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +0 -30
- package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +0 -124
- package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +0 -63
- package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +0 -38
- package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +0 -33
- package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +0 -29
- package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +0 -23
- package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +0 -35
- package/vendor/include/networkit/sparsification/SimmelianScore.hpp +0 -92
- package/vendor/include/networkit/sparsification/Sparsifiers.hpp +0 -166
- package/vendor/include/networkit/structures/Cover.hpp +0 -248
- package/vendor/include/networkit/structures/LocalCommunity.hpp +0 -363
- package/vendor/include/networkit/structures/Partition.hpp +0 -335
- package/vendor/include/networkit/structures/UnionFind.hpp +0 -66
- package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +0 -157
- package/vendor/include/networkit/viz/MaxentStress.hpp +0 -346
- package/vendor/include/networkit/viz/Octree.hpp +0 -428
- package/vendor/include/networkit/viz/PivotMDS.hpp +0 -63
- package/vendor/include/networkit/viz/Point.hpp +0 -415
- package/vendor/include/networkit/viz/PostscriptWriter.hpp +0 -78
- package/vendor/include/tlx/algorithm/exclusive_scan.hpp +0 -56
- package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +0 -56
- package/vendor/include/tlx/algorithm/merge_advance.hpp +0 -177
- package/vendor/include/tlx/algorithm/merge_combine.hpp +0 -76
- package/vendor/include/tlx/algorithm/multisequence_partition.hpp +0 -346
- package/vendor/include/tlx/algorithm/multisequence_selection.hpp +0 -351
- package/vendor/include/tlx/algorithm/multiway_merge.hpp +0 -1385
- package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +0 -257
- package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +0 -408
- package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +0 -116
- package/vendor/include/tlx/algorithm.hpp +0 -36
- package/vendor/include/tlx/allocator_base.hpp +0 -100
- package/vendor/include/tlx/backtrace.hpp +0 -54
- package/vendor/include/tlx/cmdline_parser.hpp +0 -498
- package/vendor/include/tlx/container/btree.hpp +0 -3977
- package/vendor/include/tlx/container/btree_map.hpp +0 -634
- package/vendor/include/tlx/container/btree_multimap.hpp +0 -627
- package/vendor/include/tlx/container/btree_multiset.hpp +0 -612
- package/vendor/include/tlx/container/btree_set.hpp +0 -612
- package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +0 -416
- package/vendor/include/tlx/container/d_ary_heap.hpp +0 -311
- package/vendor/include/tlx/container/loser_tree.hpp +0 -1009
- package/vendor/include/tlx/container/lru_cache.hpp +0 -319
- package/vendor/include/tlx/container/radix_heap.hpp +0 -735
- package/vendor/include/tlx/container/ring_buffer.hpp +0 -428
- package/vendor/include/tlx/container/simple_vector.hpp +0 -304
- package/vendor/include/tlx/container/splay_tree.hpp +0 -399
- package/vendor/include/tlx/container/string_view.hpp +0 -805
- package/vendor/include/tlx/container.hpp +0 -40
- package/vendor/include/tlx/counting_ptr.hpp +0 -522
- package/vendor/include/tlx/define/attribute_always_inline.hpp +0 -34
- package/vendor/include/tlx/define/attribute_fallthrough.hpp +0 -36
- package/vendor/include/tlx/define/attribute_format_printf.hpp +0 -34
- package/vendor/include/tlx/define/attribute_packed.hpp +0 -34
- package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +0 -34
- package/vendor/include/tlx/define/constexpr.hpp +0 -31
- package/vendor/include/tlx/define/deprecated.hpp +0 -39
- package/vendor/include/tlx/define/endian.hpp +0 -49
- package/vendor/include/tlx/define/likely.hpp +0 -33
- package/vendor/include/tlx/define/visibility_hidden.hpp +0 -34
- package/vendor/include/tlx/define.hpp +0 -36
- package/vendor/include/tlx/delegate.hpp +0 -524
- package/vendor/include/tlx/die/core.hpp +0 -311
- package/vendor/include/tlx/die.hpp +0 -106
- package/vendor/include/tlx/digest/md5.hpp +0 -81
- package/vendor/include/tlx/digest/sha1.hpp +0 -81
- package/vendor/include/tlx/digest/sha256.hpp +0 -81
- package/vendor/include/tlx/digest/sha512.hpp +0 -81
- package/vendor/include/tlx/digest.hpp +0 -30
- package/vendor/include/tlx/logger/all.hpp +0 -33
- package/vendor/include/tlx/logger/array.hpp +0 -43
- package/vendor/include/tlx/logger/core.hpp +0 -287
- package/vendor/include/tlx/logger/deque.hpp +0 -42
- package/vendor/include/tlx/logger/map.hpp +0 -65
- package/vendor/include/tlx/logger/set.hpp +0 -60
- package/vendor/include/tlx/logger/tuple.hpp +0 -66
- package/vendor/include/tlx/logger/unordered_map.hpp +0 -68
- package/vendor/include/tlx/logger/unordered_set.hpp +0 -64
- package/vendor/include/tlx/logger/wrap_unprintable.hpp +0 -75
- package/vendor/include/tlx/logger.hpp +0 -44
- package/vendor/include/tlx/math/abs_diff.hpp +0 -35
- package/vendor/include/tlx/math/aggregate.hpp +0 -231
- package/vendor/include/tlx/math/aggregate_min_max.hpp +0 -116
- package/vendor/include/tlx/math/bswap.hpp +0 -148
- package/vendor/include/tlx/math/bswap_be.hpp +0 -79
- package/vendor/include/tlx/math/bswap_le.hpp +0 -79
- package/vendor/include/tlx/math/clz.hpp +0 -174
- package/vendor/include/tlx/math/ctz.hpp +0 -174
- package/vendor/include/tlx/math/div_ceil.hpp +0 -36
- package/vendor/include/tlx/math/ffs.hpp +0 -123
- package/vendor/include/tlx/math/integer_log2.hpp +0 -189
- package/vendor/include/tlx/math/is_power_of_two.hpp +0 -74
- package/vendor/include/tlx/math/polynomial_regression.hpp +0 -243
- package/vendor/include/tlx/math/popcount.hpp +0 -173
- package/vendor/include/tlx/math/power_to_the.hpp +0 -44
- package/vendor/include/tlx/math/rol.hpp +0 -112
- package/vendor/include/tlx/math/ror.hpp +0 -112
- package/vendor/include/tlx/math/round_to_power_of_two.hpp +0 -121
- package/vendor/include/tlx/math/round_up.hpp +0 -36
- package/vendor/include/tlx/math/sgn.hpp +0 -38
- package/vendor/include/tlx/math.hpp +0 -46
- package/vendor/include/tlx/meta/apply_tuple.hpp +0 -55
- package/vendor/include/tlx/meta/call_for_range.hpp +0 -78
- package/vendor/include/tlx/meta/call_foreach.hpp +0 -60
- package/vendor/include/tlx/meta/call_foreach_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +0 -61
- package/vendor/include/tlx/meta/call_foreach_with_index.hpp +0 -64
- package/vendor/include/tlx/meta/enable_if.hpp +0 -37
- package/vendor/include/tlx/meta/fold_left.hpp +0 -63
- package/vendor/include/tlx/meta/fold_left_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/fold_right.hpp +0 -63
- package/vendor/include/tlx/meta/fold_right_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/function_chain.hpp +0 -197
- package/vendor/include/tlx/meta/function_stack.hpp +0 -189
- package/vendor/include/tlx/meta/has_member.hpp +0 -80
- package/vendor/include/tlx/meta/has_method.hpp +0 -117
- package/vendor/include/tlx/meta/index_sequence.hpp +0 -66
- package/vendor/include/tlx/meta/is_std_array.hpp +0 -40
- package/vendor/include/tlx/meta/is_std_pair.hpp +0 -39
- package/vendor/include/tlx/meta/is_std_tuple.hpp +0 -39
- package/vendor/include/tlx/meta/is_std_vector.hpp +0 -39
- package/vendor/include/tlx/meta/log2.hpp +0 -101
- package/vendor/include/tlx/meta/no_operation.hpp +0 -55
- package/vendor/include/tlx/meta/static_index.hpp +0 -42
- package/vendor/include/tlx/meta/vexpand.hpp +0 -34
- package/vendor/include/tlx/meta/vmap_for_range.hpp +0 -84
- package/vendor/include/tlx/meta/vmap_foreach.hpp +0 -63
- package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +0 -59
- package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +0 -62
- package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +0 -70
- package/vendor/include/tlx/meta.hpp +0 -55
- package/vendor/include/tlx/multi_timer.hpp +0 -148
- package/vendor/include/tlx/port/setenv.hpp +0 -31
- package/vendor/include/tlx/port.hpp +0 -27
- package/vendor/include/tlx/semaphore.hpp +0 -119
- package/vendor/include/tlx/simple_vector.hpp +0 -20
- package/vendor/include/tlx/siphash.hpp +0 -282
- package/vendor/include/tlx/sort/networks/best.hpp +0 -611
- package/vendor/include/tlx/sort/networks/bose_nelson.hpp +0 -412
- package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +0 -507
- package/vendor/include/tlx/sort/networks/cswap.hpp +0 -60
- package/vendor/include/tlx/sort/parallel_mergesort.hpp +0 -398
- package/vendor/include/tlx/sort/strings/insertion_sort.hpp +0 -232
- package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +0 -185
- package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +0 -1647
- package/vendor/include/tlx/sort/strings/radix_sort.hpp +0 -934
- package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +0 -756
- package/vendor/include/tlx/sort/strings/string_ptr.hpp +0 -426
- package/vendor/include/tlx/sort/strings/string_set.hpp +0 -800
- package/vendor/include/tlx/sort/strings.hpp +0 -329
- package/vendor/include/tlx/sort/strings_parallel.hpp +0 -325
- package/vendor/include/tlx/sort.hpp +0 -29
- package/vendor/include/tlx/stack_allocator.hpp +0 -226
- package/vendor/include/tlx/string/appendline.hpp +0 -35
- package/vendor/include/tlx/string/base64.hpp +0 -87
- package/vendor/include/tlx/string/bitdump.hpp +0 -139
- package/vendor/include/tlx/string/compare_icase.hpp +0 -42
- package/vendor/include/tlx/string/contains.hpp +0 -36
- package/vendor/include/tlx/string/contains_word.hpp +0 -42
- package/vendor/include/tlx/string/ends_with.hpp +0 -79
- package/vendor/include/tlx/string/equal_icase.hpp +0 -42
- package/vendor/include/tlx/string/erase_all.hpp +0 -70
- package/vendor/include/tlx/string/escape_html.hpp +0 -34
- package/vendor/include/tlx/string/escape_uri.hpp +0 -34
- package/vendor/include/tlx/string/expand_environment_variables.hpp +0 -49
- package/vendor/include/tlx/string/extract_between.hpp +0 -40
- package/vendor/include/tlx/string/format_iec_units.hpp +0 -32
- package/vendor/include/tlx/string/format_si_iec_units.hpp +0 -19
- package/vendor/include/tlx/string/format_si_units.hpp +0 -32
- package/vendor/include/tlx/string/hash_djb2.hpp +0 -87
- package/vendor/include/tlx/string/hash_sdbm.hpp +0 -86
- package/vendor/include/tlx/string/hexdump.hpp +0 -154
- package/vendor/include/tlx/string/index_of.hpp +0 -56
- package/vendor/include/tlx/string/join.hpp +0 -65
- package/vendor/include/tlx/string/join_generic.hpp +0 -89
- package/vendor/include/tlx/string/join_quoted.hpp +0 -46
- package/vendor/include/tlx/string/less_icase.hpp +0 -64
- package/vendor/include/tlx/string/levenshtein.hpp +0 -193
- package/vendor/include/tlx/string/pad.hpp +0 -39
- package/vendor/include/tlx/string/parse_si_iec_units.hpp +0 -46
- package/vendor/include/tlx/string/parse_uri.hpp +0 -66
- package/vendor/include/tlx/string/parse_uri_form_data.hpp +0 -136
- package/vendor/include/tlx/string/replace.hpp +0 -141
- package/vendor/include/tlx/string/split.hpp +0 -170
- package/vendor/include/tlx/string/split_quoted.hpp +0 -49
- package/vendor/include/tlx/string/split_view.hpp +0 -218
- package/vendor/include/tlx/string/split_words.hpp +0 -53
- package/vendor/include/tlx/string/ssprintf.hpp +0 -45
- package/vendor/include/tlx/string/ssprintf_generic.hpp +0 -95
- package/vendor/include/tlx/string/starts_with.hpp +0 -44
- package/vendor/include/tlx/string/to_lower.hpp +0 -47
- package/vendor/include/tlx/string/to_upper.hpp +0 -47
- package/vendor/include/tlx/string/trim.hpp +0 -298
- package/vendor/include/tlx/string/union_words.hpp +0 -33
- package/vendor/include/tlx/string/word_wrap.hpp +0 -35
- package/vendor/include/tlx/string.hpp +0 -68
- package/vendor/include/tlx/thread_barrier_mutex.hpp +0 -109
- package/vendor/include/tlx/thread_barrier_spin.hpp +0 -127
- package/vendor/include/tlx/thread_pool.hpp +0 -151
- package/vendor/include/tlx/timestamp.hpp +0 -23
- package/vendor/include/tlx/unused.hpp +0 -28
- package/vendor/include/tlx/vector_free.hpp +0 -30
- package/vendor/include/tlx/version.hpp +0 -49
- package/vendor/include/ttmath/ttmath.h +0 -2881
- package/vendor/include/ttmath/ttmathbig.h +0 -6111
- package/vendor/include/ttmath/ttmathdec.h +0 -419
- package/vendor/include/ttmath/ttmathint.h +0 -1923
- package/vendor/include/ttmath/ttmathmisc.h +0 -250
- package/vendor/include/ttmath/ttmathobjects.h +0 -812
- package/vendor/include/ttmath/ttmathparser.h +0 -2791
- package/vendor/include/ttmath/ttmaththreads.h +0 -252
- package/vendor/include/ttmath/ttmathtypes.h +0 -707
- package/vendor/include/ttmath/ttmathuint.h +0 -4190
- package/vendor/include/ttmath/ttmathuint_noasm.h +0 -1038
- package/vendor/include/ttmath/ttmathuint_x86.h +0 -1620
- package/vendor/include/ttmath/ttmathuint_x86_64.h +0 -1177
- package/vendor/lib/cmake/tlx/tlx-config.cmake +0 -51
- package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +0 -19
- package/vendor/lib/cmake/tlx/tlx-targets.cmake +0 -106
- package/vendor/lib/cmake/tlx/tlx-version.cmake +0 -11
- package/vendor/lib/libtlx.a +0 -0
- package/vendor/lib/pkgconfig/networkit.pc +0 -11
- package/vendor/lib/pkgconfig/tlx.pc +0 -11
|
@@ -1,735 +0,0 @@
|
|
|
1
|
-
/*******************************************************************************
|
|
2
|
-
* tlx/container/radix_heap.hpp
|
|
3
|
-
*
|
|
4
|
-
* Part of tlx - http://panthema.net/tlx
|
|
5
|
-
*
|
|
6
|
-
* Copyright (C) 2018 Manuel Penschuck <tlx@manuel.jetzt>
|
|
7
|
-
*
|
|
8
|
-
* All rights reserved. Published under the Boost Software License, Version 1.0
|
|
9
|
-
******************************************************************************/
|
|
10
|
-
|
|
11
|
-
#ifndef TLX_CONTAINER_RADIX_HEAP_HEADER
|
|
12
|
-
#define TLX_CONTAINER_RADIX_HEAP_HEADER
|
|
13
|
-
|
|
14
|
-
#include <tlx/define/likely.hpp>
|
|
15
|
-
#include <tlx/die.hpp>
|
|
16
|
-
#include <tlx/math/clz.hpp>
|
|
17
|
-
#include <tlx/math/div_ceil.hpp>
|
|
18
|
-
#include <tlx/math/ffs.hpp>
|
|
19
|
-
#include <tlx/meta/log2.hpp>
|
|
20
|
-
#include <array>
|
|
21
|
-
#include <cassert>
|
|
22
|
-
#include <cstddef>
|
|
23
|
-
#include <cstdint>
|
|
24
|
-
#include <limits>
|
|
25
|
-
#include <type_traits>
|
|
26
|
-
#include <utility>
|
|
27
|
-
#include <vector>
|
|
28
|
-
|
|
29
|
-
namespace tlx {
|
|
30
|
-
namespace radix_heap_detail {
|
|
31
|
-
|
|
32
|
-
/*!
|
|
33
|
-
* Compute the rank of an integer x (i.e. the number of elements smaller than x
|
|
34
|
-
* that are representable using type Int) and vice versa.
|
|
35
|
-
* If Int is an unsigned integral type, all computations yield identity.
|
|
36
|
-
* If Int is a signed integrals, the smallest (negative) number is mapped to
|
|
37
|
-
* rank zero, the next larger value to one and so on.
|
|
38
|
-
*
|
|
39
|
-
* The implementation assumes negative numbers are implemented as Two's
|
|
40
|
-
* complement and contains static_asserts failing if this is not the case.
|
|
41
|
-
*/
|
|
42
|
-
template <typename Int>
|
|
43
|
-
class IntegerRank
|
|
44
|
-
{
|
|
45
|
-
static_assert(std::is_integral<Int>::value,
|
|
46
|
-
"SignedInt has to be an integral type");
|
|
47
|
-
|
|
48
|
-
public:
|
|
49
|
-
using int_type = Int;
|
|
50
|
-
using rank_type = typename std::make_unsigned<int_type>::type;
|
|
51
|
-
|
|
52
|
-
//! Maps value i to its rank in int_type. For any pair T x < y the invariant
|
|
53
|
-
//! IntegerRank<T>::rank_of_int(x) < IntegerRank<T>::rank_of_int(y) holds.
|
|
54
|
-
static constexpr rank_type rank_of_int(int_type i)
|
|
55
|
-
{
|
|
56
|
-
return use_identity_ ? static_cast<rank_type>(i) :
|
|
57
|
-
static_cast<rank_type>(i) ^ sign_bit_;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
//! Returns the r-th smallest number of int_r. It is the inverse of
|
|
61
|
-
//! rank_of_int, i.e. int_at_rank(rank_of_int(i)) == i for all i.
|
|
62
|
-
static constexpr int_type int_at_rank(rank_type r)
|
|
63
|
-
{
|
|
64
|
-
return use_identity_ ? static_cast<int_type>(r) :
|
|
65
|
-
static_cast<int_type>(r ^ sign_bit_);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
private:
|
|
69
|
-
constexpr static bool use_identity_ = !std::is_signed<int_type>::value;
|
|
70
|
-
|
|
71
|
-
constexpr static rank_type sign_bit_ =
|
|
72
|
-
(rank_type(1) << (8 * sizeof(rank_type) - 1));
|
|
73
|
-
|
|
74
|
-
// These test fail if a signed type does not use Two's complement
|
|
75
|
-
static_assert(rank_of_int(std::numeric_limits<int_type>::min()) == 0,
|
|
76
|
-
"Rank of minimum is not zero");
|
|
77
|
-
static_assert(rank_of_int(std::numeric_limits<int_type>::min() + 1) == 1,
|
|
78
|
-
"Rank of minimum+1 is not one");
|
|
79
|
-
static_assert(rank_of_int(std::numeric_limits<int_type>::max()) ==
|
|
80
|
-
std::numeric_limits<rank_type>::max(),
|
|
81
|
-
"Rank of maximum is not maximum rank");
|
|
82
|
-
static_assert(rank_of_int(std::numeric_limits<int_type>::max()) >
|
|
83
|
-
rank_of_int(int_type(0)),
|
|
84
|
-
"Rank of maximum is not larger than rank of zero");
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
//! Internal implementation of BitArray; do not invoke directly
|
|
88
|
-
//! \tparam Size Number of bits the data structure is supposed to store
|
|
89
|
-
//! \tparam SizeIsAtmost64 Switch between inner node implementation (false)
|
|
90
|
-
//! and leaf implementation (true)
|
|
91
|
-
template <size_t Size, bool SizeIsAtmost64>
|
|
92
|
-
class BitArrayRecursive;
|
|
93
|
-
|
|
94
|
-
template <size_t Size>
|
|
95
|
-
class BitArrayRecursive<Size, false>
|
|
96
|
-
{
|
|
97
|
-
static constexpr size_t leaf_width = 6;
|
|
98
|
-
static constexpr size_t width = tlx::Log2<Size>::ceil;
|
|
99
|
-
static_assert(width > leaf_width,
|
|
100
|
-
"Size has to be larger than 2**leaf_width");
|
|
101
|
-
static constexpr size_t root_width =
|
|
102
|
-
(width % leaf_width) != 0 ? (width % leaf_width) : leaf_width;
|
|
103
|
-
static constexpr size_t child_width = width - root_width;
|
|
104
|
-
using child_type = BitArrayRecursive<1LLU << child_width, child_width <= 6>;
|
|
105
|
-
|
|
106
|
-
static constexpr size_t root_size = div_ceil(Size, child_type::size);
|
|
107
|
-
using root_type = BitArrayRecursive<root_size <= 32 ? 32 : 64, true>;
|
|
108
|
-
|
|
109
|
-
using child_array_type = std::array<child_type, root_size>;
|
|
110
|
-
|
|
111
|
-
public:
|
|
112
|
-
static constexpr size_t size = Size;
|
|
113
|
-
|
|
114
|
-
explicit BitArrayRecursive() noexcept = default;
|
|
115
|
-
BitArrayRecursive(const BitArrayRecursive&) noexcept = default;
|
|
116
|
-
BitArrayRecursive(BitArrayRecursive&&) noexcept = default;
|
|
117
|
-
BitArrayRecursive& operator=(const BitArrayRecursive&) noexcept = default;
|
|
118
|
-
BitArrayRecursive& operator=(BitArrayRecursive&&) noexcept = default;
|
|
119
|
-
|
|
120
|
-
void set_bit(const size_t i)
|
|
121
|
-
{
|
|
122
|
-
const auto idx = get_index_(i);
|
|
123
|
-
root_.set_bit(idx.first);
|
|
124
|
-
children_[idx.first].set_bit(idx.second);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
void clear_bit(const size_t i)
|
|
128
|
-
{
|
|
129
|
-
const auto idx = get_index_(i);
|
|
130
|
-
children_[idx.first].clear_bit(idx.second);
|
|
131
|
-
if (children_[idx.first].empty())
|
|
132
|
-
root_.clear_bit(idx.first);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
bool is_set(const size_t i) const
|
|
136
|
-
{
|
|
137
|
-
const auto idx = get_index_(i);
|
|
138
|
-
return children_[idx.first].is_set(idx.second);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
void clear_all()
|
|
142
|
-
{
|
|
143
|
-
root_.clear_all();
|
|
144
|
-
for (auto& child : children_)
|
|
145
|
-
child.clear_all();
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
bool empty() const
|
|
149
|
-
{
|
|
150
|
-
return root_.empty();
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
size_t find_lsb() const
|
|
154
|
-
{
|
|
155
|
-
assert(!empty());
|
|
156
|
-
|
|
157
|
-
const size_t child_idx = root_.find_lsb();
|
|
158
|
-
const size_t child_val = children_[child_idx].find_lsb();
|
|
159
|
-
|
|
160
|
-
return child_idx * child_type::size + child_val;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
private:
|
|
164
|
-
child_array_type children_;
|
|
165
|
-
root_type root_;
|
|
166
|
-
|
|
167
|
-
std::pair<size_t, size_t> get_index_(size_t i) const
|
|
168
|
-
{
|
|
169
|
-
assert(i < size);
|
|
170
|
-
return {i / child_type::size, i % child_type::size};
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
template <size_t Size>
|
|
175
|
-
class BitArrayRecursive<Size, true>
|
|
176
|
-
{
|
|
177
|
-
static_assert(Size <= 64, "Support at most 64 bits");
|
|
178
|
-
using uint_type = typename std::conditional<Size <= 32, std::uint32_t,
|
|
179
|
-
std::uint64_t>::type;
|
|
180
|
-
|
|
181
|
-
public:
|
|
182
|
-
static constexpr size_t size = Size;
|
|
183
|
-
|
|
184
|
-
explicit BitArrayRecursive() noexcept : flags_(0)
|
|
185
|
-
{
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
BitArrayRecursive(const BitArrayRecursive&) noexcept = default;
|
|
189
|
-
BitArrayRecursive(BitArrayRecursive&&) noexcept = default;
|
|
190
|
-
BitArrayRecursive& operator=(const BitArrayRecursive&) noexcept = default;
|
|
191
|
-
BitArrayRecursive& operator=(BitArrayRecursive&&) noexcept = default;
|
|
192
|
-
|
|
193
|
-
void set_bit(const size_t i)
|
|
194
|
-
{
|
|
195
|
-
assert(i < size);
|
|
196
|
-
flags_ |= uint_type(1) << i;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
void clear_bit(const size_t i)
|
|
200
|
-
{
|
|
201
|
-
assert(i < size);
|
|
202
|
-
flags_ &= ~(uint_type(1) << i);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
bool is_set(const size_t i) const
|
|
206
|
-
{
|
|
207
|
-
assert(i < size);
|
|
208
|
-
return (flags_ & (uint_type(1) << i)) != 0;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
void clear_all()
|
|
212
|
-
{
|
|
213
|
-
flags_ = 0;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
bool empty() const
|
|
217
|
-
{
|
|
218
|
-
return !flags_;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
size_t find_lsb() const
|
|
222
|
-
{
|
|
223
|
-
assert(!empty());
|
|
224
|
-
die_unless(!empty());
|
|
225
|
-
return tlx::ffs(flags_) - 1;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
private:
|
|
229
|
-
uint_type flags_;
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
/*!
|
|
233
|
-
* A BitArray of fixed size supporting reading, setting, and clearing
|
|
234
|
-
* of individual bits. The data structure is optimized to find the bit with
|
|
235
|
-
* smallest index that is set (find_lsb).
|
|
236
|
-
*
|
|
237
|
-
* The BitArray is implemented as a search tree with a fan-out of up to 64.
|
|
238
|
-
* It is thus very flat, and all operations but with the exception of clear_all
|
|
239
|
-
* have a complexity of O(log_64(Size)) which is << 10 for all practical
|
|
240
|
-
* purposes.
|
|
241
|
-
*/
|
|
242
|
-
template <size_t Size>
|
|
243
|
-
class BitArray
|
|
244
|
-
{
|
|
245
|
-
using impl_type = BitArrayRecursive<Size, Size <= 64>;
|
|
246
|
-
|
|
247
|
-
public:
|
|
248
|
-
static constexpr size_t size = Size;
|
|
249
|
-
|
|
250
|
-
explicit BitArray() noexcept = default;
|
|
251
|
-
BitArray(const BitArray&) noexcept = default;
|
|
252
|
-
BitArray(BitArray&&) noexcept = default;
|
|
253
|
-
BitArray& operator=(const BitArray&) noexcept = default;
|
|
254
|
-
BitArray& operator=(BitArray&&) noexcept = default;
|
|
255
|
-
|
|
256
|
-
//! Set the i-th bit to true
|
|
257
|
-
void set_bit(const size_t i)
|
|
258
|
-
{
|
|
259
|
-
impl_.set_bit(i);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
//! Set the i-th bit to false
|
|
263
|
-
void clear_bit(const size_t i)
|
|
264
|
-
{
|
|
265
|
-
impl_.clear_bit(i);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
//! Returns value of the i-th
|
|
269
|
-
bool is_set(const size_t i) const
|
|
270
|
-
{
|
|
271
|
-
return impl_.is_set(i);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
//! Sets all bits to false
|
|
275
|
-
void clear_all()
|
|
276
|
-
{
|
|
277
|
-
impl_.clear_all();
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
//! True if all bits are false
|
|
281
|
-
bool empty() const
|
|
282
|
-
{
|
|
283
|
-
return impl_.empty();
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
//! Finds the bit with smallest index that is set
|
|
287
|
-
//! \warning If empty() is true, the result is undefined
|
|
288
|
-
size_t find_lsb() const
|
|
289
|
-
{
|
|
290
|
-
return impl_.find_lsb();
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
private:
|
|
294
|
-
impl_type impl_;
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
template <unsigned Radix, typename Int>
|
|
298
|
-
class BucketComputation
|
|
299
|
-
{
|
|
300
|
-
static_assert(std::is_unsigned<Int>::value, "Require unsigned integer");
|
|
301
|
-
static constexpr unsigned radix_bits = tlx::Log2<Radix>::floor;
|
|
302
|
-
|
|
303
|
-
public:
|
|
304
|
-
//! Return bucket index key x belongs to given the current insertion limit
|
|
305
|
-
size_t operator()(const Int x, const Int insertion_limit) const
|
|
306
|
-
{
|
|
307
|
-
constexpr Int mask = (1U << radix_bits) - 1;
|
|
308
|
-
|
|
309
|
-
assert(x >= insertion_limit);
|
|
310
|
-
|
|
311
|
-
const auto diff = x ^ insertion_limit;
|
|
312
|
-
if (!diff)
|
|
313
|
-
return 0;
|
|
314
|
-
|
|
315
|
-
const auto diff_in_bit = (8 * sizeof(Int) - 1) - clz(diff);
|
|
316
|
-
|
|
317
|
-
const auto row = diff_in_bit / radix_bits;
|
|
318
|
-
const auto bucket_in_row = ((x >> (radix_bits * row)) & mask) - row;
|
|
319
|
-
|
|
320
|
-
const auto result = row * Radix + bucket_in_row;
|
|
321
|
-
|
|
322
|
-
return result;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
//! Return smallest key possible in bucket idx assuming insertion_limit==0
|
|
326
|
-
Int lower_bound(const size_t idx) const
|
|
327
|
-
{
|
|
328
|
-
assert(idx < num_buckets);
|
|
329
|
-
|
|
330
|
-
if (idx < Radix)
|
|
331
|
-
return static_cast<Int>(idx);
|
|
332
|
-
|
|
333
|
-
const size_t row = (idx - 1) / (Radix - 1);
|
|
334
|
-
const auto digit = static_cast<Int>(idx - row * (Radix - 1));
|
|
335
|
-
|
|
336
|
-
return digit << radix_bits * row;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
//! Return largest key possible in bucket idx assuming insertion_limit==0
|
|
340
|
-
Int upper_bound(const size_t idx) const
|
|
341
|
-
{
|
|
342
|
-
assert(idx < num_buckets);
|
|
343
|
-
|
|
344
|
-
if (idx == num_buckets - 1)
|
|
345
|
-
return std::numeric_limits<Int>::max();
|
|
346
|
-
|
|
347
|
-
return lower_bound(idx + 1) - 1;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
private:
|
|
351
|
-
constexpr static size_t num_buckets_(size_t bits)
|
|
352
|
-
{
|
|
353
|
-
return (bits >= radix_bits) ?
|
|
354
|
-
(Radix - 1) + num_buckets_(bits - radix_bits) :
|
|
355
|
-
(1 << bits) - 1;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
public:
|
|
359
|
-
//! Number of buckets required given Radix and the current data type Int
|
|
360
|
-
static constexpr size_t num_buckets =
|
|
361
|
-
num_buckets_(std::numeric_limits<Int>::digits) + 1;
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
//! Used as an adapter to implement RadixHeapPair on top of RadixHeap.
|
|
365
|
-
template <typename KeyType, typename DataType>
|
|
366
|
-
struct PairKeyExtract
|
|
367
|
-
{
|
|
368
|
-
using allow_emplace_pair = bool;
|
|
369
|
-
|
|
370
|
-
KeyType operator()(const std::pair<KeyType, DataType>& p) const
|
|
371
|
-
{
|
|
372
|
-
return p.first;
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
|
|
376
|
-
} // namespace radix_heap_detail
|
|
377
|
-
|
|
378
|
-
//! \addtogroup tlx_container
|
|
379
|
-
//! \{
|
|
380
|
-
|
|
381
|
-
/*!
|
|
382
|
-
* This class implements a monotonic integer min priority queue, more specific
|
|
383
|
-
* a multi-level radix heap.
|
|
384
|
-
*
|
|
385
|
-
* Here, monotonic refers to the fact that the heap maintains an insertion limit
|
|
386
|
-
* and does not allow the insertion of keys smaller than this limit. The
|
|
387
|
-
* frontier is increased to the current minimum when invoking the methods top(),
|
|
388
|
-
* pop() and swap_top_bucket(). To query the currently smallest item without
|
|
389
|
-
* updating the insertion limit use peak_top_key().
|
|
390
|
-
*
|
|
391
|
-
* We implement a two level radix heap. Let k=sizeof(KeyType)*8 be the number of
|
|
392
|
-
* bits in a key. In contrast to an ordinary radix heap which contains k
|
|
393
|
-
* buckets, we maintain ceil(k/log2(Radix)) rows each containing Radix-many
|
|
394
|
-
* buckets. This reduces the number of move operations when reorganizing the
|
|
395
|
-
* data structure.
|
|
396
|
-
*
|
|
397
|
-
* The implementation loosly follows the description of "An Experimental Study
|
|
398
|
-
* of Priority Queues in External Memory" [Bregel et al.] and is also inspired
|
|
399
|
-
* by https://github.com/iwiwi/radix-heap
|
|
400
|
-
*
|
|
401
|
-
* \tparam KeyType Has to be an unsigned integer type
|
|
402
|
-
* \tparam DataType Type of data payload
|
|
403
|
-
* \tparam Radix A power of two <= 64.
|
|
404
|
-
*/
|
|
405
|
-
template <typename ValueType, typename KeyExtract, typename KeyType,
|
|
406
|
-
unsigned Radix = 8>
|
|
407
|
-
class RadixHeap
|
|
408
|
-
{
|
|
409
|
-
static_assert(Log2<Radix>::floor == Log2<Radix>::ceil,
|
|
410
|
-
"Radix has to be power of two");
|
|
411
|
-
|
|
412
|
-
static constexpr bool debug = false;
|
|
413
|
-
|
|
414
|
-
public:
|
|
415
|
-
using key_type = KeyType;
|
|
416
|
-
using value_type = ValueType;
|
|
417
|
-
using bucket_index_type = size_t;
|
|
418
|
-
|
|
419
|
-
static constexpr unsigned radix = Radix;
|
|
420
|
-
|
|
421
|
-
protected:
|
|
422
|
-
using Encoder = radix_heap_detail::IntegerRank<key_type>;
|
|
423
|
-
using ranked_key_type = typename Encoder::rank_type;
|
|
424
|
-
using bucket_map_type =
|
|
425
|
-
radix_heap_detail::BucketComputation<Radix, ranked_key_type>;
|
|
426
|
-
|
|
427
|
-
static constexpr unsigned radix_bits = tlx::Log2<radix>::floor;
|
|
428
|
-
static constexpr unsigned num_layers =
|
|
429
|
-
div_ceil(8 * sizeof(ranked_key_type), radix_bits);
|
|
430
|
-
static constexpr unsigned num_buckets = bucket_map_type::num_buckets;
|
|
431
|
-
|
|
432
|
-
public:
|
|
433
|
-
using bucket_data_type = std::vector<value_type>;
|
|
434
|
-
|
|
435
|
-
explicit RadixHeap(KeyExtract key_extract = KeyExtract{})
|
|
436
|
-
: key_extract_(key_extract)
|
|
437
|
-
{
|
|
438
|
-
initialize_();
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
// Copy
|
|
442
|
-
RadixHeap(const RadixHeap&) = default;
|
|
443
|
-
RadixHeap& operator=(const RadixHeap&) = default;
|
|
444
|
-
|
|
445
|
-
// Move
|
|
446
|
-
RadixHeap(RadixHeap&&) = default;
|
|
447
|
-
RadixHeap& operator=(RadixHeap&&) = default;
|
|
448
|
-
|
|
449
|
-
bucket_index_type get_bucket(const value_type& value) const
|
|
450
|
-
{
|
|
451
|
-
return get_bucket_key(key_extract_(value));
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
bucket_index_type get_bucket_key(const key_type key) const
|
|
455
|
-
{
|
|
456
|
-
const auto enc = Encoder::rank_of_int(key);
|
|
457
|
-
assert(enc >= insertion_limit_);
|
|
458
|
-
|
|
459
|
-
return bucket_map_(enc, insertion_limit_);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
//! Construct and insert element with priority key
|
|
463
|
-
//! \warning In contrast to all other methods the key has to be provided
|
|
464
|
-
//! explicitly as the first argument. All other arguments are passed to
|
|
465
|
-
//! the constructor of the element.
|
|
466
|
-
template <typename... Args>
|
|
467
|
-
bucket_index_type emplace(const key_type key, Args&&... args)
|
|
468
|
-
{
|
|
469
|
-
const auto enc = Encoder::rank_of_int(key);
|
|
470
|
-
assert(enc >= insertion_limit_);
|
|
471
|
-
const auto idx = bucket_map_(enc, insertion_limit_);
|
|
472
|
-
|
|
473
|
-
emplace_in_bucket(idx, std::forward<Args>(args)...);
|
|
474
|
-
return idx;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
//! In case the first parameter can be directly casted into key_type,
|
|
478
|
-
//! using this method avoid repeating it.
|
|
479
|
-
template <typename... Args>
|
|
480
|
-
bucket_index_type emplace_keyfirst(const key_type key, Args&&... args)
|
|
481
|
-
{
|
|
482
|
-
return emplace(key, key, std::forward<Args>(args)...);
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
//! Construct and insert element into bucket idx (useful if an item
|
|
486
|
-
//! was inserted into the same bucket directly before)
|
|
487
|
-
//! \warning Calling any method which updates the current
|
|
488
|
-
//! can invalidate this hint
|
|
489
|
-
template <typename... Args>
|
|
490
|
-
void emplace_in_bucket(const bucket_index_type idx, Args&&... args)
|
|
491
|
-
{
|
|
492
|
-
if (buckets_data_[idx].empty())
|
|
493
|
-
filled_.set_bit(idx);
|
|
494
|
-
buckets_data_[idx].emplace_back(std::forward<Args>(args)...);
|
|
495
|
-
|
|
496
|
-
const auto enc =
|
|
497
|
-
Encoder::rank_of_int(key_extract_(buckets_data_[idx].back()));
|
|
498
|
-
if (mins_[idx] > enc)
|
|
499
|
-
mins_[idx] = enc;
|
|
500
|
-
assert(idx == bucket_map_(enc, insertion_limit_));
|
|
501
|
-
|
|
502
|
-
size_++;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
//! Insert element with priority key
|
|
506
|
-
bucket_index_type push(const value_type& value)
|
|
507
|
-
{
|
|
508
|
-
const auto enc = Encoder::rank_of_int(key_extract_(value));
|
|
509
|
-
assert(enc >= insertion_limit_);
|
|
510
|
-
|
|
511
|
-
const auto idx = bucket_map_(enc, insertion_limit_);
|
|
512
|
-
|
|
513
|
-
push_to_bucket(idx, value);
|
|
514
|
-
|
|
515
|
-
return idx;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
//! Insert element into specific bucket (useful if an item
|
|
519
|
-
//! was inserted into the same bucket directly before)
|
|
520
|
-
//! \warning Calling any method which updates the current
|
|
521
|
-
//! can invalidate this hint
|
|
522
|
-
void push_to_bucket(const bucket_index_type idx, const value_type& value)
|
|
523
|
-
{
|
|
524
|
-
const auto enc = Encoder::rank_of_int(key_extract_(value));
|
|
525
|
-
|
|
526
|
-
assert(enc >= insertion_limit_);
|
|
527
|
-
assert(idx == get_bucket(value));
|
|
528
|
-
|
|
529
|
-
if (buckets_data_[idx].empty())
|
|
530
|
-
filled_.set_bit(idx);
|
|
531
|
-
buckets_data_[idx].push_back(value);
|
|
532
|
-
|
|
533
|
-
if (mins_[idx] > enc)
|
|
534
|
-
mins_[idx] = enc;
|
|
535
|
-
|
|
536
|
-
size_++;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
//! Indicates whether size() == 0
|
|
540
|
-
bool empty() const
|
|
541
|
-
{
|
|
542
|
-
return size() == 0;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
//! Returns number of elements currently stored
|
|
546
|
-
size_t size() const
|
|
547
|
-
{
|
|
548
|
-
return size_;
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
//! Returns currently smallest key without updating the insertion limit
|
|
552
|
-
key_type peak_top_key() const
|
|
553
|
-
{
|
|
554
|
-
assert(!empty());
|
|
555
|
-
const auto first = filled_.find_lsb();
|
|
556
|
-
return Encoder::int_at_rank(mins_[first]);
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
//! Returns currently smallest key and data
|
|
560
|
-
//! \warning Updates insertion limit; no smaller keys can be inserted later
|
|
561
|
-
const value_type& top()
|
|
562
|
-
{
|
|
563
|
-
reorganize_();
|
|
564
|
-
return buckets_data_[current_bucket_].back();
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
//! Removes smallest element
|
|
568
|
-
//! \warning Updates insertion limit; no smaller keys can be inserted later
|
|
569
|
-
void pop()
|
|
570
|
-
{
|
|
571
|
-
reorganize_();
|
|
572
|
-
buckets_data_[current_bucket_].pop_back();
|
|
573
|
-
if (buckets_data_[current_bucket_].empty())
|
|
574
|
-
filled_.clear_bit(current_bucket_);
|
|
575
|
-
--size_;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
//! Exchanges the top buckets with an *empty* user provided bucket.
|
|
579
|
-
//! Can be used for bulk removals and may reduce allocation overhead
|
|
580
|
-
//! \warning The exchange bucket has to be empty
|
|
581
|
-
//! \warning Updates insertion limit; no smaller keys can be inserted later
|
|
582
|
-
void swap_top_bucket(bucket_data_type& exchange_bucket)
|
|
583
|
-
{
|
|
584
|
-
reorganize_();
|
|
585
|
-
|
|
586
|
-
assert(exchange_bucket.empty());
|
|
587
|
-
size_ -= buckets_data_[current_bucket_].size();
|
|
588
|
-
buckets_data_[current_bucket_].swap(exchange_bucket);
|
|
589
|
-
|
|
590
|
-
filled_.clear_bit(current_bucket_);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
//! Clears all internal queues and resets insertion limit
|
|
594
|
-
void clear()
|
|
595
|
-
{
|
|
596
|
-
for (auto& x : buckets_data_)
|
|
597
|
-
x.clear();
|
|
598
|
-
initialize_();
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
private:
|
|
602
|
-
KeyExtract key_extract_;
|
|
603
|
-
size_t size_{0};
|
|
604
|
-
ranked_key_type insertion_limit_{0};
|
|
605
|
-
size_t current_bucket_{0};
|
|
606
|
-
|
|
607
|
-
bucket_map_type bucket_map_;
|
|
608
|
-
|
|
609
|
-
std::array<bucket_data_type, num_buckets> buckets_data_;
|
|
610
|
-
|
|
611
|
-
std::array<ranked_key_type, num_buckets> mins_;
|
|
612
|
-
radix_heap_detail::BitArray<num_buckets> filled_;
|
|
613
|
-
|
|
614
|
-
void initialize_()
|
|
615
|
-
{
|
|
616
|
-
size_ = 0;
|
|
617
|
-
insertion_limit_ = std::numeric_limits<ranked_key_type>::min();
|
|
618
|
-
current_bucket_ = 0;
|
|
619
|
-
|
|
620
|
-
std::fill(mins_.begin(), mins_.end(),
|
|
621
|
-
std::numeric_limits<ranked_key_type>::max());
|
|
622
|
-
|
|
623
|
-
filled_.clear_all();
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
void reorganize_()
|
|
627
|
-
{
|
|
628
|
-
assert(!empty());
|
|
629
|
-
|
|
630
|
-
// nothing do to if we already know a suited bucket
|
|
631
|
-
if (TLX_LIKELY(!buckets_data_[current_bucket_].empty()))
|
|
632
|
-
{
|
|
633
|
-
assert(current_bucket_ < Radix);
|
|
634
|
-
return;
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
// mark current bucket as empty
|
|
638
|
-
mins_[current_bucket_] = std::numeric_limits<ranked_key_type>::max();
|
|
639
|
-
filled_.clear_bit(current_bucket_);
|
|
640
|
-
|
|
641
|
-
// find a non-empty bucket
|
|
642
|
-
const auto first_non_empty = filled_.find_lsb();
|
|
643
|
-
#ifndef NDEBUG
|
|
644
|
-
{
|
|
645
|
-
assert(first_non_empty < num_buckets);
|
|
646
|
-
|
|
647
|
-
for (size_t i = 0; i < first_non_empty; i++)
|
|
648
|
-
{
|
|
649
|
-
assert(buckets_data_[i].empty());
|
|
650
|
-
assert(mins_[i] == std::numeric_limits<ranked_key_type>::max());
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
assert(!buckets_data_[first_non_empty].empty());
|
|
654
|
-
}
|
|
655
|
-
#endif
|
|
656
|
-
|
|
657
|
-
if (TLX_LIKELY(first_non_empty < Radix))
|
|
658
|
-
{
|
|
659
|
-
// the first_non_empty non-empty bucket belongs to the smallest row
|
|
660
|
-
// it hence contains only one key and we do not need to reorganise
|
|
661
|
-
current_bucket_ = first_non_empty;
|
|
662
|
-
return;
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
// update insertion limit
|
|
666
|
-
{
|
|
667
|
-
const auto new_ins_limit = mins_[first_non_empty];
|
|
668
|
-
assert(new_ins_limit > insertion_limit_);
|
|
669
|
-
insertion_limit_ = new_ins_limit;
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
auto& data_source = buckets_data_[first_non_empty];
|
|
673
|
-
|
|
674
|
-
for (auto& x : data_source)
|
|
675
|
-
{
|
|
676
|
-
const ranked_key_type key = Encoder::rank_of_int(key_extract_(x));
|
|
677
|
-
assert(key >= mins_[first_non_empty]);
|
|
678
|
-
assert(first_non_empty == mins_.size() - 1 ||
|
|
679
|
-
key < mins_[first_non_empty + 1]);
|
|
680
|
-
const auto idx = bucket_map_(key, insertion_limit_);
|
|
681
|
-
assert(idx < first_non_empty);
|
|
682
|
-
|
|
683
|
-
// insert into bucket
|
|
684
|
-
if (buckets_data_[idx].empty())
|
|
685
|
-
filled_.set_bit(idx);
|
|
686
|
-
buckets_data_[idx].push_back(std::move(x));
|
|
687
|
-
if (mins_[idx] > key)
|
|
688
|
-
mins_[idx] = key;
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
data_source.clear();
|
|
692
|
-
|
|
693
|
-
// mark consumed bucket as empty
|
|
694
|
-
mins_[first_non_empty] = std::numeric_limits<ranked_key_type>::max();
|
|
695
|
-
filled_.clear_bit(first_non_empty);
|
|
696
|
-
|
|
697
|
-
// update global pointers and minima
|
|
698
|
-
current_bucket_ = filled_.find_lsb();
|
|
699
|
-
assert(current_bucket_ < Radix);
|
|
700
|
-
assert(!buckets_data_[current_bucket_].empty());
|
|
701
|
-
assert(mins_[current_bucket_] >= insertion_limit_);
|
|
702
|
-
}
|
|
703
|
-
};
|
|
704
|
-
|
|
705
|
-
/*!
|
|
706
|
-
* Helper to easily derive type of RadixHeap for a pre-C++17 compiler.
|
|
707
|
-
* Refer to RadixHeap for description of parameters.
|
|
708
|
-
*/
|
|
709
|
-
template <typename DataType, unsigned Radix = 8, typename KeyExtract = void>
|
|
710
|
-
auto make_radix_heap(KeyExtract&& key_extract)
|
|
711
|
-
-> RadixHeap<DataType, KeyExtract,
|
|
712
|
-
decltype(key_extract(std::declval<DataType>())), Radix>
|
|
713
|
-
{
|
|
714
|
-
return (RadixHeap<DataType, KeyExtract, decltype(key_extract(DataType{})),
|
|
715
|
-
Radix>{key_extract});
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
/*!
|
|
719
|
-
* This class is a variant of tlx::RadixHeap for data types which do not
|
|
720
|
-
* include the key directly. Hence each entry is stored as an (Key,Value)-Pair
|
|
721
|
-
* implemented with std::pair.
|
|
722
|
-
*/
|
|
723
|
-
template <typename KeyType, typename DataType, unsigned Radix = 8>
|
|
724
|
-
using RadixHeapPair =
|
|
725
|
-
RadixHeap<std::pair<KeyType, DataType>,
|
|
726
|
-
radix_heap_detail::PairKeyExtract<KeyType, DataType>, KeyType,
|
|
727
|
-
Radix>;
|
|
728
|
-
|
|
729
|
-
//! \}
|
|
730
|
-
|
|
731
|
-
} // namespace tlx
|
|
732
|
-
|
|
733
|
-
#endif // !TLX_CONTAINER_RADIX_HEAP_HEADER
|
|
734
|
-
|
|
735
|
-
/******************************************************************************/
|