X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=era.mi%2Fsrc%2Fera%2Fmi%2Flogic%2Fcomponents%2FMerger.java;h=a9d1410160808ebb866f57e34a90b395a4dab6b9;hb=b7ce41467a2cbd9f45554982730741810e99feaa;hp=34ba217cf7a551806c2a4e732e15db9518357542;hpb=373b945917f9d573e4b1bd0e97f98b02fb0d9c07;p=Mograsim.git diff --git a/era.mi/src/era/mi/logic/components/Merger.java b/era.mi/src/era/mi/logic/components/Merger.java index 34ba217c..a9d14101 100644 --- a/era.mi/src/era/mi/logic/components/Merger.java +++ b/era.mi/src/era/mi/logic/components/Merger.java @@ -4,13 +4,14 @@ import java.util.List; import era.mi.logic.types.BitVector; import era.mi.logic.wires.Wire; -import era.mi.logic.wires.Wire.WireEnd; +import era.mi.logic.wires.Wire.ReadEnd; +import era.mi.logic.wires.Wire.ReadWriteEnd; import era.mi.logic.wires.WireObserver; public class Merger implements WireObserver, Component { - private WireEnd out; - private WireEnd[] inputs; + private ReadWriteEnd out; + private ReadEnd[] inputs; private int[] beginningIndex; /** @@ -18,7 +19,7 @@ public class Merger implements WireObserver, Component * @param union The output of merging n {@link Wire}s into one. Must have length = a1.length() + a2.length() + ... + an.length(). * @param inputs The inputs to be merged into the union */ - public Merger(WireEnd union, WireEnd... inputs) + public Merger(ReadWriteEnd union, ReadEnd... inputs) { this.inputs = inputs; this.out = union; @@ -37,45 +38,45 @@ public class Merger implements WireObserver, Component "The output of merging n WireArrays into one must have length = a1.length() + a2.length() + ... + an.length()."); } - public WireEnd getInput(int index) + public ReadEnd getInput(int index) { return inputs[index]; } - public WireEnd getUnion() + public ReadEnd getUnion() { return out; } @Override - public void update(Wire initiator, BitVector oldValues) + public void update(ReadEnd initiator, BitVector oldValues) { int index = find(initiator); int beginning = beginningIndex[index]; out.feedSignals(beginning, inputs[index].getValues()); } - private int find(Wire w) + private int find(ReadEnd r) { for (int i = 0; i < inputs.length; i++) - if (inputs[i].getWire() == w) + if (inputs[i] == r) return i; return -1; } - public WireEnd[] getInputs() + public ReadEnd[] getInputs() { return inputs.clone(); } @Override - public List getAllInputs() + public List getAllInputs() { return List.of(inputs); } @Override - public List getAllOutputs() + public List getAllOutputs() { return List.of(out); }