Completely changed the structure and switched to Eclipse Plugin.
[Mograsim.git] / net.mograsim.logic.core / src / net / mograsim / logic / core / components / gates / MultiInputGate.java
index 6b183e3..da30281 100644 (file)
@@ -15,6 +15,7 @@ public abstract class MultiInputGate extends BasicComponent
        protected ReadWriteEnd out;
        protected final int length;
        protected MutationOperation op;
+       protected boolean invert = false;
 
        protected MultiInputGate(Timeline timeline, int processTime, MutationOperation op, ReadWriteEnd out, ReadEnd... in)
        {
@@ -33,6 +34,12 @@ public abstract class MultiInputGate extends BasicComponent
                this.out = out;
        }
 
+       protected MultiInputGate(Timeline timeline, int processTime, MutationOperation op, boolean invert, ReadWriteEnd out, ReadEnd... in)
+       {
+               this(timeline, processTime, op, out, in);
+               this.invert = invert;
+       }
+
        @Override
        public List<ReadEnd> getAllInputs()
        {
@@ -51,6 +58,6 @@ public abstract class MultiInputGate extends BasicComponent
                BitVectorMutator mutator = BitVectorMutator.empty();
                for (ReadEnd w : in)
                        op.apply(mutator, w.getValues());
-               out.feedSignals(mutator.get());
+               out.feedSignals(invert ? mutator.toBitVector().not() : mutator.toBitVector());
        }
 }