private int skipOptionalSize(Symbol sig, int index) { byte c = sig.getByteAt(index); while (c >= '0' && c <= '9') { ++index; c = sig.getByteAt(index); } return index; }
/** Only valid for T_ARRAY; throws unspecified exception otherwise */ public ArrayInfo getArrayInfo() { int index = 1; int dim = 1; index = skipOptionalSize(signature, index); while (signature.getByteAt(index) == '[') { index++; dim++; skipOptionalSize(signature, index); } int elementType = BasicType.charToType((char) signature.getByteAt(index)); return new ArrayInfo(dim, elementType); }
public FieldType(Symbol signature) { this.signature = signature; this.first = (char) signature.getByteAt(0); if (Assert.ASSERTS_ENABLED) { switch (this.first) { case 'B': case 'C': case 'D': case 'F': case 'I': case 'J': case 'S': case 'Z': case 'L': case '[': break; // Ok. signature char known default: Assert.that( false, "Unknown char in field signature \"" + signature.asString() + "\": " + this.first); } } }