package era.mi.gui.components;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
/**
* Returns the n-th wire array connected to this component.
*/
- public WireEnd getConnectedWireEnd(int connectionIndex);
+ public ReadEnd getConnectedWireEnd(int connectionIndex);
/**
* Returns relative coordinates where the n-th wire array is connected to this component.
import java.util.List;
import era.mi.logic.components.gates.AndGate;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
private final int inputCount;
private final double height;
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> wireEndConnectionPoints;
- public GUIAndGate(int processTime, WireEnd out, WireEnd... in)
+ public GUIAndGate(int processTime, ReadWriteEnd out, ReadEnd... in)
{
super(processTime, out, in);
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();
this.inputCount = in.length;
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import era.mi.logic.components.ManualSwitch;
import era.mi.logic.types.Bit;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
bitNames = Collections.unmodifiableMap(bitNamesModifiable);
}
- private final WireEnd we;
- private final List<WireEnd> connectedWireEnds;
+ private final ReadEnd we;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> wireEndConnectionPoints;
- public GUIManualSwitch(WireEnd output)
+ public GUIManualSwitch(ReadWriteEnd output)
{
super(output);
this.we = output;
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> wireEndConnectionPointsModifiable = new ArrayList<>();
connectedWireEndsModifiable.add(output);
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import java.util.List;
import era.mi.logic.components.Merger;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
{
private final int inputCount;
private final double height;
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> WireEndConnectionPoints;
- public GUIMerger(WireEnd union, WireEnd... inputs)
+ public GUIMerger(ReadWriteEnd union, ReadEnd... inputs)
{
super(union, inputs);
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();
this.inputCount = inputs.length;
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import java.util.List;
import era.mi.logic.components.Mux;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
public class GUIMux extends Mux implements BasicGUIComponent
{
private final double height;
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> WireEndConnectionPoints;
- public GUIMux(int processTime, WireEnd out, WireEnd select, WireEnd... inputs)
+ public GUIMux(int processTime, ReadWriteEnd out, ReadEnd select, ReadEnd... inputs)
{
super(processTime, out, select, inputs);
height = 10;
this.height = height;
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();
connectedWireEndsModifiable.add(out);
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import java.util.List;
import era.mi.logic.components.gates.NotGate;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
{
private static final String LABEL = "\u22651";// >=1
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> WireEndConnectionPoints;
- public GUINotGate(int processTime, WireEnd in, WireEnd out)
+ public GUINotGate(int processTime, ReadEnd in, ReadWriteEnd out)
{
super(processTime, in, out);
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();
connectedWireEndsModifiable.add(in);
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import java.util.List;
import era.mi.logic.components.gates.OrGate;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
private final int inputCount;
private final double height;
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> WireEndConnectionPoints;
- public GUIOrGate(int processTime, WireEnd out, WireEnd... in)
+ public GUIOrGate(int processTime, ReadWriteEnd out, ReadEnd... in)
{
super(processTime, out, in);
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();
this.inputCount = in.length;
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
import java.util.List;
import era.mi.logic.components.Splitter;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
{
private final int outputCount;
private final double height;
- private final List<WireEnd> connectedWireEnds;
+ private final List<ReadEnd> connectedWireEnds;
private final List<Point> WireEndConnectionPoints;
- public GUISplitter(WireEnd input, WireEnd... outputs)
+ public GUISplitter(ReadEnd input, ReadWriteEnd... outputs)
{
super(input, outputs);
- List<WireEnd> connectedWireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> connectedWireEndsModifiable = new ArrayList<>();
List<Point> WireEndConnectionPointsModifiable = new ArrayList<>();
this.outputCount = outputs.length;
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return connectedWireEnds.get(connectionIndex);
}
Wire q = new Wire(1, WIRE_DELAY);
Wire nq = new Wire(1, WIRE_DELAY);
- GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r.createEnd()), 100, 100);
- GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s.createEnd()), 100, 200);
- GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1.createEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd()), 160, 102.5);
- GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2.createEnd(), q.createReadOnlyEnd(), s.createReadOnlyEnd()), 160, 192.5);
- GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1.createReadOnlyEnd(), q.createEnd()), 200, 107.5);
- GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2.createReadOnlyEnd(), nq.createEnd()), 200, 197.5);
+ GUIManualSwitch rIn = ui.addComponent(new GUIManualSwitch(r.createReadWriteEnd()), 100, 100);
+ GUIManualSwitch sIn = ui.addComponent(new GUIManualSwitch(s.createReadWriteEnd()), 100, 200);
+ GUIOrGate or1 = ui.addComponent(new GUIOrGate(OR_DELAY, t1.createReadWriteEnd(), r.createReadOnlyEnd(), nq.createReadOnlyEnd()), 160, 102.5);
+ GUIOrGate or2 = ui.addComponent(new GUIOrGate(OR_DELAY, t2.createReadWriteEnd(), q.createReadOnlyEnd(), s.createReadOnlyEnd()), 160, 192.5);
+ GUINotGate not1 = ui.addComponent(new GUINotGate(NOT_DELAY, t1.createReadOnlyEnd(), q.createReadWriteEnd()), 200, 107.5);
+ GUINotGate not2 = ui.addComponent(new GUINotGate(NOT_DELAY, t2.createReadOnlyEnd(), nq.createReadWriteEnd()), 200, 197.5);
WireConnectionPoint p1 = ui.addComponent(new WireConnectionPoint(q, 3), 250, 112.5);
WireConnectionPoint p2 = ui.addComponent(new WireConnectionPoint(nq, 3), 250, 202.5);
this.path[this.path.length - 2] = component2Pos.x + component2ConnectionPoint.x;
this.path[this.path.length - 1] = component2Pos.y + component2ConnectionPoint.y;
- wire.addObserver((initiator, oldValues) -> redraw.run());
+ wire.createReadOnlyEnd().addObserver((initiator, oldValues) -> redraw.run());
}
public void render(GeneralGC gc)
import era.mi.gui.components.BasicGUIComponent;
import era.mi.logic.wires.Wire;
-import era.mi.logic.wires.Wire.WireEnd;
+import era.mi.logic.wires.Wire.ReadEnd;
import net.haspamelodica.swt.helper.gcs.GeneralGC;
import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
public class WireConnectionPoint implements BasicGUIComponent
{
private final Wire wire;
- private final List<WireEnd> wireEnds;
+ private final List<ReadEnd> wireEnds;
private final int wiresCrossing;
public WireConnectionPoint(Wire wire, int wiresCrossing)
{
this.wire = wire;
- List<WireEnd> wireEndsModifiable = new ArrayList<>();
+ List<ReadEnd> wireEndsModifiable = new ArrayList<>();
for (int i = 0; i < wiresCrossing; i++)
wireEndsModifiable.add(wire.createReadOnlyEnd());
wireEnds = Collections.unmodifiableList(wireEndsModifiable);
}
@Override
- public WireEnd getConnectedWireEnd(int connectionIndex)
+ public ReadEnd getConnectedWireEnd(int connectionIndex)
{
return wireEnds.get(connectionIndex);
}