projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed redraw bug: Changes in submodels didn't cause a redraw
[Mograsim.git]
/
net.mograsim.logic.model
/
src
/
net
/
mograsim
/
logic
/
model
/
modeladapter
/
componentadapters
/
SimpleRectangularHardcodedGUIComponentAdapter.java
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
409805d
..
7eeee59
100644
(file)
--- 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.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;
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;
import net.mograsim.logic.model.model.wires.Pin;
import net.mograsim.logic.model.modeladapter.LogicModelParameters;
+//TODO support HighLevelStates
public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentAdapter<SimpleRectangularHardcodedGUIComponent>
{
public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentAdapter<SimpleRectangularHardcodedGUIComponent>
{
- private final Function<SimpleRectangularHardcodedGUIComponent,
BiConsumer<Map<String, ReadEnd>, Map<String, ReadWriteEnd>>
> recalculateFunctionGenerator;
+ private final Function<SimpleRectangularHardcodedGUIComponent,
RecalculateFunction
> recalculateFunctionGenerator;
public SimpleRectangularHardcodedGUIComponentAdapter(
public SimpleRectangularHardcodedGUIComponentAdapter(
- Function<SimpleRectangularHardcodedGUIComponent,
BiConsumer<Map<String, ReadEnd>, Map<String, ReadWriteEnd>>
> recalculateFunctionGenerator)
+ Function<SimpleRectangularHardcodedGUIComponent,
RecalculateFunction
> recalculateFunctionGenerator)
{
this.recalculateFunctionGenerator = recalculateFunctionGenerator;
}
{
this.recalculateFunctionGenerator = recalculateFunctionGenerator;
}
@@
-35,11
+36,14
@@
public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA
public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent,
Map<Pin, Wire> logicWiresPerPin)
{
public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, SimpleRectangularHardcodedGUIComponent guiComponent,
Map<Pin, Wire> logicWiresPerPin)
{
-
BiConsumer<Map<String, ReadEnd>, Map<String, ReadWriteEnd>>
recalculate = recalculateFunctionGenerator.apply(guiComponent);
+
RecalculateFunction
recalculate = recalculateFunctionGenerator.apply(guiComponent);
Map<String, ReadEnd> readEnds = new HashMap<>();
Map<String, ReadWriteEnd> readWriteEnds = new HashMap<>();
Map<String, ReadEnd> readEnds = new HashMap<>();
Map<String, ReadWriteEnd> readWriteEnds = new HashMap<>();
- LogicObserver logicObs = c -> recalculate.accept(readEnds, readWriteEnds);
+ AtomicReference<Object> state = new AtomicReference<>();
+
+ LogicObserver logicObs = c -> timeline.addEvent(e -> state.set(recalculate.recalculate(state.get(), readEnds, readWriteEnds)),
+ params.gateProcessTime);
for (Pin pin : guiComponent.getPins().values())
{
for (Pin pin : guiComponent.getPins().values())
{
@@
-57,4
+61,9
@@
public class SimpleRectangularHardcodedGUIComponentAdapter implements ComponentA
end.registerObserver(logicObs);
}
}
end.registerObserver(logicObs);
}
}
+
+ public static interface RecalculateFunction
+ {
+ public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds);
+ }
}
\ No newline at end of file
}
\ No newline at end of file