private int readValueForTypeSignature()

in application/org.openjdk.jmc.joverflow/src/main/java/org/openjdk/jmc/joverflow/heap/parser/HprofReader.java [684:757]


	private int readValueForTypeSignature(byte type, JavaThing[] resultArr) throws DumpCorruptedException, IOException {
		switch (type) {
		case '[':
		case 'L': {
			long id = readID();
			if (resultArr != null) {
				resultArr[0] = new JavaObjectRef(id);
			}
			return identifierSize;
		}
		case 'Z': {
			int b = in.readByte();
			if (b != 0 && b != 1) {
				vc.addWarning("Illegal boolean value read", Integer.toString(b));
			}
			if (resultArr != null) {
				resultArr[0] = new JavaBoolean(b != 0);
			}
			return 1;
		}
		case 'B': {
			byte b = in.readByte();
			if (resultArr != null) {
				resultArr[0] = new JavaByte(b);
			}
			return 1;
		}
		case 'S': {
			short s = in.readShort();
			if (resultArr != null) {
				resultArr[0] = new JavaShort(s);
			}
			return 2;
		}
		case 'C': {
			char ch = in.readChar();
			if (resultArr != null) {
				resultArr[0] = new JavaChar(ch);
			}
			return 2;
		}
		case 'I': {
			int val = in.readInt();
			if (resultArr != null) {
				resultArr[0] = new JavaInt(val);
			}
			return 4;
		}
		case 'J': {
			long val = in.readLong();
			if (resultArr != null) {
				resultArr[0] = new JavaLong(val);
			}
			return 8;
		}
		case 'F': {
			float val = in.readFloat();
			if (resultArr != null) {
				resultArr[0] = new JavaFloat(val);
			}
			return 4;
		}
		case 'D': {
			double val = in.readDouble();
			if (resultArr != null) {
				resultArr[0] = new JavaDouble(val);
			}
			return 8;
		}
		default: {
			throw new DumpCorruptedException("Bad value signature:  " + type);
		}
		}
	}