Implemented GUIMerger + GUISplitter
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / modeladapter / componentadapters / SplitterAdapter.java
1 package net.mograsim.logic.model.modeladapter.componentadapters;\r
2 \r
3 import java.util.Map;\r
4 \r
5 import net.mograsim.logic.core.timeline.Timeline;\r
6 import net.mograsim.logic.core.wires.Wire;\r
7 import net.mograsim.logic.core.wires.Wire.ReadEnd;\r
8 import net.mograsim.logic.model.model.components.atomic.GUISplitter;\r
9 import net.mograsim.logic.model.model.wires.Pin;\r
10 import net.mograsim.logic.model.modeladapter.LogicModelParameters;\r
11 \r
12 public class SplitterAdapter implements ComponentAdapter<GUISplitter>\r
13 {\r
14         @Override\r
15         public Class<GUISplitter> getSupportedClass()\r
16         {\r
17                 return GUISplitter.class;\r
18         }\r
19 \r
20         @Override\r
21         public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUISplitter guiComponent,\r
22                         Map<Pin, Wire> logicWiresPerPin)\r
23         {\r
24                 Wire input = logicWiresPerPin.get(guiComponent.getPin("I"));\r
25                 ReadEnd[] outputEnds = new ReadEnd[guiComponent.logicWidth];\r
26                 for (int i = 0; i < guiComponent.logicWidth; i++)\r
27                 {\r
28                         Wire output = logicWiresPerPin.get(guiComponent.getPin("O" + i));\r
29                         Wire.fuse(input, output, i, 0, 1);\r
30                         outputEnds[i] = output.createReadOnlyEnd();\r
31                 }\r
32                 guiComponent.setLogicModelBinding(input.createReadOnlyEnd(), outputEnds);\r
33         }\r
34 }