Exemplo n.º 1
0
        /// <summary>
        /// Imports a PNML document and converts it to a PetriNet instance.
        /// </summary>
        /// <param name="document">An instance of PnmlDocument to import.</param>
        /// <returns>An instance of PetriNet that represents the Petri Net extracted from the document.</returns>
        public PetriNet Import(PersistentDocument document)
        {
            var petriNet = new PetriNet();

            // Loading PNML document content.
            var xDocument = GetXmlDocumentFromPnmlDocument(document);

            // Loading Places and Transitions.
            var nonArcElements = xDocument.Element("pnml").Element("net").Elements().Where(element => element.Name != "arc");
            foreach (var xPNElement in nonArcElements)
            {
                switch (xPNElement.Name.ToString())
                {
                    case "place":
                        var place = GetPlaceObjectFromPnmlElement(xPNElement);
                        if (place != null)
                        {
                            petriNet.Elements.Add(place);
                        }
                        break;

                    case "transition":
                        var transition = GetTransitionObjectFromPnmlElement(xPNElement);
                        if (transition != null)
                        {
                            petriNet.Elements.Add(transition);
                        }
                        break;
                }
            }

            // Loading Arcs.
            var arcElements = xDocument.Element("pnml").Element("net").Elements().Where(element => element.Name == "arc");
            foreach (var xArcElement in arcElements)
            {
                var arc = GetArcObjectFromPnmlElement(petriNet, xArcElement);
                if (arc != null)
                {
                    petriNet.Elements.Add(arc);
                }
            }

            petriNet.UpdateElementRelationships();
            return petriNet;
        }
Exemplo n.º 2
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PersistentDocument obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Converts the PnmlDocument to XDocument.
 /// </summary>
 /// <param name="document">An instance of PnmlDocument to convert to XML.</param>
 /// <returns>An instance of XDocument containing the PNML document.</returns>
 private static XDocument GetXmlDocumentFromPnmlDocument(PersistentDocument document)
 {
     XDocument xDocument;
     if (document is PnmlDocument)
     {
         xDocument = (document as PnmlDocument).XmlDocument;
     }
     else
     {
         using (StringReader reader = new StringReader(document.GetContent()))
         {
             xDocument = XDocument.Load(reader);
         }
     }
     return xDocument;
 }
Exemplo n.º 4
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PersistentDocument obj)
 {
     return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }