1 package era.mi.logic.components;
5 import era.mi.logic.Simulation;
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 implements WireObserver, Component
13 private boolean connected;
14 private final ReadWriteEnd a;
15 private final ReadWriteEnd b;
17 public Connector(ReadWriteEnd a, ReadWriteEnd b)
19 if (a.length() != b.length())
20 throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length(), b.length()));
34 public void disconnect()
41 public void setConnection(boolean connected)
50 public void update(ReadEnd initiator, BitVector oldValues)
53 Simulation.TIMELINE.addEvent(e -> update(initiator), 1);
56 private void update(ReadEnd initiator)
59 b.feedSignals(a.wireValuesExcludingMe());
61 a.feedSignals(b.wireValuesExcludingMe());
65 public List<ReadEnd> getAllInputs()
71 public List<ReadWriteEnd> getAllOutputs()