From 78e205f31aeccbdab21b5e51e1395faa8144f7bf Mon Sep 17 00:00:00 2001
From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de>
Date: Tue, 6 Oct 2020 20:34:04 +0200
Subject: [PATCH] Big change for Variablehandling - UML is outdated

---
 .../ardublock/simulator/simcode/SimCode.java  | 49 ++++++++++++++-
 .../simcode/comm/CodeConnectString.java       |  2 +-
 .../simcode/comm/CodeSerialPrint.java         |  2 +-
 .../simulator/simcode/control/CodeDelay.java  |  2 +-
 .../simulator/simcode/control/CodeElse.java   |  8 ++-
 .../simulator/simcode/control/CodeElseIf.java |  8 ++-
 .../simulator/simcode/control/CodeFor.java    |  8 ++-
 .../simcode/control/CodeForCount.java         | 13 ++--
 .../simulator/simcode/control/CodeIf.java     |  8 ++-
 .../simulator/simcode/control/CodeWhile.java  |  8 ++-
 .../simcode/control/CodeWhileMillis.java      | 10 +++-
 .../simcode/datatypes/SimTypeBool.java        |  2 +-
 .../simcode/datatypes/SimTypeIf.java          |  2 +-
 .../simcode/datatypes/SimTypeInt.java         |  2 +-
 .../simcode/datatypes/SimTypeString.java      |  2 +-
 .../functions/CodeExecuteFunction.java        |  2 +-
 .../simcode/functions/SimCodeFunction.java    | 60 +++----------------
 .../simulator/simcode/io/CodeAnalogRead.java  |  2 +-
 .../simulator/simcode/io/CodeAnalogWrite.java |  2 +-
 .../simulator/simcode/io/CodeDigitalRead.java |  2 +-
 .../simcode/io/CodeDigitalWrite.java          |  2 +-
 .../simulator/simcode/logic/CodeAND.java      |  2 +-
 .../simcode/logic/CodeBoolEqual.java          |  2 +-
 .../simcode/logic/CodeBoolUnequal.java        |  2 +-
 .../simcode/logic/CodeIntBigger.java          |  2 +-
 .../simcode/logic/CodeIntBiggerEqual.java     |  2 +-
 .../simulator/simcode/logic/CodeIntEqual.java |  2 +-
 .../simcode/logic/CodeIntSmaller.java         |  2 +-
 .../simcode/logic/CodeIntSmallerEqual.java    |  2 +-
 .../simcode/logic/CodeIntUnequal.java         |  2 +-
 .../simulator/simcode/logic/CodeNOT.java      |  2 +-
 .../simulator/simcode/logic/CodeOR.java       |  2 +-
 .../simcode/logic/CodeStringEqual.java        |  2 +-
 .../simcode/logic/CodeStringUnequal.java      |  2 +-
 .../simulator/simcode/math/CodeAbs.java       |  2 +-
 .../simulator/simcode/math/CodeAdd.java       |  2 +-
 .../simulator/simcode/math/CodeDivison.java   |  2 +-
 .../simulator/simcode/math/CodeLimit.java     |  2 +-
 .../simulator/simcode/math/CodeMap.java       |  2 +-
 .../simulator/simcode/math/CodeMap10to8.java  |  2 +-
 .../simulator/simcode/math/CodeMax.java       |  2 +-
 .../simulator/simcode/math/CodeMin.java       |  2 +-
 .../simulator/simcode/math/CodeMinus.java     |  2 +-
 .../simulator/simcode/math/CodeModulo.java    |  2 +-
 .../simulator/simcode/math/CodeProduct.java   |  2 +-
 .../simulator/simcode/math/CodeRandMax.java   |  2 +-
 .../simcode/math/CodeRandMinMax.java          |  2 +-
 .../simcode/vars/CodeBoolCreate.java          |  2 +-
 .../simulator/simcode/vars/CodeBoolGet.java   |  4 +-
 .../simulator/simcode/vars/CodeBoolSet.java   |  2 +-
 .../simulator/simcode/vars/CodeIntCreate.java |  2 +-
 .../simulator/simcode/vars/CodeIntGet.java    |  2 +-
 .../simulator/simcode/vars/CodeIntSet.java    |  2 +-
 .../simulator/simcode/vars/CodeMillis.java    |  2 +-
 54 files changed, 146 insertions(+), 118 deletions(-)

diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
index 18c7105..5c90307 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java
@@ -3,7 +3,10 @@
  */
 package tec.letsgoing.ardublock.simulator.simcode;
 
+import java.util.Vector;
+
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 
 /**
@@ -17,6 +20,10 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
  *
  */
 public abstract class SimCode {
+	protected Vector<Variable> vars = new Vector<Variable>();
+	protected boolean isMain = false;
+	protected Arduino arduino;
+	protected SimCode prevStack=null;
 
 	/**
 	 * Hauptaufruf, welcher während der Simulation ausgeführt wird. Dieser enthält die komplette Logik des Blocks.
@@ -24,8 +31,48 @@ public abstract class SimCode {
 	 * @param functionHead Aktueller Funktionskopf um lokale Variablen zu ermöglichen.
 	 * @return Ein SimCode Objekt sollte eines als "Ergebnis" entstehen. Ansonsten null
 	 */
-	public abstract SimCode run(Arduino _arduino, SimCodeFunction functionHead);
+	public abstract SimCode run(Arduino _arduino, SimCode functionHead);
 
 	public abstract String toString();
+	
+	public void createVariable(String _name, SimCode _value) {
+		if (!isMain) {
+			vars.add(new Variable(_name));
+			vars.lastElement().setValue(_value);
+		} else {
+			arduino.createVariable(_name, _value);
+		}
+	}
+
+	public boolean setVariable(String _name, SimCode _value) {
+		for (Variable var : vars) {
+			if (var.getName().equals(_name)) {
+				var.setValue(_value);
+				return true;
+			}
+		}
+		if (prevStack!=null) {
+		if(prevStack.setVariable(_name, _value)) 
+			return true;
+		}
+		if (arduino.setVariable(_name, _value))
+			return true;
+
+		return false;
+	}
+
+	public SimCode readVariable(String _name) {
+
+		for (Variable var : vars) {
+			if (var.getName().equals(_name)) {
+				return var.getValue();
+			}
+		}
+		if (prevStack!=null) {
+			return prevStack.readVariable(_name);
+		}
+		return arduino.readVariable(_name);
+
+	}
 
 }
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
index e53a56b..454d740 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java
@@ -26,7 +26,7 @@ public class CodeConnectString extends SimCode {
 	}
 
 	@Override
-	public SimTypeString run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeString run(Arduino _arduino, SimCode functionHead) {
 		// TODO Added Space between to Inputs
 		out = "" + block1.run(_arduino, functionHead).toString() + " " + block2.run(_arduino, functionHead).toString();
 		return new SimTypeString(out);
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
index 89fa78d..234dc85 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java
@@ -25,7 +25,7 @@ public class CodeSerialPrint extends SimCode {
 		boolBlock = _boolBlock;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		String content;
 		content = stringBlock.run(_arduino, functionHead).toString();
 		if (boolBlock.run(_arduino, functionHead).getValue()) {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
index c9956a4..4da7881 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java
@@ -21,7 +21,7 @@ public class CodeDelay extends SimCode {
 		codeBlock = _codeBlock;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		int duration = (int) codeBlock.run(_arduino, functionHead).getValue();
 		if (!_arduino.getStop()) {
 			try {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
index 5fa4212..c8779be 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -25,10 +26,13 @@ public class CodeElse extends SimTypeIf {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
 
 		for (SimCode block : codeBlocks) {
-			block.run(_arduino, functionHead);
+			block.run(_arduino, this);
 		}
 
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
index ab0984a..929f80c 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
@@ -29,11 +30,14 @@ public class CodeElseIf extends SimTypeIf {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (condition.run(_arduino, functionHead).getValue()) {
 			// Condition met.
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode block : codeBlocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 			return null;
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
index 3ed8ae1..808612d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -27,10 +28,13 @@ public class CodeFor extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
 		for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) {
 			for (SimCode code : codeBlocks) {
-				code.run(_arduino, functionHead);
+				code.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
index 97ca796..24b4faf 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
@@ -29,14 +30,16 @@ public class CodeForCount extends SimCode {
 		codeblocks = _blocks;
 	}
 
-	// TODO For/While Mit Vars ausrüsten
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		functionHead.createVariable(varname.toString(), new SimTypeInt(0));
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
+		this.createVariable(varname.toString(), new SimTypeInt(0));
 		for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) {
-			functionHead.setVariable(varname.toString(), new SimTypeInt(i));
+			this.setVariable(varname.toString(), new SimTypeInt(i));
 			for (SimCode block : codeblocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
index 7354a98..a1e56c1 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf;
@@ -32,10 +33,13 @@ public class CodeIf extends SimTypeIf {
 	/**
 	 * Returns True if the Condition is met or false if it isnt
 	 */
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (condition.run(_arduino, functionHead).getValue()) {
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode block : codeBlocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 			return null;// True Case
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
index a08883e..901a0f3 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool;
 import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
@@ -26,10 +27,13 @@ public class CodeWhile extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		while (!_arduino.getStop() && condition.run(_arduino, functionHead).getValue()) {
+			super.prevStack=functionHead;
+			super.arduino=_arduino;
+			super.vars = new Vector<Variable>();
 			for (SimCode code : codeBlocks) {
-				code.run(_arduino, functionHead);
+				code.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
index 2d798d5..47dd3a5 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java
@@ -6,6 +6,7 @@ package tec.letsgoing.ardublock.simulator.simcode.control;
 import java.util.Vector;
 
 import tec.letsgoing.ardublock.simulator.arduino.Arduino;
+import tec.letsgoing.ardublock.simulator.arduino.Variable;
 import tec.letsgoing.ardublock.simulator.simcode.SimCode;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt;
 import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString;
@@ -30,14 +31,17 @@ public class CodeWhileMillis extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
-		functionHead.createVariable(varname.toString(), new SimTypeInt(_arduino.getMillis()));
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
+		super.prevStack=functionHead;
+		super.arduino=_arduino;
+		super.vars = new Vector<Variable>();
+		this.setVariable(varname.toString(), new SimTypeInt(_arduino.getMillis()));
 		int startTime = _arduino.getMillis();
 		int dura = duration.run(_arduino, functionHead).getValue();
 		while (startTime + dura > _arduino.getMillis()) {
 
 			for (SimCode block : blocks) {
-				block.run(_arduino, functionHead);
+				block.run(_arduino, this);
 			}
 		}
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
index ea4d295..2e86f96 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java
@@ -26,7 +26,7 @@ public class SimTypeBool extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimTypeBool ret = (SimTypeBool) followBlock.run(_arduino, functionHead);
 			value = ret.getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
index 3ab3d48..0efd6b4 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java
@@ -18,7 +18,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public abstract class SimTypeIf extends SimCode {
 
 	@Override
-	public abstract SimCode run(Arduino _arduino, SimCodeFunction functionHead);
+	public abstract SimCode run(Arduino _arduino, SimCode functionHead);
 
 	@Override
 	public abstract String toString();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
index 1c91f63..d6e4554 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java
@@ -26,7 +26,7 @@ public class SimTypeInt extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimTypeInt ret = (SimTypeInt) followBlock.run(_arduino, functionHead);
 			value = ret.getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
index 39fac7a..cb79ed0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java
@@ -26,7 +26,7 @@ public class SimTypeString extends SimCode {
 	}
 
 	@Override
-	public SimTypeString run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeString run(Arduino _arduino, SimCode functionHead) {
 		if (followBlock instanceof SimCode) {
 			SimCode ret = followBlock.run(_arduino, functionHead);
 			content = ret.toString();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
index a0f876f..b33ebce 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java
@@ -20,7 +20,7 @@ public class CodeExecuteFunction extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.getFunction(name).run(_arduino, functionHead);
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
index 25171c6..c859444 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java
@@ -16,31 +16,25 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode;
  *
  */
 public class SimCodeFunction extends SimCode {
-	// FIXME Jede Variable ist "lokal" = dem nächst höheren Funktionsaufruf
-	// zugeordnet, während Ardublock global ist.
-	// FIXME Auch machen IF und While keine neuen Stacks auf sondern schieben Ihre
-	// Variabeln auch in den "Loop" Block
 	private String name;
 	private Vector<SimCode> codeBlocks = new Vector<SimCode>();
-	private Vector<Variable> vars = new Vector<Variable>();
-	private boolean isMain = false;
-	private Arduino arduino;
-	private SimCodeFunction prevStack=null;
+
+
 
 	public SimCodeFunction(String _name, Vector<SimCode> vec) {
 		name = _name;
 		codeBlocks = vec;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (functionHead == null) {
-			isMain = true;
+			super.isMain = true;
 		} else {
-			prevStack=functionHead;
+			super.prevStack=functionHead;
 		}
 		
-		this.arduino = _arduino;
-		vars = new Vector<Variable>();
+		super.arduino = _arduino;
+		super.vars = new Vector<Variable>();
 		for (SimCode code : codeBlocks) {
 			code.run(_arduino, this);
 		}
@@ -51,45 +45,7 @@ public class SimCodeFunction extends SimCode {
 		return name;
 	}
 
-	public void createVariable(String _name, SimCode _value) {
-		if (!isMain) {
-			vars.add(new Variable(_name));
-			vars.lastElement().setValue(_value);
-		} else {
-			arduino.createVariable(_name, _value);
-		}
-	}
-
-	public boolean setVariable(String _name, SimCode _value) {
-		for (Variable var : vars) {
-			if (var.getName().equals(_name)) {
-				var.setValue(_value);
-				return true;
-			}
-		}
-		if (prevStack!=null) {
-		if(prevStack.setVariable(_name, _value)) 
-			return true;
-		}
-		if (arduino.setVariable(_name, _value))
-			return true;
-
-		return false;
-	}
-
-	public SimCode readVariable(String _name) {
-
-		for (Variable var : vars) {
-			if (var.getName().equals(_name)) {
-				return var.getValue();
-			}
-		}
-		if (prevStack!=null) {
-			return prevStack.readVariable(_name);
-		}
-		return arduino.readVariable(_name);
-
-	}
+	
 
 	@Override
 	public String toString() {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
index 27ba239..13aa62a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java
@@ -22,7 +22,7 @@ public class CodeAnalogRead extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int ans = _arduino.analogRead(pin.run(_arduino, functionHead).getValue());
 		return new SimTypeInt(ans);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
index 974f531..7ded6d0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java
@@ -24,7 +24,7 @@ public class CodeAnalogWrite extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.analogWrite(pin.run(_arduino, functionHead).getValue(), value.run(_arduino, functionHead).getValue());
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
index 9d291e0..2da3999 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java
@@ -23,7 +23,7 @@ public class CodeDigitalRead extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		boolean ans = _arduino.digitalRead(pin.run(_arduino, functionHead).getValue());
 		return new SimTypeBool(ans);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
index 989930c..af4acbf 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java
@@ -24,7 +24,7 @@ public class CodeDigitalWrite extends SimCode {
 		value = _value;
 	}
 
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		_arduino.digitalWrite((int) pin.run(_arduino, functionHead).getValue(),
 				value.run(_arduino, functionHead).getValue());
 		return null;
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
index 9af25c8..540221a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java
@@ -24,7 +24,7 @@ public class CodeAND extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() && b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
index a315e41..c2fcfb5 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java
@@ -24,7 +24,7 @@ public class CodeBoolEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() == b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
index 1334835..f962ace 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java
@@ -24,7 +24,7 @@ public class CodeBoolUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() != b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
index 76df1b6..03d880f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java
@@ -25,7 +25,7 @@ public class CodeIntBigger extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() > b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
index fcaf93e..31e6aab 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java
@@ -25,7 +25,7 @@ public class CodeIntBiggerEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() >= b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
index fde07fd..b5618de 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java
@@ -25,7 +25,7 @@ public class CodeIntEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() == b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
index 3ed7851..d3c833d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java
@@ -25,7 +25,7 @@ public class CodeIntSmaller extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() < b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
index 8025864..5247e7a 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java
@@ -25,7 +25,7 @@ public class CodeIntSmallerEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() <= b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
index c9ce10c..18a0c4d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java
@@ -25,7 +25,7 @@ public class CodeIntUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() != b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
index ed0629a..d76be9d 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java
@@ -22,7 +22,7 @@ public class CodeNOT extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (!b1.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
index 68d8568..e5eb077 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java
@@ -24,7 +24,7 @@ public class CodeOR extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).getValue() || b2.run(_arduino, functionHead).getValue()) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
index a350363..79fd105 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java
@@ -25,7 +25,7 @@ public class CodeStringEqual extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (b1.run(_arduino, functionHead).toString().equals(b2.run(_arduino, functionHead).toString())) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
index d74a969..9b8b331 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java
@@ -25,7 +25,7 @@ public class CodeStringUnequal extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		if (!b1.run(_arduino, functionHead).toString().equals(b2.run(_arduino, functionHead).toString())) {
 			return new SimTypeBool(true);
 		} else {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
index 3ebb920..3825236 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java
@@ -22,7 +22,7 @@ public class CodeAbs extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(Math.abs(value.run(_arduino, functionHead).getValue()));
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
index 42eb37c..c3496b0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java
@@ -24,7 +24,7 @@ public class CodeAdd extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() + block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
index 6d09733..56d8ae0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java
@@ -24,7 +24,7 @@ public class CodeDivison extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() / block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
index 9ab9220..89b7cf2 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java
@@ -26,7 +26,7 @@ public class CodeLimit extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		int v = value.run(_arduino, functionHead).getValue();
 		int low = lowerLimit.run(_arduino, functionHead).getValue();
 		int high = upperLimit.run(_arduino, functionHead).getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
index 2142d69..7ba4cc4 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java
@@ -38,7 +38,7 @@ public class CodeMap extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		float v = value.run(_arduino, functionHead).getValue();
 		float fL = fromLow.run(_arduino, functionHead).getValue();
 		float fH = fromHigh.run(_arduino, functionHead).getValue();
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
index be723a4..8268abd 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java
@@ -23,7 +23,7 @@ public class CodeMap10to8 extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(value.run(_arduino, functionHead).getValue() / 4);
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
index 66e257d..65a161f 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java
@@ -24,7 +24,7 @@ public class CodeMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(
 				Math.max(block1.run(_arduino, functionHead).getValue(), block2.run(_arduino, functionHead).getValue()));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
index 5a62b0b..163cfc8 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java
@@ -24,7 +24,7 @@ public class CodeMin extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(
 				Math.min(block1.run(_arduino, functionHead).getValue(), block2.run(_arduino, functionHead).getValue()));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
index 3e75427..71cc36b 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java
@@ -24,7 +24,7 @@ public class CodeMinus extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() - block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
index 458f6ae..34606a8 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java
@@ -24,7 +24,7 @@ public class CodeModulo extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() % block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
index b364513..bca6e91 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java
@@ -24,7 +24,7 @@ public class CodeProduct extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		out = block1.run(_arduino, functionHead).getValue() * block2.run(_arduino, functionHead).getValue();
 		return new SimTypeInt(out);
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
index 592ca70..3ad1a33 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java
@@ -22,7 +22,7 @@ public class CodeRandMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int randMax = max.run(_arduino, functionHead).getValue();
 		return new SimTypeInt((int) Math.floor(Math.random() * randMax));
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
index 9603fae..dd491da 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java
@@ -24,7 +24,7 @@ public class CodeRandMinMax extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		int randMax = max.run(_arduino, functionHead).getValue();
 		int randMin = min.run(_arduino, functionHead).getValue();
 		return new SimTypeInt((int) Math.floor(Math.random() * (randMax - randMin)) + randMin);
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
index be35918..add4107 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java
@@ -25,7 +25,7 @@ public class CodeBoolCreate extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
index d3813b8..9f6decd 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java
@@ -23,9 +23,7 @@ public class CodeBoolGet extends SimCode {
 	}
 
 	@Override
-	public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) {
-		// FIXME Für alle Get und Set müssen die oberligenenden "Stackschichten"
-		// berücksichtigt werden.
+	public SimTypeBool run(Arduino _arduino, SimCode functionHead) {
 		return (SimTypeBool) functionHead.readVariable(var.run(_arduino, functionHead).toString());
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
index af5adf0..c104567 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java
@@ -25,7 +25,7 @@ public class CodeBoolSet extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		// Wenn die Variable nicht vorhanden ist, so erzeuge Sie.
 		if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(),
 				new SimTypeBool(value.run(_arduino, functionHead).getValue()))) {
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
index d916ec7..39fd8ca 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java
@@ -25,7 +25,7 @@ public class CodeIntCreate extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
 		return null;
 	}
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
index 5357904..8399951 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java
@@ -23,7 +23,7 @@ public class CodeIntGet extends SimCode {
 	}
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return (SimTypeInt) functionHead.readVariable(var.run(_arduino, functionHead).toString());
 	}
 
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
index 828da14..ab6ffc0 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java
@@ -25,7 +25,7 @@ public class CodeIntSet extends SimCode {
 	}
 
 	@Override
-	public SimCode run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimCode run(Arduino _arduino, SimCode functionHead) {
 		if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(),
 				new SimTypeInt(value.run(_arduino, functionHead).getValue()))) {
 			functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead));
diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
index e59f633..04e93a4 100644
--- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
+++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java
@@ -17,7 +17,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction;
 public class CodeMillis extends SimCode {
 
 	@Override
-	public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) {
+	public SimTypeInt run(Arduino _arduino, SimCode functionHead) {
 		return new SimTypeInt(_arduino.getMillis());
 	}
 
-- 
GitLab