1 package era.mi.logic.components;
5 import era.mi.logic.Bit;
6 import era.mi.logic.Simulation;
7 import era.mi.logic.wires.WireArray;
8 import era.mi.logic.wires.WireArray.WireArrayEnd;
9 import era.mi.logic.wires.WireArrayObserver;
11 public class Connector implements WireArrayObserver, Component
13 private boolean connected;
14 private final WireArray a;
15 private final WireArray b;
16 private final WireArrayEnd aI;
17 private final WireArrayEnd bI;
19 public Connector(WireArray a, WireArray b)
21 if (a.length != b.length)
22 throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length, b.length));
38 public void disconnect()
45 public void setConnection(boolean connected)
54 public void update(WireArray initiator, Bit[] oldValues)
57 Simulation.TIMELINE.addEvent(e -> update(initiator), 1);
60 private void update(WireArray initiator)
63 bI.feedSignals(aI.wireValuesExcludingMe());
65 aI.feedSignals(bI.wireValuesExcludingMe());
69 public List<WireArray> getAllInputs()
75 public List<WireArray> getAllOutputs()