Пример #1
0
        public static void Serialize(SoftMutableBidirectionalGraph <CFGNode, CFGEdge> graph, string path)
        {
            var ser = new GraphMLSerializer <CFGNode, CFGEdge, SoftMutableBidirectionalGraph <CFGNode, CFGEdge> >();

            using (var writer = XmlWriter.Create(path + "temp.graphml", new XmlWriterSettings {
                Indent = true, WriteEndDocumentOnClose = false
            }))
            {
                ser.Serialize(writer, graph, v => v.Id.ToString(), e => e.Id.ToString());
            }
        }
Пример #2
0
        public static SoftMutableBidirectionalGraph <CFGNode, CFGEdge> Deserialize(string path)
        {
            var deser = new GraphMLDeserializer <CFGNode, CFGEdge, SoftMutableBidirectionalGraph <CFGNode, CFGEdge> >();
            var graph = new SoftMutableBidirectionalGraph <CFGNode, CFGEdge>();
            var ivf   = new IdentifiableVertexFactory <CFGNode>(CFGNode.Factory);
            var ief   = new IdentifiableEdgeFactory <CFGNode, CFGEdge>(CFGEdge.Factory);

            using (var reader = XmlReader.Create(path))
            {
                deser.Deserialize(reader, graph, ivf, ief);
            }
            ReplaceLineBreaks(graph, false);
            return(graph);
        }
Пример #3
0
 private static void ReplaceLineBreaks(SoftMutableBidirectionalGraph <CFGNode, CFGEdge> graph, bool serialize)
 {
     if (serialize)
     {
         foreach (var v in graph.Vertices)
         {
             v.PathCondition            = v.PathCondition.Replace(Environment.NewLine, "[LB]");
             v.IncrementalPathCondition = v.IncrementalPathCondition.Replace(Environment.NewLine, "[LB]");
         }
     }
     else
     {
         foreach (var v in graph.Vertices)
         {
             v.PathCondition            = v.PathCondition.Replace("[LB]", Environment.NewLine);
             v.IncrementalPathCondition = v.IncrementalPathCondition.Replace("[LB]", Environment.NewLine);
         }
     }
 }