BFSchema.BfsTopologicalSorting.Visit C# (CSharp) Method

Visit() private method

private Visit ( BfsTopologicalNode node ) : void
node BfsTopologicalNode
return void
        private void Visit(BfsTopologicalNode node)
        {
            //If the node was found in the depth stack, report an error as this means a circular dependence was found.
            if (stackVisitedNodes.Contains(node))
            {
                List<BfsTopologicalNode> reversed = new List<BfsTopologicalNode>(stackVisitedNodes);
                reversed.Reverse();
                StringBuilder b = new StringBuilder("A circular depencence was detected: ");
                foreach (BfsTopologicalNode topoNode in reversed)
                    b.Append( topoNode.NamedField.Name + " -> ");
                b.Append(node.NamedField.Name);
                BfsCompiler.ReportError(node.NamedField.SourceRange,b.ToString());
            }

            if (!node.Visited)
            {
                node.Visited = true;
                stackVisitedNodes.Push(node);
                foreach (BfsTopologicalNode subnode in node.Nodes)
                    Visit(subnode);
                stackVisitedNodes.Pop();
                if(this.nodes.Contains(node))
                    resultList.Add(node.NamedField);
            }
        }
BfsTopologicalSorting