1 package era.mi.logic.components;
5 import era.mi.logic.Bit;
6 import era.mi.logic.wires.WireArray;
7 import era.mi.logic.wires.WireArray.WireArrayInput;
10 * This class models a simple on/off (ONE/ZERO) switch for user interaction.
12 * @author Christian Femers
15 public class ManualSwitch implements Component {
16 private WireArray output;
17 private WireArrayInput outputI;
20 public ManualSwitch(WireArray output) {
21 if (output.length != 1)
22 throw new IllegalArgumentException("Switch output can be only a single wire");
24 this.outputI = output.createInput();
27 public void switchOn() {
31 public void switchOff() {
35 public void toggle() {
39 public void setState(boolean isOn) {
40 if (this.isOn == isOn)
43 outputI.feedSignals(getValue());
46 public boolean isOn() {
50 public Bit getValue() {
51 return isOn ? Bit.ONE : Bit.ZERO;
55 public List<WireArray> getAllInputs() {
60 public List<WireArray> getAllOutputs() {
61 return List.of(output);