1 26 package net.sf.javaguard.classfile; 27 28 import java.io.*; 29 30 31 36 public class InnerClassesAttrInfo extends AttrInfo { 37 38 private int numberOfClasses; 39 40 private InnerClassesInfo[] innerClasses; 41 42 43 44 45 50 protected InnerClassesAttrInfo(ClassFile cf, int attrNameIndex, int attrLength) { 51 super(cf, attrNameIndex, attrLength); 52 } 53 54 55 56 57 60 protected String getAttrName() { 61 return ATTR_InnerClasses; 62 } 63 64 65 66 67 71 protected void setNumberOfClasses(int num) { 72 this.numberOfClasses = num; 73 } 74 75 76 80 protected int getNumberOfClasses() { 81 return numberOfClasses; 82 } 83 84 85 86 87 91 protected void setInnerClasses(InnerClassesInfo[] classes) { 92 innerClasses = classes; 93 } 94 95 96 101 protected InnerClassesInfo[] getInnerClasses() { 102 return innerClasses; 103 } 104 105 106 111 protected InnerClassesInfo getInnerClass(int index) { 112 return innerClasses[index]; 113 } 114 115 116 117 118 122 protected void markUtf8RefsInInfo(ConstantPool pool) { 123 for (int i = 0; i < getNumberOfClasses(); i++) { 124 getInnerClass(i).markUtf8Refs(pool); 125 } 126 } 127 128 129 130 131 135 protected void readInfo(DataInput din) 136 throws IOException { 137 setNumberOfClasses(din.readUnsignedShort()); 138 InnerClassesInfo[] classes = new InnerClassesInfo[getNumberOfClasses()]; 139 for (int i = 0; i < getNumberOfClasses(); i++) { 140 classes[i] = InnerClassesInfo.create(din); 141 } 142 setInnerClasses(classes); 143 } 144 145 146 151 public void writeInfo(DataOutput dout) 152 throws IOException { 153 dout.writeShort(getNumberOfClasses()); 154 for (int i = 0; i < getNumberOfClasses(); i++) { 155 getInnerClass(i).write(dout); 156 } 157 } 158 159 160 161 162 166 public void dump(PrintWriter pw, ClassFile cf) { 167 pw.println(getAttrName()); 168 pw.print("Number of entries: "); 169 pw.println(getNumberOfClasses()); 170 for (int i=0; i<getNumberOfClasses(); i++) { 171 getInnerClass(i).dump(pw, cf); 172 } 173 } 174 } 175 | Popular Tags |