/// <summary> /// Standard Konstruktor /// </summary> public Programm() { _actStats = null; _stm = new ListStm(this, null, Config.EXECUTE.BASE_STM); _stack = new Stack<DataSet>(); _log = new LinkedList<Tuple<Statement, DataSet>>(); _actRuntime = 0; }
/// <summary> /// Kontruktor. /// </summary> /// <param name="programm">Die Programm Klasse, zu dem der Baustein gehoert.<</param> /// <param name="parent">Der Baustein, in dem sich dieser Baustein befindet.</param> /// <param name="brick">Art des Bausteins.</param> public Statement(Programm programm, ListStm parent, Config.EXECUTE brick) { this.programm = programm; this.parent = parent; this.brick = brick; this.content = switchContent(brick); }
/// <summary> /// Konstruktor. Ruft zusaetzlich den Konstruktor der Klasse Statement auf. /// </summary> /// <param name="programm">Die Programm Klasse, zu dem der Baustein gehoert.</param> /// <param name="parent">Der Baustein, in dem sich dieser Baustein befindet.</param> /// <param name="brick">Art des Bausteins.</param> public ListStm(Programm programm, ListStm parent, Config.EXECUTE brick) : base(programm, parent, brick) { stmList = new LinkedList<Statement>(); stmList.AddLast(new Statement(programm, this, Config.EXECUTE.LOOP_END)); }
/// <summary> /// Prueft ob sich der uebergebene Baustein in der stmList befindet. /// </summary> /// <param name="stm">Gesuchter Baustein.</param> /// <param name="listStm">Zu durchsuchende Liste.</param> /// <returns>True, wenn der Baustein gefunden wurde. False, wenn nicht.</returns> public bool stmListContains(Statement stm, ListStm listStm) { if (stm == listStm) return true; foreach (Statement x in listStm.StmList) { if (x is ListStm) { if (stmListContains(stm, x as ListStm)) return true; } else if(x == stm) { return true; } } return false; }
/// <summary> /// Erstellt aus der rekursiven Schachtelung der Statement und ListStm Klassen eine Listenstruktur. /// </summary> /// <param name="baseStm">Referenz auf ein ListStm.</param> /// <returns>Algorithmus Bausteine in Form einer Liste.</returns> private LinkedList<Statement> getActualStmNesting(ListStm baseStm) { LinkedList<Statement> itemList = new LinkedList<Statement>(); itemList.AddLast(baseStm); foreach (Statement x in (baseStm as ListStm).StmList) { if (x is ListStm) { itemList = concatList(itemList, getActualStmNesting(x as ListStm)); } else { itemList.AddLast(x); } } return itemList; }