- int outputCount = pinNames.length;
- int oldOutputCount = outputSupermodelPins.size();
- super.setSize(width, Math.max(inputSupermodelPins.size(), outputCount) * pinDistance);
- if (oldOutputCount > outputCount)
- while (outputSupermodelPins.size() > outputCount)
- {
- outputSubmodelPins.remove(outputCount);
- super.removeSubmodelInterface(outputSupermodelPins.get(outputCount));
- }
- else if (oldOutputCount < outputCount)
- for (int i = oldOutputCount; i < outputCount; i++)
- {
- Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
- outputSubmodelPins.add(submodelPin);
- outputSupermodelPins.add(getSupermodelPin(submodelPin));
- }
- for (int i = 0; i < Math.min(oldOutputCount, outputCount); i++)
- {
- if (!outputSubmodelPins.get(i).name.equals(pinNames[i]))
- {
- super.removeSubmodelInterface(outputSupermodelPins.get(i));
- Pin submodelPin = super.addSubmodelInterface(pinNames[i], logicWidth, width, pinDistance / 2 + i * pinDistance);
- outputSubmodelPins.set(i, submodelPin);
- outputSupermodelPins.set(i, getSupermodelPin(submodelPin));
- }
- }
- }
-
- public List<Pin> getInputPins()
- {
- return inputSupermodelPinsUnmodifiable;