1 21 package proguard.optimize.peephole; 22 23 import proguard.classfile.*; 24 import proguard.classfile.editor.MethodInvocationFixer; 25 import proguard.classfile.util.*; 26 import proguard.classfile.visitor.MemberVisitor; 27 import proguard.optimize.info.NonPrivateMemberMarker; 28 29 38 public class MemberPrivatizer 39 extends SimplifiedVisitor 40 implements MemberVisitor 41 { 42 private MemberVisitor extraFieldVisitor; 43 private MemberVisitor extraMethodVisitor; 44 45 46 49 public MemberPrivatizer() 50 { 51 this(null, null); 52 } 53 54 55 62 public MemberPrivatizer(MemberVisitor extraFieldVisitor, 63 MemberVisitor extraMethodVisitor) 64 { 65 this.extraFieldVisitor = extraFieldVisitor; 66 this.extraMethodVisitor = extraMethodVisitor; 67 } 68 69 70 72 public void visitProgramField(ProgramClass programClass, ProgramField programField) 73 { 74 if (NonPrivateMemberMarker.canBeMadePrivate(programField)) 76 { 77 programField.u2accessFlags = 79 AccessUtil.replaceAccessFlags(programField.u2accessFlags, 80 ClassConstants.INTERNAL_ACC_PRIVATE); 81 82 if (extraFieldVisitor != null) 84 { 85 extraFieldVisitor.visitProgramField(programClass, programField); 86 } 87 } 88 } 89 90 91 public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod) 92 { 93 if (NonPrivateMemberMarker.canBeMadePrivate(programMethod)) 95 { 96 programMethod.u2accessFlags = 98 AccessUtil.replaceAccessFlags(programMethod.u2accessFlags, 99 ClassConstants.INTERNAL_ACC_PRIVATE); 100 101 if (extraMethodVisitor != null) 103 { 104 extraMethodVisitor.visitProgramMethod(programClass, programMethod); 105 } 106 } 107 } 108 } 109 | Popular Tags |