eb719b13183be109330e2632c92c33056501672b
[Mograsim.git] / era.mi / src / era / mi / logic / components / gates / NotGate.java
1 package era.mi.logic.components.gates;\r
2 \r
3 import java.util.Arrays;\r
4 import java.util.Collections;\r
5 import java.util.List;\r
6 \r
7 import era.mi.logic.Util;\r
8 import era.mi.logic.components.BasicComponent;\r
9 import era.mi.logic.wires.Wire.WireEnd;\r
10 \r
11 public class NotGate extends BasicComponent\r
12 {\r
13         private WireEnd in;\r
14         private WireEnd out;\r
15 \r
16         public NotGate(int processTime, WireEnd in, WireEnd out)\r
17         {\r
18                 super(processTime);\r
19                 this.in = in;\r
20                 in.addObserver(this);\r
21                 this.out = out;\r
22         }\r
23 \r
24         @Override\r
25         protected void compute()\r
26         {\r
27                 out.feedSignals(Util.not(in.getValues()));\r
28         }\r
29 \r
30         public WireEnd getIn()\r
31         {\r
32                 return in;\r
33         }\r
34 \r
35         public WireEnd getOut()\r
36         {\r
37                 return out;\r
38         }\r
39 \r
40         @Override\r
41         public List<WireEnd> getAllInputs()\r
42         {\r
43                 return Collections.unmodifiableList(Arrays.asList(in));\r
44         }\r
45 \r
46         @Override\r
47         public List<WireEnd> getAllOutputs()\r
48         {\r
49                 return Collections.unmodifiableList(Arrays.asList(out));\r
50         }\r
51 }\r