1 4 package gnu.bytecode; 5 public class InnerClassesAttr extends Attribute 6 { 7 short count; 8 short[] data; 9 10 11 public InnerClassesAttr (ClassType cl) 12 { 13 super("InnerClasses"); 14 addToFrontOf(cl); 15 } 16 17 public InnerClassesAttr (short[] data, ClassType cl) 18 { 19 this(cl); 20 count = (short) (data.length >> 2); 21 this.data = data; 22 } 23 24 26 public int getLength() { return 2 + 8 * count; } 27 28 30 public void write (java.io.DataOutputStream dstr) 31 throws java.io.IOException 32 { 33 dstr.writeShort(count); 34 for (int i = 0; i < count; i++) 35 { 36 dstr.writeShort(data[4 * i]); dstr.writeShort(data[4 * i + 1]); dstr.writeShort(data[4 * i + 2]); dstr.writeShort(data[4 * i + 3]); } 41 } 42 43 public void print (ClassTypeWriter dst) 44 { 45 ClassType ctype = (ClassType) container; 46 ConstantPool constants = ctype.getConstants(); 47 dst.print("Attribute \""); 48 dst.print(getName()); 49 dst.print("\", length:"); 50 dst.print(getLength()); 51 dst.print(", count: "); 52 dst.println(count); 53 for (int i = 0; i < count; i++) 54 { 55 dst.print(" "); 56 int index; 57 index = data[4*i] & 0xFFFF; CpoolEntry centry = constants.getForced(index, ConstantPool.CLASS); 59 dst.print(((CpoolClass) centry).getStringName()); 60 dst.print("; "); 61 62 index = data[4*i+1] & 0xFFFF; if (index != 0) 64 { 65 dst.print("Member of "); 66 centry = constants.getForced(index, ConstantPool.CLASS); 67 dst.print(((CpoolClass) centry).getStringName()); 68 } 69 dst.print("; "); 70 71 index = data[4*i+2] & 0xFFFF; if (index != 0) 73 { 74 centry = constants.getForced(index, ConstantPool.UTF8); 75 dst.print(((CpoolUtf8) centry).string); 76 } 77 else 78 dst.print("(Anonymous)"); 79 dst.print(";"); 80 81 dst.print(Access.toString(data[4*i+3] & 0xFFFF, 'C')); 82 dst.println(); 83 } 84 } 85 } 86 | Popular Tags |