| 1 21 package proguard.classfile.util; 22 23 import proguard.classfile.*; 24 25 26 33 public class AccessUtil 34 { 35 public static final int PRIVATE = 0; 36 public static final int PACKAGE_VISIBLE = 1; 37 public static final int PROTECTED = 2; 38 public static final int PUBLIC = 3; 39 40 41 private static final int ACCESS_MASK = 43 ClassConstants.INTERNAL_ACC_PUBLIC | 44 ClassConstants.INTERNAL_ACC_PRIVATE | 45 ClassConstants.INTERNAL_ACC_PROTECTED; 46 47 48 55 public static int accessLevel(int accessFlags) 56 { 57 switch (accessFlags & ACCESS_MASK) 58 { 59 case ClassConstants.INTERNAL_ACC_PRIVATE: return PRIVATE; 60 default: return PACKAGE_VISIBLE; 61 case ClassConstants.INTERNAL_ACC_PROTECTED: return PROTECTED; 62 case ClassConstants.INTERNAL_ACC_PUBLIC: return PUBLIC; 63 } 64 } 65 66 67 77 public static int accessFlags(int accessLevel) 78 { 79 switch (accessLevel) 80 { 81 case PRIVATE: return ClassConstants.INTERNAL_ACC_PRIVATE; 82 default: return 0; 83 case PROTECTED: return ClassConstants.INTERNAL_ACC_PROTECTED; 84 case PUBLIC: return ClassConstants.INTERNAL_ACC_PUBLIC; 85 } 86 } 87 88 89 94 public static int replaceAccessFlags(int accessFlags, int newAccessFlags) 95 { 96 if (newAccessFlags == ClassConstants.INTERNAL_ACC_PRIVATE) 98 { 99 accessFlags &= ~ClassConstants.INTERNAL_ACC_FINAL; 100 } 101 102 return (accessFlags & ~ACCESS_MASK) | 103 (newAccessFlags & ACCESS_MASK); 104 } 105 } 106 | Popular Tags |