private static void ComputeReferences(List<Node> allnodes)
{
Stack<Node> nodeStack = new Stack<Node>();
foreach (Node node in allnodes)
{
if (!node.Discovered)
{
DepthFirstSearch(node, nodeStack);
if (notComputable)
{
//acyclic, cancel
Console.WriteLine("Not computable!");
return;
}
}
}
//now in topological order, get the references filled out
while (nodeStack.Count != 0)
{
Node currentNode = nodeStack.Pop();
currentNode.GetComputedValue();
}
}