X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=era.mi%2Fsrc%2Fera%2Fmi%2Flogic%2Fcomponents%2FConnector.java;h=19367a57ba4a0cb3ef1fc538f1353132ab52717f;hb=b7ce41467a2cbd9f45554982730741810e99feaa;hp=aa8c4377fd32ec343d627be72a5f57235c1c1412;hpb=dcbba0b189fd37135adc4487f1b8b645e7045bc4;p=Mograsim.git diff --git a/era.mi/src/era/mi/logic/components/Connector.java b/era.mi/src/era/mi/logic/components/Connector.java index aa8c4377..19367a57 100644 --- a/era.mi/src/era/mi/logic/components/Connector.java +++ b/era.mi/src/era/mi/logic/components/Connector.java @@ -3,18 +3,18 @@ package era.mi.logic.components; import java.util.List; import era.mi.logic.Simulation; -import era.mi.logic.types.Bit; -import era.mi.logic.wires.Wire; -import era.mi.logic.wires.Wire.WireEnd; +import era.mi.logic.types.BitVector; +import era.mi.logic.wires.Wire.ReadEnd; +import era.mi.logic.wires.Wire.ReadWriteEnd; import era.mi.logic.wires.WireObserver; public class Connector implements WireObserver, Component { private boolean connected; - private final WireEnd a; - private final WireEnd b; + private final ReadWriteEnd a; + private final ReadWriteEnd b; - public Connector(WireEnd a, WireEnd b) + public Connector(ReadWriteEnd a, ReadWriteEnd b) { if (a.length() != b.length()) throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length(), b.length())); @@ -27,8 +27,8 @@ public class Connector implements WireObserver, Component public void connect() { connected = true; - update(a.getWire()); - update(b.getWire()); + update(a); + update(b); } public void disconnect() @@ -47,28 +47,28 @@ public class Connector implements WireObserver, Component } @Override - public void update(Wire initiator, Bit[] oldValues) + public void update(ReadEnd initiator, BitVector oldValues) { if (connected) Simulation.TIMELINE.addEvent(e -> update(initiator), 1); } - private void update(Wire initiator) + private void update(ReadEnd initiator) { - if (initiator == a.getWire()) + if (initiator == a) b.feedSignals(a.wireValuesExcludingMe()); else a.feedSignals(b.wireValuesExcludingMe()); } @Override - public List getAllInputs() + public List getAllInputs() { return List.of(a, b); } @Override - public List getAllOutputs() + public List getAllOutputs() { return List.of(a, b); }