-package era.mi.logic.components.gates;\r
-\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
-import java.util.List;\r
-\r
-import era.mi.logic.Util;\r
-import era.mi.logic.components.BasicComponent;\r
-import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
-\r
-public class NotGate extends BasicComponent {\r
- private WireArray in, out;\r
- private WireArrayInput outI;\r
-\r
- public NotGate(int processTime, WireArray in, WireArray out) {\r
- super(processTime);\r
- this.in = in;\r
- in.addObserver(this);\r
- this.out = out;\r
- outI = out.createInput();\r
- }\r
-\r
- public void compute() {\r
- outI.feedSignals(Util.not(in.getValues()));\r
- }\r
-\r
- public WireArray getIn() {\r
- return in;\r
- }\r
-\r
- public WireArray getOut() {\r
- return out;\r
- }\r
-\r
- @Override\r
- public List<WireArray> getAllInputs() {\r
- return Collections.unmodifiableList(Arrays.asList(in));\r
- }\r
-\r
- @Override\r
- public List<WireArray> getAllOutputs() {\r
- return Collections.unmodifiableList(Arrays.asList(out));\r
- }\r
-}\r
+package era.mi.logic.components.gates;
+
+import java.util.List;
+
+import era.mi.logic.components.BasicComponent;
+import era.mi.logic.wires.Wire.WireEnd;
+
+public class NotGate extends BasicComponent
+{
+ private WireEnd in;
+ private WireEnd out;
+
+ public NotGate(int processTime, WireEnd in, WireEnd out)
+ {
+ super(processTime);
+ this.in = in;
+ in.addObserver(this);
+ this.out = out;
+ }
+
+ @Override
+ protected void compute()
+ {
+ out.feedSignals(in.getValues().not());
+ }
+
+ public WireEnd getIn()
+ {
+ return in;
+ }
+
+ public WireEnd getOut()
+ {
+ return out;
+ }
+
+ @Override
+ public List<WireEnd> getAllInputs()
+ {
+ return List.of(in);
+ }
+
+ @Override
+ public List<WireEnd> getAllOutputs()
+ {
+ return List.of(out);
+ }
+}