Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
 /// <summary>
 /// Adds a node to the PDG
 /// </summary>
 /// <param name="pdgNode">Node to add</param>
 public void Add(PDGNode pdgNode)
 {
     _nodes.Add(pdgNode.MethodName, pdgNode);
     _mapping.Add(pdgNode.MethodName);
     _indexes.Add(pdgNode.MethodName, _mapping.Count - 1);
 }
Beispiel #3
0
 /// <summary>
 /// Adds a node to the PDG
 /// </summary>
 /// <param name="pdgNode">Node to add</param>
 public void Add(PDGNode pdgNode)
 {
     _nodes.Add(pdgNode.MethodName, pdgNode);
     _mapping.Add(pdgNode.MethodName);
     _indexes.Add(pdgNode.MethodName, _mapping.Count - 1);
 }
Beispiel #4
0
 /// <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;
 }