1 package net.mograsim.logic.core.components;
5 import net.mograsim.logic.core.LogicObservable;
6 import net.mograsim.logic.core.LogicObserver;
7 import net.mograsim.logic.core.timeline.Timeline;
8 import net.mograsim.logic.core.wires.Wire.ReadEnd;
9 import net.mograsim.logic.core.wires.Wire.ReadWriteEnd;
11 public class Connector extends Component implements LogicObserver
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()));
24 a.registerObserver(this);
25 b.registerObserver(this);
35 public void disconnect()
42 public void setConnection(boolean connected)
51 public void update(LogicObservable initiator)
54 timeline.addEvent(e -> innerUpdate(initiator), 1);
57 private void innerUpdate(LogicObservable initiator)
60 b.feedSignals(a.wireValuesExcludingMe());
62 a.feedSignals(b.wireValuesExcludingMe());
66 public List<ReadEnd> getAllInputs()
72 public List<ReadWriteEnd> getAllOutputs()