public final int travelTime;
private List<WireArrayObserver> observers = new ArrayList<WireArrayObserver>();
public final int length;
- private List<WireArrayEnd> inputs = new ArrayList<WireArrayEnd>();
+ List<WireArrayEnd> inputs = new ArrayList<WireArrayEnd>();
public WireArray(int length, int travelTime)
{
Bit[] bits = input.getValues();
for (int i = 0; i < length; i++)
{
- if (Bit.Z.equals(bits[i]) || newValues[i].equals(bits[i]))
- continue;
- else if (Bit.Z.equals(newValues[i]))
- newValues[i] = bits[i];
- else
- newValues[i] = Bit.X;
+ newValues[i] = newValues[i].combineWith(bits[i]);
}
}
}
}
- private void recalculate()
+ void recalculate()
{
switch (inputs.size())
{
return new WireArrayEnd(this);
}
- private void registerInput(WireArrayEnd toRegister)
+ void registerInput(WireArrayEnd toRegister)
{
inputs.add(toRegister);
}
{
public final WireArray owner;
private boolean open;
- private Bit[] inputValues;
+ Bit[] inputValues;
- private WireArrayEnd(WireArray owner)
+ WireArrayEnd(WireArray owner)
{
super();
this.owner = owner;
private void initValues()
{
- inputValues = Bit.Z.makeArray(length);
+ inputValues = Bit.U.makeArray(length);
}
/**
*/
public void feedSignals(Bit... newValues)
{
- if (newValues.length == length)
- {
- feedSignals(0, newValues);
- } else
+ if (newValues.length != length)
throw new IllegalArgumentException(
String.format("Attempted to input %d bits instead of %d bits.", newValues.length, length));
+ feedSignals(0, newValues);
+
}
/**