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=8634c0c20b5dac5ab6fc277d4534fbf5a695da3d;hb=0a04a4ed66ecebd4254541c4977599f6052c115a;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..8634c0c2 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,29 +3,19 @@ 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; -import net.mograsim.logic.core.wires.Wire; -import net.mograsim.logic.core.wires.Wire.ReadEnd; -import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; +import net.mograsim.logic.core.wires.CoreWire; +import net.mograsim.logic.core.wires.CoreWire.ReadEnd; +import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd; import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedGUIComponent; 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() { @@ -34,20 +24,21 @@ public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA @Override public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent, - Map logicWiresPerPin) + 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()) { - Wire wire = logicWiresPerPin.get(pin); + CoreWire wire = logicWiresPerPin.get(pin); ReadEnd end; if (pin.usage != PinUsage.INPUT) { @@ -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