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()); }
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); } } } }