in src/main/java/org/apache/commons/compress/harmony/pack200/NewAttributeBands.java [179:234]
public void addAttributeToBand(final NewAttribute attribute, final InputStream inputStream) {
Object val = null;
int value = 0;
switch (tag) {
case "B":
case "FB":
value = readInteger(1, inputStream) & 0xFF; // unsigned byte
break;
case "SB":
value = readInteger(1, inputStream);
break;
case "H":
case "FH":
value = readInteger(2, inputStream) & 0xFFFF; // unsigned short
break;
case "SH":
value = readInteger(2, inputStream);
break;
case "I":
case "FI":
case "SI":
value = readInteger(4, inputStream);
break;
case "V":
case "FV":
case "SV":
break;
default:
if (tag.startsWith("PO") || tag.startsWith("OS")) {
final char uint_type = tag.substring(2).toCharArray()[0];
final int length = getLength(uint_type);
value = readInteger(length, inputStream);
value += previousIntegral.previousPValue;
val = attribute.getLabel(value);
previousPValue = value;
} else if (tag.startsWith("P")) {
final char uint_type = tag.substring(1).toCharArray()[0];
final int length = getLength(uint_type);
value = readInteger(length, inputStream);
val = attribute.getLabel(value);
previousPValue = value;
} else if (tag.startsWith("O")) {
final char uint_type = tag.substring(1).toCharArray()[0];
final int length = getLength(uint_type);
value = readInteger(length, inputStream);
value += previousIntegral.previousPValue;
val = attribute.getLabel(value);
previousPValue = value;
}
break;
}
if (val == null) {
val = Integer.valueOf(value);
}
band.add(val);
}