/// <summary> /// Deep copy constructor for PDG /// </summary> /// <param name="pdg">Original PDG</param> /// <returns>New PDG</returns> public static PDG DeepCopy(PDG pdg) { PDG pdgCopy = new PDG(); pdgCopy._nodes = new SerializableDictionary <string, PDGNode>(); foreach (KeyValuePair <string, PDGNode> kvpNode in pdg._nodes) { PDGNode nodeCopy = new PDGNode(kvpNode.Value.MethodName); foreach (PDGEdge edge in kvpNode.Value.OutgoingEdges) { nodeCopy.SetEdgeWeight(edge.OutgoingNodeID, edge.Weight); } pdgCopy.Add(nodeCopy); } return(pdgCopy); }
/// <summary> /// Deep copy constructor for PDG /// </summary> /// <param name="pdg">Original PDG</param> /// <returns>New PDG</returns> public static PDG DeepCopy(PDG pdg) { PDG pdgCopy = new PDG(); pdgCopy._nodes = new SerializableDictionary<string,PDGNode>(); foreach (KeyValuePair<string, PDGNode> kvpNode in pdg._nodes) { PDGNode nodeCopy = new PDGNode(kvpNode.Value.MethodName); foreach (PDGEdge edge in kvpNode.Value.OutgoingEdges) { nodeCopy.SetEdgeWeight(edge.OutgoingNodeID, edge.Weight); } pdgCopy.Add(nodeCopy); } return pdgCopy; }