| 1 21 package proguard.classfile.visitor; 22 23 import proguard.classfile.*; 24 import proguard.classfile.attribute.*; 25 import proguard.classfile.attribute.annotation.*; 26 import proguard.classfile.attribute.annotation.visitor.*; 27 import proguard.classfile.attribute.visitor.*; 28 import proguard.classfile.constant.*; 29 import proguard.classfile.constant.visitor.ConstantVisitor; 30 import proguard.classfile.util.SimplifiedVisitor; 31 32 39 public class ReferencedClassVisitor 40 extends SimplifiedVisitor 41 implements ClassVisitor, 42 MemberVisitor, 43 ConstantVisitor, 44 AttributeVisitor, 45 LocalVariableInfoVisitor, 46 LocalVariableTypeInfoVisitor, 47 AnnotationVisitor, 48 ElementValueVisitor 49 { 50 private ClassVisitor classVisitor; 51 52 53 public ReferencedClassVisitor(ClassVisitor classVisitor) 54 { 55 this.classVisitor = classVisitor; 56 } 57 58 59 61 public void visitProgramClass(ProgramClass programClass) 62 { 63 programClass.constantPoolEntriesAccept(this); 65 66 programClass.fieldsAccept(this); 68 programClass.methodsAccept(this); 69 70 programClass.attributesAccept(this); 72 } 73 74 75 public void visitLibraryClass(LibraryClass libraryClass) 76 { 77 libraryClass.fieldsAccept(this); 79 libraryClass.methodsAccept(this); 80 } 81 82 83 85 public void visitProgramMember(ProgramClass programClass, ProgramMember programMember) 86 { 87 programMember.referencedClassesAccept(classVisitor); 89 90 programMember.attributesAccept(programClass, this); 92 } 93 94 95 public void visitLibraryMember(LibraryClass programClass, LibraryMember libraryMember) 96 { 97 libraryMember.referencedClassesAccept(classVisitor); 99 } 100 101 102 104 public void visitAnyConstant(Clazz clazz, Constant constant) {} 105 106 107 public void visitStringConstant(Clazz clazz, StringConstant stringConstant) 108 { 109 stringConstant.referencedClassAccept(classVisitor); 111 } 112 113 114 public void visitAnyRefConstant(Clazz clazz, RefConstant refConstant) 115 { 116 refConstant.referencedClassAccept(classVisitor); 118 } 119 120 121 public void visitClassConstant(Clazz clazz, ClassConstant classConstant) 122 { 123 classConstant.referencedClassAccept(classVisitor); 125 } 126 127 128 130 public void visitAnyAttribute(Clazz clazz, Attribute attribute) {} 131 132 133 public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute) 134 { 135 enclosingMethodAttribute.referencedClassAccept(classVisitor); 137 } 138 139 140 public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) 141 { 142 codeAttribute.attributesAccept(clazz, method, this); 144 } 145 146 147 public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute) 148 { 149 localVariableTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this); 151 } 152 153 154 public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute) 155 { 156 localVariableTypeTableAttribute.localVariablesAccept(clazz, method, codeAttribute, this); 158 } 159 160 161 public void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute) 162 { 163 signatureAttribute.referencedClassesAccept(classVisitor); 165 } 166 167 168 public void visitAnyAnnotationsAttribute(Clazz clazz, AnnotationsAttribute annotationsAttribute) 169 { 170 annotationsAttribute.annotationsAccept(clazz, this); 172 } 173 174 175 public void visitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute) 176 { 177 parameterAnnotationsAttribute.annotationsAccept(clazz, method, this); 179 } 180 181 182 public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute) 183 { 184 annotationDefaultAttribute.defaultValueAccept(clazz, this); 186 } 187 188 189 191 public void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo) 192 { 193 localVariableInfo.referencedClassAccept(classVisitor); 195 } 196 197 198 200 public void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo) 201 { 202 localVariableTypeInfo.referencedClassesAccept(classVisitor); 204 } 205 206 207 209 public void visitAnnotation(Clazz clazz, Annotation annotation) 210 { 211 annotation.referencedClassesAccept(classVisitor); 213 214 annotation.elementValuesAccept(clazz, this); 216 } 217 218 219 221 public void visitAnyElementValue(Clazz clazz, Annotation annotation, ElementValue elementValue) {} 222 223 224 public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue) 225 { 226 enumConstantElementValue.referencedClassesAccept(classVisitor); 228 } 229 230 231 public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue) 232 { 233 classElementValue.referencedClassesAccept(classVisitor); 235 } 236 237 238 public void visitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue) 239 { 240 arrayElementValue.elementValuesAccept(clazz, annotation, this); 242 } 243 } 244 | Popular Tags |