Fixed GUIMerger / GUISplitter bit order
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / modeladapter / componentadapters / MergerAdapter.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.GUIMerger;\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 MergerAdapter implements ComponentAdapter<GUIMerger>\r
13 {\r
14         @Override\r
15         public Class<GUIMerger> getSupportedClass()\r
16         {\r
17                 return GUIMerger.class;\r
18         }\r
19 \r
20         @Override\r
21         public void createAndLinkComponent(Timeline timeline, LogicModelParameters params, GUIMerger guiComponent,\r
22                         Map<Pin, Wire> logicWiresPerPin)\r
23         {\r
24                 Wire output = logicWiresPerPin.get(guiComponent.getPin("O"));\r
25                 ReadEnd[] inputEnds = new ReadEnd[guiComponent.logicWidth];\r
26                 for (int i = 0; i < guiComponent.logicWidth; i++)\r
27                 {\r
28                         Wire input = logicWiresPerPin.get(guiComponent.getPin("I" + i));\r
29                         Wire.fuse(input, output, 0, guiComponent.logicWidth - 1 - i, 1);\r
30                         inputEnds[i] = input.createReadOnlyEnd();\r
31                 }\r
32                 guiComponent.setLogicModelBinding(inputEnds, output.createReadOnlyEnd());\r
33         }\r
34 }