/// <summary> /// Build a List of Columns from a PetriNet /// </summary> /// <param name="petriNet"></param> /// <returns></returns> /// <author>Jannik Arndt</author> public static List <Column> Build(PetriNet petriNet) { // Initialize GlobalColumnList.Clear(); Column firstColumn = new Column(0); Place startPlace = (Place)petriNet.GetSources()[0]; firstColumn.HashSetOfNodes.Add(startPlace); GlobalColumnList.Add(firstColumn); // Recursively add all columns AddPlace(startPlace, 1); // Correct the end-place Place endPlace = (Place)petriNet.GetSinks()[0]; Column temp = FindNode(endPlace); if (temp != null && temp.ColumnNumber < GlobalColumnList.Count) { temp.HashSetOfNodes.Remove(endPlace); TrimGlobalColumnList(); GetOrCreateColumn(GlobalColumnList.Count).HashSetOfNodes.Add(endPlace); } return(GlobalColumnList); }