package era.mi.gui.components;\r
\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
* Returns how many wire arrays are connected to this component. (Connections are static - they can't be removed and no new ones can be\r
* added)\r
*/\r
- public int getConnectedWireArraysCount();\r
+ public int getConnectedWireEndsCount();\r
\r
/**\r
* Returns the n-th wire array connected to this component.\r
*/\r
- public WireArray getConnectedWireArray(int connectionIndex);\r
+ public WireEnd getConnectedWireEnd(int connectionIndex);\r
\r
/**\r
* Returns relative coordinates where the n-th wire array is connected to this component.\r
*/\r
- public Point getWireArrayConnectionPoint(int connectionIndex);\r
+ public Point getWireEndConnectionPoint(int connectionIndex);\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.gates.AndGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
\r
private final int inputCount;\r
private final double height;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> wireEndConnectionPoints;\r
\r
- public GUIAndGate(int processTime, WireArray out, WireArray... in)\r
+ public GUIAndGate(int processTime, WireEnd out, WireEnd... in)\r
{\r
super(processTime, out, in);\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
this.inputCount = in.length;\r
this.height = inputCount * 10;\r
\r
{\r
- connectedWireArraysModifiable.addAll(Arrays.asList(in));\r
+ connectedWireEndsModifiable.addAll(Arrays.asList(in));\r
double inputHeight = 5;\r
for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
- wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+ wireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
}\r
\r
- connectedWireArraysModifiable.add(out);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+ connectedWireEndsModifiable.add(out);\r
+ wireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.wireEndConnectionPoints = Collections.unmodifiableList(wireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return wireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
import java.util.Map;\r
\r
-import era.mi.logic.Bit;\r
import era.mi.logic.components.ManualSwitch;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
bitNames = Collections.unmodifiableMap(bitNamesModifiable);\r
}\r
\r
- private final WireArray wa;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final WireEnd we;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> wireEndConnectionPoints;\r
\r
- public GUIManualSwitch(WireArray output)\r
+ public GUIManualSwitch(WireEnd output)\r
{\r
super(output);\r
\r
- this.wa = output;\r
+ this.we = output;\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
- connectedWireArraysModifiable.add(output);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, 7.5));\r
+ connectedWireEndsModifiable.add(output);\r
+ wireEndConnectionPointsModifiable.add(new Point(20, 7.5));\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.wireEndConnectionPoints = Collections.unmodifiableList(wireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
public void render(GeneralGC gc)\r
{\r
gc.drawRectangle(0, 0, 20, 15);\r
- String label = bitNames.get(wa.getValue());\r
+ String label = bitNames.get(we.getValue());\r
Font oldFont = gc.getFont();\r
Font labelFont = new Font(oldFont.getName(), 6, oldFont.getStyle());\r
gc.setFont(labelFont);\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return wireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.Merger;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
{\r
private final int inputCount;\r
private final double height;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> WireEndConnectionPoints;\r
\r
- public GUIMerger(WireArray union, WireArray... inputs)\r
+ public GUIMerger(WireEnd union, WireEnd... inputs)\r
{\r
super(union, inputs);\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
this.inputCount = inputs.length;\r
this.height = (inputCount - 1) * 10;\r
\r
{\r
- connectedWireArraysModifiable.addAll(Arrays.asList(inputs));\r
+ connectedWireEndsModifiable.addAll(Arrays.asList(inputs));\r
double inputHeight = 0;\r
for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
- wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+ WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
}\r
\r
- connectedWireArraysModifiable.add(union);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+ connectedWireEndsModifiable.add(union);\r
+ WireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return WireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.Mux;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
public class GUIMux extends Mux implements BasicGUIComponent\r
{\r
private final double height;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> WireEndConnectionPoints;\r
\r
- public GUIMux(int processTime, WireArray out, WireArray select, WireArray... inputs)\r
+ public GUIMux(int processTime, WireEnd out, WireEnd select, WireEnd... inputs)\r
{\r
super(processTime, out, select, inputs);\r
\r
height = 10;\r
this.height = height;\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
- connectedWireArraysModifiable.add(out);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, 10 + height / 2));\r
+ connectedWireEndsModifiable.add(out);\r
+ WireEndConnectionPointsModifiable.add(new Point(20, 10 + height / 2));\r
\r
- connectedWireArraysModifiable.add(select);\r
- wireArrayConnectionPointsModifiable.add(new Point(10, 5));\r
+ connectedWireEndsModifiable.add(select);\r
+ WireEndConnectionPointsModifiable.add(new Point(10, 5));\r
\r
{\r
- connectedWireArraysModifiable.addAll(Arrays.asList(inputs));\r
+ connectedWireEndsModifiable.addAll(Arrays.asList(inputs));\r
double inputHeightIncrement = (height + 20) / inputs.length;\r
double inputHeight = inputHeightIncrement / 2;\r
for (int i = 0; i < inputs.length; i++, inputHeight += inputHeightIncrement)\r
- wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+ WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
}\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return WireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.gates.NotGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
{\r
private static final String LABEL = "\u22651";// >=1\r
\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> WireEndConnectionPoints;\r
\r
- public GUINotGate(int processTime, WireArray in, WireArray out)\r
+ public GUINotGate(int processTime, WireEnd in, WireEnd out)\r
{\r
super(processTime, in, out);\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
- connectedWireArraysModifiable.add(in);\r
- wireArrayConnectionPointsModifiable.add(new Point(0, 5));\r
+ connectedWireEndsModifiable.add(in);\r
+ WireEndConnectionPointsModifiable.add(new Point(0, 5));\r
\r
- connectedWireArraysModifiable.add(out);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, 5));\r
+ connectedWireEndsModifiable.add(out);\r
+ WireEndConnectionPointsModifiable.add(new Point(20, 5));\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return WireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.gates.OrGate;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
\r
private final int inputCount;\r
private final double height;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> WireEndConnectionPoints;\r
\r
- public GUIOrGate(int processTime, WireArray out, WireArray... in)\r
+ public GUIOrGate(int processTime, WireEnd out, WireEnd... in)\r
{\r
super(processTime, out, in);\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
this.inputCount = in.length;\r
this.height = inputCount * 10;\r
\r
{\r
- connectedWireArraysModifiable.addAll(Arrays.asList(in));\r
+ connectedWireEndsModifiable.addAll(Arrays.asList(in));\r
double inputHeight = 5;\r
for (int i = 0; i < inputCount; i++, inputHeight += 10)\r
- wireArrayConnectionPointsModifiable.add(new Point(0, inputHeight));\r
+ WireEndConnectionPointsModifiable.add(new Point(0, inputHeight));\r
}\r
\r
- connectedWireArraysModifiable.add(out);\r
- wireArrayConnectionPointsModifiable.add(new Point(20, height / 2));\r
+ connectedWireEndsModifiable.add(out);\r
+ WireEndConnectionPointsModifiable.add(new Point(20, height / 2));\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return WireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import java.util.List;\r
\r
import era.mi.logic.components.Splitter;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
{\r
private final int outputCount;\r
private final double height;\r
- private final List<WireArray> connectedWireArrays;\r
- private final List<Point> wireArrayConnectionPoints;\r
+ private final List<WireEnd> connectedWireEnds;\r
+ private final List<Point> WireEndConnectionPoints;\r
\r
- public GUISplitter(WireArray input, WireArray... outputs)\r
+ public GUISplitter(WireEnd input, WireEnd... outputs)\r
{\r
super(input, outputs);\r
\r
- List<WireArray> connectedWireArraysModifiable = new ArrayList<>();\r
- List<Point> wireArrayConnectionPointsModifiable = new ArrayList<>();\r
+ List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();\r
+ List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();\r
\r
this.outputCount = outputs.length;\r
this.height = (outputCount - 1) * 10;\r
\r
- connectedWireArraysModifiable.add(input);\r
- wireArrayConnectionPointsModifiable.add(new Point(0, height / 2));\r
+ connectedWireEndsModifiable.add(input);\r
+ WireEndConnectionPointsModifiable.add(new Point(0, height / 2));\r
\r
{\r
- connectedWireArraysModifiable.addAll(Arrays.asList(outputs));\r
+ connectedWireEndsModifiable.addAll(Arrays.asList(outputs));\r
double outputHeight = 0;\r
for (int i = 0; i < outputCount; i++, outputHeight += 10)\r
- wireArrayConnectionPointsModifiable.add(new Point(20, outputHeight));\r
+ WireEndConnectionPointsModifiable.add(new Point(20, outputHeight));\r
}\r
\r
- this.connectedWireArrays = Collections.unmodifiableList(connectedWireArraysModifiable);\r
- this.wireArrayConnectionPoints = Collections.unmodifiableList(wireArrayConnectionPointsModifiable);\r
+ this.connectedWireEnds = Collections.unmodifiableList(connectedWireEndsModifiable);\r
+ this.WireEndConnectionPoints = Collections.unmodifiableList(WireEndConnectionPointsModifiable);\r
}\r
\r
@Override\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
- return connectedWireArrays.size();\r
+ return connectedWireEnds.size();\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return connectedWireArrays.get(connectionIndex);\r
+ return connectedWireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionI)\r
+ public Point getWireEndConnectionPoint(int connectionI)\r
{\r
- return wireArrayConnectionPoints.get(connectionI);\r
+ return WireEndConnectionPoints.get(connectionI);\r
}\r
}
\ No newline at end of file
import era.mi.gui.components.GUIOrGate;\r
import era.mi.gui.wires.WireConnectionPoint;\r
import era.mi.logic.Simulation;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
\r
public class RSLatchGUIExample\r
private static void initComponents(LogicUI ui)\r
{\r
Simulation.TIMELINE.reset();\r
- WireArray r = new WireArray(1, WIRE_DELAY);\r
- WireArray s = new WireArray(1, WIRE_DELAY);\r
- WireArray t2 = new WireArray(1, WIRE_DELAY);\r
- WireArray t1 = new WireArray(1, WIRE_DELAY);\r
- WireArray q = new WireArray(1, WIRE_DELAY);\r
- WireArray nq = new WireArray(1, WIRE_DELAY);\r
+ Wire r = new Wire(1, WIRE_DELAY);\r
+ Wire s = new Wire(1, WIRE_DELAY);\r
+ Wire t2 = new Wire(1, WIRE_DELAY);\r
+ Wire t1 = new Wire(1, WIRE_DELAY);\r
+ Wire q = new Wire(1, WIRE_DELAY);\r
+ Wire nq = new Wire(1, WIRE_DELAY);\r
\r
- GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r), 100, 100);\r
- GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s), 100, 200);\r
- GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1, r, nq), 160, 102.5);\r
- GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2, q, s), 160, 192.5);\r
- GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1, q), 200, 107.5);\r
- GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2, nq), 200, 197.5);\r
+ GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r.createEnd()), 100, 100);\r
+ GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s.createEnd()), 100, 200);\r
+ GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1.createEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd()), 160, 102.5);\r
+ GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2.createEnd(), q.createReadOnlyEnd(), s.createReadOnlyEnd()), 160, 192.5);\r
+ GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1.createReadOnlyEnd(), q.createEnd()), 200, 107.5);\r
+ GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2.createReadOnlyEnd(), nq.createEnd()), 200, 197.5);\r
\r
WireConnectionPoint p1 = ui.addComponent(new WireConnectionPoint(q, 3), 250, 112.5);\r
WireConnectionPoint p2 = ui.addComponent(new WireConnectionPoint(nq, 3), 250, 202.5);\r
import org.eclipse.swt.graphics.Color;\r
\r
import era.mi.gui.components.BasicGUIComponent;\r
-import era.mi.logic.Bit;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
\r
public class GUIWire\r
{\r
- private final WireArray wa;\r
+ private final Wire wire;\r
private final double[] path;\r
\r
public GUIWire(Runnable redraw, BasicGUIComponent component1, int component1ConnectionIndex, Point component1Pos,\r
BasicGUIComponent component2, int component2ConnectionIndex, Point component2Pos, Point... path)\r
{\r
- this.wa = component1.getConnectedWireArray(component1ConnectionIndex);\r
- if (!Objects.equals(wa, component2.getConnectedWireArray(component2ConnectionIndex)))\r
+ this.wire = component1.getConnectedWireEnd(component1ConnectionIndex).getWire();\r
+ if (!Objects.equals(wire, component2.getConnectedWireEnd(component2ConnectionIndex).getWire()))\r
throw new IllegalArgumentException("Given connection points are not connected!");\r
this.path = new double[path.length * 2 + 4];\r
- Point component1ConnectionPoint = component1.getWireArrayConnectionPoint(component1ConnectionIndex);\r
+ Point component1ConnectionPoint = component1.getWireEndConnectionPoint(component1ConnectionIndex);\r
this.path[0] = component1Pos.x + component1ConnectionPoint.x;\r
this.path[1] = component1Pos.y + component1ConnectionPoint.y;\r
for (int srcI = 0, dstI = 2; srcI < path.length; srcI++, dstI += 2)\r
this.path[dstI + 0] = path[srcI].x;\r
this.path[dstI + 1] = path[srcI].y;\r
}\r
- Point component2ConnectionPoint = component2.getWireArrayConnectionPoint(component2ConnectionIndex);\r
+ Point component2ConnectionPoint = component2.getWireEndConnectionPoint(component2ConnectionIndex);\r
this.path[this.path.length - 2] = component2Pos.x + component2ConnectionPoint.x;\r
this.path[this.path.length - 1] = component2Pos.y + component2ConnectionPoint.y;\r
\r
- wa.addObserver((initiator, oldValues) -> redraw.run());\r
+ wire.addObserver((initiator, oldValues) -> redraw.run());\r
}\r
\r
public void render(GeneralGC gc)\r
{\r
Color oldFG = gc.getForeground();\r
- if (wa.length == 1)\r
- gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForBit(wa.getValue())));\r
+ if (wire.length == 1)\r
+ gc.setForeground(gc.getDevice().getSystemColor(getSWTColorConstantForBit(wire.getValue())));\r
gc.drawPolyline(path);\r
gc.setForeground(oldFG);\r
}\r
package era.mi.gui.wires;\r
\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
import org.eclipse.swt.graphics.Color;\r
\r
import era.mi.gui.components.BasicGUIComponent;\r
-import era.mi.logic.wires.WireArray;\r
+import era.mi.logic.wires.Wire;\r
+import era.mi.logic.wires.Wire.WireEnd;\r
import net.haspamelodica.swt.helper.gcs.GeneralGC;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;\r
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;\r
\r
public class WireConnectionPoint implements BasicGUIComponent\r
{\r
- private final WireArray wa;\r
+ private final Wire wire;\r
+ private final List<WireEnd> wireEnds;\r
private final int wiresCrossing;\r
\r
- public WireConnectionPoint(WireArray wa, int wiresCrossing)\r
+ public WireConnectionPoint(Wire wire, int wiresCrossing)\r
{\r
- this.wa = wa;\r
+ this.wire = wire;\r
+ List<WireEnd> wireEndsModifiable = new ArrayList<>();\r
+ for (int i = 0; i < wiresCrossing; i++)\r
+ wireEndsModifiable.add(wire.createReadOnlyEnd());\r
+ wireEnds = Collections.unmodifiableList(wireEndsModifiable);\r
this.wiresCrossing = wiresCrossing;\r
}\r
\r
public void render(GeneralGC gc)\r
{\r
Color oldBG = gc.getBackground();\r
- if (wa.length == 1)\r
- gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForBit(wa.getValue())));\r
+ if (wire.length == 1)\r
+ gc.setBackground(gc.getDevice().getSystemColor(GUIWire.getSWTColorConstantForBit(wire.getValue())));\r
gc.fillOval(-1, -1, 2, 2);\r
gc.setBackground(oldBG);\r
}\r
}\r
\r
@Override\r
- public int getConnectedWireArraysCount()\r
+ public int getConnectedWireEndsCount()\r
{\r
return wiresCrossing;\r
}\r
\r
@Override\r
- public WireArray getConnectedWireArray(int connectionIndex)\r
+ public WireEnd getConnectedWireEnd(int connectionIndex)\r
{\r
- return wa;\r
+ return wireEnds.get(connectionIndex);\r
}\r
\r
@Override\r
- public Point getWireArrayConnectionPoint(int connectionIndex)\r
+ public Point getWireEndConnectionPoint(int connectionIndex)\r
{\r
return new Point(0, 0);\r
}\r