package era.mi.logic.components.gates;
-import era.mi.logic.Util;
-import era.mi.logic.components.BasicComponent;
-import era.mi.logic.wires.WireArray;
-import era.mi.logic.wires.WireArray.WireArrayInput;
+import era.mi.logic.timeline.Timeline;
+import era.mi.logic.types.BitVector.BitVectorMutator;
+import era.mi.logic.wires.Wire.ReadEnd;
+import era.mi.logic.wires.Wire.ReadWriteEnd;
-public class OrGate extends BasicComponent
+public class OrGate extends MultiInputGate
{
- private WireArray a, b, out;
- private WireArrayInput outI;
-
- public OrGate(int processTime, WireArray a, WireArray b, WireArray out)
+ public OrGate(Timeline timeline, int processTime, ReadWriteEnd out, ReadEnd... in)
{
- super(processTime);
- this.a = a;
- a.addObserver(this);
- this.b = b;
- b.addObserver(this);
- this.out = out;
- this.outI = out.createInput();
- }
-
- protected void compute()
- {
- outI.feedSignals(Util.or(a.getValues(), b.getValues()));
- }
-
- public WireArray getA()
- {
- return a;
- }
-
- public WireArray getB()
- {
- return b;
- }
-
- public WireArray getOut()
- {
- return out;
+ super(timeline, processTime, BitVectorMutator::or, out, in);
}
}