1 21 package proguard.classfile.visitor; 22 23 import proguard.classfile.*; 24 import proguard.classfile.attribute.CodeAttribute; 25 import proguard.classfile.constant.*; 26 import proguard.classfile.instruction.*; 27 import proguard.classfile.instruction.visitor.InstructionVisitor; 28 import proguard.classfile.util.*; 29 import proguard.classfile.constant.visitor.ConstantVisitor; 30 import proguard.util.ClassNameListMatcher; 31 32 33 44 public class DotClassClassVisitor 45 extends SimplifiedVisitor 46 implements InstructionVisitor, 47 ConstantVisitor 48 { 49 private ClassVisitor classVisitor; 50 51 52 57 public DotClassClassVisitor(ClassVisitor classVisitor) 58 { 59 this.classVisitor = classVisitor; 60 } 61 62 63 65 public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) {} 66 67 68 public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) 69 { 70 byte opcode = constantInstruction.opcode; 71 72 if (opcode == InstructionConstants.OP_LDC || 74 opcode == InstructionConstants.OP_LDC_W) 75 { 76 clazz.constantPoolEntryAccept(constantInstruction.constantIndex, 77 this); 78 } 79 } 80 81 82 84 public void visitAnyConstant(Clazz clazz, Constant constant) {} 85 86 87 public void visitClassConstant(Clazz clazz, ClassConstant classConstant) 88 { 89 classConstant.referencedClassAccept(classVisitor); 91 } 92 } 93 | Popular Tags |