Timeline now passed via constructor
[Mograsim.git] / era.mi / src / era / mi / logic / components / ManualSwitch.java
index 93c1319..450fa51 100644 (file)
@@ -2,9 +2,10 @@ package era.mi.logic.components;
 \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
+import era.mi.logic.timeline.Timeline;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\r
 \r
 /**\r
  * This class models a simple on/off (ONE/ZERO) switch for user interaction.\r
@@ -12,52 +13,61 @@ import era.mi.logic.wires.WireArray.WireArrayInput;
  * @author Christian Femers\r
  *\r
  */\r
-public class ManualSwitch implements Component {\r
-       private WireArray output;\r
-       private WireArrayInput outputI;\r
+public class ManualSwitch extends Component\r
+{\r
+       private ReadWriteEnd output;\r
        private boolean isOn;\r
 \r
-       public ManualSwitch(WireArray output) {\r
-               if (output.length != 1)\r
+       public ManualSwitch(Timeline timeline, ReadWriteEnd output)\r
+       {\r
+               super(timeline);\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
+       public void switchOn()\r
+       {\r
                setState(true);\r
        }\r
 \r
-       public void switchOff() {\r
+       public void switchOff()\r
+       {\r
                setState(false);\r
        }\r
 \r
-       public void toggle() {\r
+       public void toggle()\r
+       {\r
                setState(!isOn);\r
        }\r
 \r
-       public void setState(boolean isOn) {\r
+       public void setState(boolean isOn)\r
+       {\r
                if (this.isOn == isOn)\r
                        return;\r
                this.isOn = isOn;\r
-               outputI.feedSignals(getValue());\r
+               output.feedSignals(getValue());\r
        }\r
 \r
-       public boolean isOn() {\r
+       public boolean isOn()\r
+       {\r
                return isOn;\r
        }\r
 \r
-       public Bit getValue() {\r
+       public Bit getValue()\r
+       {\r
                return isOn ? Bit.ONE : Bit.ZERO;\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<ReadEnd> getAllInputs()\r
+       {\r
                return List.of();\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<ReadWriteEnd> getAllOutputs()\r
+       {\r
                return List.of(output);\r
        }\r
 \r