+
+ public Bit[] wireValuesExcludingMe()
+ {
+ Bit[] bits = Bit.Z.makeArray(length);
+ for (WireArrayEnd wai : inputs)
+ {
+ if (wai == this)
+ continue;
+ Util.combineInto(bits, wai.getValues());
+ }
+ return bits;
+ }
+
+ public Bit getWireValue()
+ {
+ return owner.getValue();
+ }
+
+ public Bit[] getWireValues()
+ {
+ return owner.getValues();
+ }
+
+ @Override
+ public String toString()
+ {
+ return Arrays.toString(inputValues);
+ }
+
+ @Override
+ public void close()
+ {
+ inputs.remove(this);
+ open = false;
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return String.format("wire 0x%08x value: %s inputs: %s", hashCode(), Arrays.toString(values), inputs);
+ }
+
+ public static WireArrayEnd[] extractInputs(WireArray[] w)
+ {
+ WireArrayEnd[] inputs = new WireArrayEnd[w.length];
+ for (int i = 0; i < w.length; i++)
+ inputs[i] = w[i].createInput();
+ return inputs;