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;
8 import era.mi.logic.wires.Wire.WireEnd;
9 import era.mi.logic.wires.WireObserver;
11 public class Connector implements WireObserver, Component
13 private boolean connected;
14 private final WireEnd a;
15 private final WireEnd b;
17 public Connector(WireEnd a, WireEnd 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(Wire initiator, BitVector oldValues)
53 Simulation.TIMELINE.addEvent(e -> update(initiator), 1);
56 private void update(Wire initiator)
58 if (initiator == a.getWire())
59 b.feedSignals(a.wireValuesExcludingMe());
61 a.feedSignals(b.wireValuesExcludingMe());
65 public List<WireEnd> getAllInputs()
71 public List<WireEnd> getAllOutputs()