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=04d0736f3d4968ecf947c4887157390536f4666f;hb=851a13a0b2e8c806c9c9435636630a4f0858b731;hp=409805dffce1ca4ccb1766ad8966853e81636e2f;hpb=ae82c31570349e250cdc0d21ae18730343d92880;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 409805df..04d0736f 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 @@ -2,7 +2,7 @@ package net.mograsim.logic.model.modeladapter.componentadapters; import java.util.HashMap; import java.util.Map; -import java.util.function.BiConsumer; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import net.mograsim.logic.core.LogicObserver; @@ -15,12 +15,13 @@ import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcod import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.modeladapter.LogicModelParameters; +//TODO support HighLevelStates public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentAdapter { - private final Function, Map>> recalculateFunctionGenerator; + private final Function recalculateFunctionGenerator; public SimpleRectangularHardcodedGUIComponentAdapter( - Function, Map>> recalculateFunctionGenerator) + Function recalculateFunctionGenerator) { this.recalculateFunctionGenerator = recalculateFunctionGenerator; } @@ -35,11 +36,13 @@ public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent, Map logicWiresPerPin) { - BiConsumer, Map> recalculate = recalculateFunctionGenerator.apply(guiComponent); + RecalculateFunction recalculate = recalculateFunctionGenerator.apply(guiComponent); Map readEnds = new HashMap<>(); Map readWriteEnds = new HashMap<>(); - LogicObserver logicObs = c -> recalculate.accept(readEnds, readWriteEnds); + AtomicReference state = new AtomicReference<>(); + + LogicObserver logicObs = c -> state.set(recalculate.recalculate(state.get(), readEnds, readWriteEnds)); for (Pin pin : guiComponent.getPins().values()) { @@ -57,4 +60,9 @@ 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