projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new WireEnds as in/outputs are now initialized with U again
[Mograsim.git]
/
era.mi
/
src
/
era
/
mi
/
logic
/
components
/
gates
/
MultiInputGate.java
diff --git
a/era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
b/era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
index
b85939e
..
0a9340c
100644
(file)
--- a/
era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
+++ b/
era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
@@
-1,61
+1,56
@@
package era.mi.logic.components.gates;
package era.mi.logic.components.gates;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import era.mi.logic.Bit;
import era.mi.logic.components.BasicComponent;
import java.util.List;
import era.mi.logic.Bit;
import era.mi.logic.components.BasicComponent;
-import era.mi.logic.wires.WireArray;
-import era.mi.logic.wires.WireArray.WireArrayInput;
+import era.mi.logic.wires.Wire.WireEnd;
public abstract class MultiInputGate extends BasicComponent
{
public abstract class MultiInputGate extends BasicComponent
{
- protected WireArray[] in;
- protected WireArray out;
- protected WireArrayInput outI;
+ protected WireEnd[] in;
+ protected WireEnd out;
protected final int length;
protected Operation op;
protected final int length;
protected Operation op;
-
- protected MultiInputGate(int processTime, Operation op, Wire
Array out, WireArray
... in)
+
+ protected MultiInputGate(int processTime, Operation op, Wire
End out, WireEnd
... in)
{
super(processTime);
this.op = op;
{
super(processTime);
this.op = op;
- length = out.length;
+ length = out.length
()
;
this.in = in.clone();
this.in = in.clone();
- if(in.length < 1)
+ if
(in.length < 1)
throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));
- for
(WireArray
w : in)
+ for
(WireEnd
w : in)
{
{
- if
(w.length
!= length)
+ if
(w.length()
!= length)
throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
w.addObserver(this);
}
this.out = out;
throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");
w.addObserver(this);
}
this.out = out;
- outI = out.createInput();
}
}
-
@Override
@Override
- public List<Wire
Array
> getAllInputs()
+ public List<Wire
End
> getAllInputs()
{
{
- return
Collections.unmodifiableList(Arrays.asList(in)
);
+ return
List.of(in
);
}
@Override
}
@Override
- public List<Wire
Array
> getAllOutputs()
+ public List<Wire
End
> getAllOutputs()
{
{
- return
Collections.unmodifiableList(Arrays.asList(out)
);
+ return
List.of(out
);
}
}
-
+
+ @Override
protected void compute()
{
Bit[] result = in[0].getValues();
protected void compute()
{
Bit[] result = in[0].getValues();
- for(int i = 1; i < in.length; i++)
+ for
(int i = 1; i < in.length; i++)
result = op.execute(result, in[i].getValues());
result = op.execute(result, in[i].getValues());
- out
I
.feedSignals(result);
+ out.feedSignals(result);
}
}
-
+
protected interface Operation
{
public Bit[] execute(Bit[] a, Bit[] b);
protected interface Operation
{
public Bit[] execute(Bit[] a, Bit[] b);