private void Read() { // CA FE BA BE (U4) if (!this.VerifyMagicCode()) { throw new Exception(); } // VERSION MINOR (U2) this.Reader.Skip(2); // VERSION MAJOR (U2) this.Reader.Skip(2); // CONSTANT POOL this.Constants = JavaConstant.ReadAll(this.Reader); // ACCESS FLAGS (U2) this.Reader.Skip(2); // THIS CLASS (U2) this.Reader.Skip(2); // SUPER CLASS (U2) this.Reader.Skip(2); // INTERFACES this.ReadInterfaces(); // FIELDS this.ReadFields(); // METHODS this.ReadMethods(); // ATTRIBUTES POOL this.Attributes = JavaAttribute.ReadAll(this.Reader, this.Constants); }
public static IConstantHolder Read(ByteReader reader) { // CONSTANT TAG (U1) int tag = reader.ReadByte(); switch (tag) { case 1: return(JavaConstant.ReadUTF8(reader)); case 3: return(JavaConstant.ReadInteger(reader)); case 4: return(JavaConstant.ReadFloat(reader)); case 5: return(JavaConstant.ReadLong(reader)); case 6: return(JavaConstant.ReadDouble(reader)); case 7: return(JavaConstant.ReadClass(reader)); case 8: return(JavaConstant.ReadString(reader)); case 9: return(JavaConstant.ReadFieldRef(reader)); case 10: return(JavaConstant.ReadMethodRef(reader)); case 11: return(JavaConstant.ReadInterfaceMethodRef(reader)); case 12: return(JavaConstant.ReadNameAndType(reader)); case 15: return(JavaConstant.ReadMethodHandle(reader)); case 16: return(JavaConstant.ReadMethodType(reader)); case 18: return(JavaConstant.ReadInvokeDynamic(reader)); default: return(null); } }
public static JavaConstant[] ReadAll(ByteReader reader) { // CONSTANT POOL LENGTH (U2) int length = reader.ReadShort() - 1; IConstantHolder[] holders = new IConstantHolder[length]; for (int i = 0; i < length; i++) { holders[i] = JavaConstant.Read(reader); } JavaConstant[] array = new JavaConstant[length]; for (int i = 0; i < length; i++) { array[i] = holders[i].GetConstant(holders); } return(array); }
public StaticConstantHolder(JavaConstant constant) { this.Constant = constant; }