MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / ExtractCluster

Method ExtractCluster

src/txgraph.cpp:1612–1636  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1610}
1611
1612std::unique_ptr<Cluster> TxGraphImpl::ExtractCluster(int level, QualityLevel quality, ClusterSetIndex setindex) noexcept
1613{
1614 Assume(quality != QualityLevel::NONE);
1615
1616 auto& clusterset = GetClusterSet(level);
1617 auto& quality_clusters = clusterset.m_clusters[int(quality)];
1618 Assume(setindex < quality_clusters.size());
1619
1620 // Extract the Cluster-owning unique_ptr.
1621 std::unique_ptr<Cluster> ret = std::move(quality_clusters[setindex]);
1622 ret->m_quality = QualityLevel::NONE;
1623 ret->m_setindex = ClusterSetIndex(-1);
1624
1625 // Clean up space in quality_cluster.
1626 auto max_setindex = quality_clusters.size() - 1;
1627 if (setindex != max_setindex) {
1628 // If the cluster was not the last element of quality_clusters, move that to take its place.
1629 quality_clusters.back()->m_setindex = setindex;
1630 quality_clusters[setindex] = std::move(quality_clusters.back());
1631 }
1632 // The last element of quality_clusters is now unused; drop it.
1633 quality_clusters.pop_back();
1634
1635 return ret;
1636}
1637
1638ClusterSetIndex TxGraphImpl::InsertCluster(int level, std::unique_ptr<Cluster>&& cluster, QualityLevel quality) noexcept
1639{

Callers 1

MoveToMainMethod · 0.80

Calls 3

sizeMethod · 0.45
backMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected