예제 #1
0
        private static List <GraphNode <SStatement> > FindNodes(Graph <SStatement> graph, SStatement statement1)
        {
            var hashSet = new HashSet <GraphNode <SStatement> >();

            foreach (var graphNode in graph.Nodes)
            {
                if (statement1 != null && graphNode.Value == statement1.GetStatement())
                {
                    hashSet.Add((GraphNode <SStatement>)graphNode);
                }
            }
            return(hashSet.ToList());
        }
예제 #2
0
        private void AddDirectedEdgeToElements(Graph <SStatement> graph, SStatement jumpTargetLabeledStatement,
                                               SStatement labeledStatement)
        {
            if (graph == null || jumpTargetLabeledStatement == null || labeledStatement == null)
            {
                return;
            }

            var a = FindNodes(graph, jumpTargetLabeledStatement.GetStatement());
            var b = FindNodes(graph, labeledStatement.GetStatement());

            foreach (var nodeStatement in a)
            {
                foreach (var statement in b)
                {
                    if (statement != nodeStatement)
                    {
                        graph.AddDirectedEdge(nodeStatement, statement, 1);
                    }
                }
            }
        }