// routeComputeClusters.bcpl

// Computes a vector of wired clusters in a net

// last modified by E. McCreight, June 26, 1981 1:38 PM

get "route.defs"

let ComputeClusters(clusterBaseVec, net) be
[
SetBlock(lv (clusterBaseVec!1), infinity, clusterBaseVec!0)
clusterBaseVec!0 = 1
clusterBaseVec!1 = 1
let cluster = net>>net.clusterList
while cluster ne empty do
[
AddToHeap(clusterBaseVec, cluster>>cluster.index+1, Usc)
cluster = cluster>>cluster.next
]
let itemsInCluster = clusterBaseVec!0
for i=itemsInCluster to 2 by -1 do
clusterBaseVec!i = PullFromHeap(clusterBaseVec, Usc)
clusterBaseVec!0 = itemsInCluster
]