-package era.mi.logic.components;\r
-\r
-import java.util.List;\r
-\r
-import era.mi.logic.Bit;\r
-import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
-\r
-/**\r
- * This class models a simple on/off (ONE/ZERO) switch for user interaction.\r
- *\r
- * @author Christian Femers\r
- *\r
- */\r
-public class ManualSwitch implements Component \r
-{\r
- private WireArray output;\r
- private WireArrayInput outputI;\r
- private boolean isOn;\r
- \r
- public ManualSwitch(WireArray output) \r
- {\r
- if(output.length != 1)\r
- throw new IllegalArgumentException("Switch output can be only a single wire");\r
- this.output = output;\r
- this.outputI = output.createInput();\r
- }\r
- \r
- public void switchOn()\r
- {\r
- setState(true);\r
- }\r
- \r
- public void switchOff()\r
- {\r
- setState(false);\r
- }\r
- \r
- public void toggle()\r
- {\r
- setState(!isOn);\r
- }\r
- \r
- public void setState(boolean isOn)\r
- {\r
- if(this.isOn == isOn)\r
- return;\r
- this.isOn = isOn;\r
- outputI.feedSignals(getValue());\r
- }\r
- \r
- public boolean isOn()\r
- {\r
- return isOn;\r
- }\r
- \r
- public Bit getValue()\r
- {\r
- return isOn ? Bit.ONE : Bit.ZERO;\r
- }\r
-\r
- @Override\r
- public List<WireArray> getAllInputs() {\r
- return List.of();\r
- }\r
-\r
- @Override\r
- public List<WireArray> getAllOutputs() {\r
- return List.of(output);\r
- }\r
-\r
-}\r
+package era.mi.logic.components;
+
+import java.util.List;
+
+import era.mi.logic.types.Bit;
+import era.mi.logic.wires.Wire.WireEnd;
+
+/**
+ * This class models a simple on/off (ONE/ZERO) switch for user interaction.
+ *
+ * @author Christian Femers
+ *
+ */
+public class ManualSwitch implements Component
+{
+ private WireEnd output;
+ private boolean isOn;
+
+ public ManualSwitch(WireEnd output)
+ {
+ if (output.length() != 1)
+ throw new IllegalArgumentException("Switch output can be only a single wire");
+ this.output = output;
+ }
+
+ public void switchOn()
+ {
+ setState(true);
+ }
+
+ public void switchOff()
+ {
+ setState(false);
+ }
+
+ public void toggle()
+ {
+ setState(!isOn);
+ }
+
+ public void setState(boolean isOn)
+ {
+ if (this.isOn == isOn)
+ return;
+ this.isOn = isOn;
+ output.feedSignals(getValue());
+ }
+
+ public boolean isOn()
+ {
+ return isOn;
+ }
+
+ public Bit getValue()
+ {
+ return isOn ? Bit.ONE : Bit.ZERO;
+ }
+
+ @Override
+ public List<WireEnd> getAllInputs()
+ {
+ return List.of();
+ }
+
+ @Override
+ public List<WireEnd> getAllOutputs()
+ {
+ return List.of(output);
+ }
+
+}