View Javadoc

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