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