1 package era.mi.logic.components;
5 import era.mi.logic.timeline.Timeline;
6 import era.mi.logic.types.BitVector;
7 import era.mi.logic.wires.Wire.ReadEnd;
8 import era.mi.logic.wires.Wire.ReadWriteEnd;
9 import era.mi.logic.wires.WireObserver;
11 public class Connector extends Component implements WireObserver
13 private boolean connected;
14 private final ReadWriteEnd a;
15 private final ReadWriteEnd b;
17 public Connector(Timeline timeline, ReadWriteEnd a, ReadWriteEnd b)
20 if (a.length() != b.length())
21 throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length(), b.length()));
35 public void disconnect()
42 public void setConnection(boolean connected)
51 public void update(ReadEnd initiator, BitVector oldValues)
54 timeline.addEvent(e -> update(initiator), 1);
57 private void update(ReadEnd initiator)
60 b.feedSignals(a.wireValuesExcludingMe());
62 a.feedSignals(b.wireValuesExcludingMe());
66 public List<ReadEnd> getAllInputs()
72 public List<ReadWriteEnd> getAllOutputs()