X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fmodeladapter%2Fcomponentadapters%2FSimpleRectangularHardcodedGUIComponentAdapter.java;h=8ca38c08a86d8927f088def925406209431b17e9;hb=95a225aed8eae0fc080440dba779abfdf867ff3d;hp=2ccc0d658b35a97575811784f940e447d1ec6c3e;hpb=bbe38c55aaa999d025f534245f9207a88643f6e5;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedGUIComponentAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedGUIComponentAdapter.java index 2ccc0d65..8ca38c08 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedGUIComponentAdapter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SimpleRectangularHardcodedGUIComponentAdapter.java @@ -3,7 +3,6 @@ package net.mograsim.logic.model.modeladapter.componentadapters; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Function; import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.timeline.Timeline; @@ -15,17 +14,8 @@ import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.model.wires.PinUsage; import net.mograsim.logic.model.modeladapter.LogicModelParameters; -//TODO support HighLevelStates public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentAdapter { - private final Function recalculateFunctionGenerator; - - public SimpleRectangularHardcodedGUIComponentAdapter( - Function recalculateFunctionGenerator) - { - this.recalculateFunctionGenerator = recalculateFunctionGenerator; - } - @Override public Class getSupportedClass() { @@ -36,14 +26,15 @@ public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent, Map logicWiresPerPin) { - RecalculateFunction recalculate = recalculateFunctionGenerator.apply(guiComponent); Map readEnds = new HashMap<>(); Map readWriteEnds = new HashMap<>(); AtomicReference state = new AtomicReference<>(); - LogicObserver logicObs = c -> timeline.addEvent(e -> state.set(recalculate.recalculate(state.get(), readEnds, readWriteEnds)), - params.gateProcessTime); + Runnable recalculate = () -> state.updateAndGet(s -> guiComponent.recalculate(s, readEnds, readWriteEnds)); + LogicObserver logicObs = c -> timeline.addEvent(e -> recalculate.run(), params.gateProcessTime); + + guiComponent.setLogicModelBindingAndResetState(state, recalculate); for (Pin pin : guiComponent.getPins().values()) { @@ -61,9 +52,4 @@ public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA end.registerObserver(logicObs); } } - - public static interface RecalculateFunction - { - public Object recalculate(Object lastState, Map readEnds, Map readWriteEnds); - } } \ No newline at end of file