X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodeladapter%2Fcomponentadapters%2FMergerAdapter.java;fp=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodeladapter%2Fcomponentadapters%2FMergerAdapter.java;h=22d61122e94726a04bd1dcdcd8e05012e176c1a4;hb=7d05144c25daa53e60fc9ed9fd503546a86567f8;hp=0000000000000000000000000000000000000000;hpb=8bed58cd47f4e53a0a83e066d38864aa6875502f;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java new file mode 100644 index 00000000..22d61122 --- /dev/null +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java @@ -0,0 +1,34 @@ +package net.mograsim.logic.model.modeladapter.componentadapters; + +import java.util.Map; + +import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.wires.CoreWire; +import net.mograsim.logic.core.wires.CoreWire.ReadEnd; +import net.mograsim.logic.model.model.components.atomic.ModelMerger; +import net.mograsim.logic.model.model.wires.Pin; +import net.mograsim.logic.model.modeladapter.CoreModelParameters; + +public class MergerAdapter implements ComponentAdapter +{ + @Override + public Class getSupportedClass() + { + return ModelMerger.class; + } + + @Override + public void createAndLinkComponent(Timeline timeline, CoreModelParameters params, ModelMerger modelComponent, + Map logicWiresPerPin) + { + CoreWire output = logicWiresPerPin.get(modelComponent.getPin("O")); + ReadEnd[] inputEnds = new ReadEnd[modelComponent.logicWidth]; + for (int i = 0; i < modelComponent.logicWidth; i++) + { + CoreWire input = logicWiresPerPin.get(modelComponent.getPin("I" + (modelComponent.logicWidth - 1 - i))); + CoreWire.fuse(input, output, 0, i); + inputEnds[i] = input.createReadOnlyEnd(); + } + modelComponent.setCoreModelBinding(inputEnds, output.createReadOnlyEnd()); + } +} \ No newline at end of file