in src/main/java/org/apache/commons/compress/harmony/pack200/ClassBands.java [903:980]
public void pack(final OutputStream out) throws IOException, Pack200Exception {
PackingUtils.log("Writing class bands...");
byte[] encodedBand = encodeBandInt("class_this", getInts(class_this), Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from class_this[" + class_this.length + "]");
encodedBand = encodeBandInt("class_super", getInts(class_super), Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from class_super[" + class_super.length + "]");
encodedBand = encodeBandInt("class_interface_count", class_interface_count, Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from class_interface_count["
+ class_interface_count.length + "]");
final int totalInterfaces = sum(class_interface_count);
final int[] classInterface = new int[totalInterfaces];
int k = 0;
for (final CPClass[] element : class_interface) {
if (element != null) {
for (final CPClass cpClass : element) {
classInterface[k] = cpClass.getIndex();
k++;
}
}
}
encodedBand = encodeBandInt("class_interface", classInterface, Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from class_interface[" + classInterface.length + "]");
encodedBand = encodeBandInt("class_field_count", class_field_count, Codec.DELTA5);
out.write(encodedBand);
PackingUtils
.log("Wrote " + encodedBand.length + " bytes from class_field_count[" + class_field_count.length + "]");
encodedBand = encodeBandInt("class_method_count", class_method_count, Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log(
"Wrote " + encodedBand.length + " bytes from class_method_count[" + class_method_count.length + "]");
final int totalFields = sum(class_field_count);
final int[] fieldDescr = new int[totalFields];
k = 0;
for (int i = 0; i < index; i++) {
for (int j = 0; j < field_descr[i].length; j++) {
final CPNameAndType descr = field_descr[i][j];
fieldDescr[k] = descr.getIndex();
k++;
}
}
encodedBand = encodeBandInt("field_descr", fieldDescr, Codec.DELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from field_descr[" + fieldDescr.length + "]");
writeFieldAttributeBands(out);
final int totalMethods = sum(class_method_count);
final int[] methodDescr = new int[totalMethods];
k = 0;
for (int i = 0; i < index; i++) {
for (int j = 0; j < method_descr[i].length; j++) {
final CPNameAndType descr = method_descr[i][j];
methodDescr[k] = descr.getIndex();
k++;
}
}
encodedBand = encodeBandInt("method_descr", methodDescr, Codec.MDELTA5);
out.write(encodedBand);
PackingUtils.log("Wrote " + encodedBand.length + " bytes from method_descr[" + methodDescr.length + "]");
writeMethodAttributeBands(out);
writeClassAttributeBands(out);
writeCodeBands(out);
}