1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 package org.apache.bcel.classfile; 19 20 import org.apache.bcel.Const; 21 22 /** 23 * Super class for all objects that have modifiers like private, final, ... I.e. classes, fields, and methods. 24 * 25 * @version $Id$ 26 */ 27 public abstract class AccessFlags { 28 29 /** 30 * @deprecated (since 6.0) will be made private; do not access directly, use getter/setter 31 */ 32 @java.lang.Deprecated 33 protected int access_flags; // TODO not used externally at present 34 AccessFlags()35 public AccessFlags() { 36 } 37 38 /** 39 * @param a 40 * inital access flags 41 */ AccessFlags(final int a)42 public AccessFlags(final int a) { 43 access_flags = a; 44 } 45 46 /** 47 * @return Access flags of the object aka. "modifiers". 48 */ getAccessFlags()49 public final int getAccessFlags() { 50 return access_flags; 51 } 52 53 /** 54 * @return Access flags of the object aka. "modifiers". 55 */ getModifiers()56 public final int getModifiers() { 57 return access_flags; 58 } 59 60 /** 61 * Set access flags aka "modifiers". 62 * 63 * @param access_flags 64 * Access flags of the object. 65 */ setAccessFlags(final int access_flags)66 public final void setAccessFlags(final int access_flags) { 67 this.access_flags = access_flags; 68 } 69 70 /** 71 * Set access flags aka "modifiers". 72 * 73 * @param access_flags 74 * Access flags of the object. 75 */ setModifiers(final int access_flags)76 public final void setModifiers(final int access_flags) { 77 setAccessFlags(access_flags); 78 } 79 setFlag(final int flag, final boolean set)80 private void setFlag(final int flag, final boolean set) { 81 if ((access_flags & flag) != 0) { // Flag is set already 82 if (!set) { 83 access_flags ^= flag; 84 } 85 } else { // Flag not set 86 if (set) { 87 access_flags |= flag; 88 } 89 } 90 } 91 isPublic(final boolean flag)92 public final void isPublic(final boolean flag) { 93 setFlag(Const.ACC_PUBLIC, flag); 94 } 95 isPublic()96 public final boolean isPublic() { 97 return (access_flags & Const.ACC_PUBLIC) != 0; 98 } 99 isPrivate(final boolean flag)100 public final void isPrivate(final boolean flag) { 101 setFlag(Const.ACC_PRIVATE, flag); 102 } 103 isPrivate()104 public final boolean isPrivate() { 105 return (access_flags & Const.ACC_PRIVATE) != 0; 106 } 107 isProtected(final boolean flag)108 public final void isProtected(final boolean flag) { 109 setFlag(Const.ACC_PROTECTED, flag); 110 } 111 isProtected()112 public final boolean isProtected() { 113 return (access_flags & Const.ACC_PROTECTED) != 0; 114 } 115 isStatic(final boolean flag)116 public final void isStatic(final boolean flag) { 117 setFlag(Const.ACC_STATIC, flag); 118 } 119 isStatic()120 public final boolean isStatic() { 121 return (access_flags & Const.ACC_STATIC) != 0; 122 } 123 isFinal(final boolean flag)124 public final void isFinal(final boolean flag) { 125 setFlag(Const.ACC_FINAL, flag); 126 } 127 isFinal()128 public final boolean isFinal() { 129 return (access_flags & Const.ACC_FINAL) != 0; 130 } 131 isSynchronized(final boolean flag)132 public final void isSynchronized(final boolean flag) { 133 setFlag(Const.ACC_SYNCHRONIZED, flag); 134 } 135 isSynchronized()136 public final boolean isSynchronized() { 137 return (access_flags & Const.ACC_SYNCHRONIZED) != 0; 138 } 139 isVolatile(final boolean flag)140 public final void isVolatile(final boolean flag) { 141 setFlag(Const.ACC_VOLATILE, flag); 142 } 143 isVolatile()144 public final boolean isVolatile() { 145 return (access_flags & Const.ACC_VOLATILE) != 0; 146 } 147 isTransient(final boolean flag)148 public final void isTransient(final boolean flag) { 149 setFlag(Const.ACC_TRANSIENT, flag); 150 } 151 isTransient()152 public final boolean isTransient() { 153 return (access_flags & Const.ACC_TRANSIENT) != 0; 154 } 155 isNative(final boolean flag)156 public final void isNative(final boolean flag) { 157 setFlag(Const.ACC_NATIVE, flag); 158 } 159 isNative()160 public final boolean isNative() { 161 return (access_flags & Const.ACC_NATIVE) != 0; 162 } 163 isInterface(final boolean flag)164 public final void isInterface(final boolean flag) { 165 setFlag(Const.ACC_INTERFACE, flag); 166 } 167 isInterface()168 public final boolean isInterface() { 169 return (access_flags & Const.ACC_INTERFACE) != 0; 170 } 171 isAbstract(final boolean flag)172 public final void isAbstract(final boolean flag) { 173 setFlag(Const.ACC_ABSTRACT, flag); 174 } 175 isAbstract()176 public final boolean isAbstract() { 177 return (access_flags & Const.ACC_ABSTRACT) != 0; 178 } 179 isStrictfp(final boolean flag)180 public final void isStrictfp(final boolean flag) { 181 setFlag(Const.ACC_STRICT, flag); 182 } 183 isStrictfp()184 public final boolean isStrictfp() { 185 return (access_flags & Const.ACC_STRICT) != 0; 186 } 187 isSynthetic(final boolean flag)188 public final void isSynthetic(final boolean flag) { 189 setFlag(Const.ACC_SYNTHETIC, flag); 190 } 191 isSynthetic()192 public final boolean isSynthetic() { 193 return (access_flags & Const.ACC_SYNTHETIC) != 0; 194 } 195 isAnnotation(final boolean flag)196 public final void isAnnotation(final boolean flag) { 197 setFlag(Const.ACC_ANNOTATION, flag); 198 } 199 isAnnotation()200 public final boolean isAnnotation() { 201 return (access_flags & Const.ACC_ANNOTATION) != 0; 202 } 203 isEnum(final boolean flag)204 public final void isEnum(final boolean flag) { 205 setFlag(Const.ACC_ENUM, flag); 206 } 207 isEnum()208 public final boolean isEnum() { 209 return (access_flags & Const.ACC_ENUM) != 0; 210 } 211 isVarArgs(final boolean flag)212 public final void isVarArgs(final boolean flag) { 213 setFlag(Const.ACC_VARARGS, flag); 214 } 215 isVarArgs()216 public final boolean isVarArgs() { 217 return (access_flags & Const.ACC_VARARGS) != 0; 218 } 219 } 220