X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FConnector.java;h=528852ed3b287812903dbaccaad7566e6fb8324a;hb=91969fbb8e1a846c21cdfe6dc7e2b20534d86119;hp=16b8e709275d1ef0ff51f5d136dc330e7ff7512c;hpb=07faf07e3acb8b2afdc2bf65a46bc868faaed0f8;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/Connector.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/Connector.java index 16b8e709..528852ed 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/Connector.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/Connector.java @@ -2,13 +2,13 @@ package net.mograsim.logic.core.components; import java.util.List; +import net.mograsim.logic.core.LogicObservable; +import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.timeline.Timeline; -import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.core.wires.WireObserver; import net.mograsim.logic.core.wires.Wire.ReadEnd; import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; -public class Connector extends Component implements WireObserver +public class Connector extends Component implements LogicObserver { private boolean connected; private final ReadWriteEnd a; @@ -17,12 +17,12 @@ public class Connector extends Component implements WireObserver public Connector(Timeline timeline, ReadWriteEnd a, ReadWriteEnd b) { super(timeline); - if (a.length() != b.length()) - throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length(), b.length())); + if (a.width() != b.width()) + throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.width(), b.width())); this.a = a; this.b = b; - a.addObserver(this); - b.addObserver(this); + a.registerObserver(this); + b.registerObserver(this); } public void connect() @@ -48,13 +48,13 @@ public class Connector extends Component implements WireObserver } @Override - public void update(ReadEnd initiator, BitVector oldValues) + public void update(LogicObservable initiator) { if (connected) - timeline.addEvent(e -> update(initiator), 1); + timeline.addEvent(e -> innerUpdate(initiator), 1); } - private void update(ReadEnd initiator) + private void innerUpdate(LogicObservable initiator) { if (initiator == a) b.feedSignals(a.wireValuesExcludingMe());