3 import java.util.Vector;
5 import IR.AnnotationDescriptor;
7 public class Modifiers {
8 public static final int PUBLIC=1;
9 public static final int PROTECTED=2;
10 public static final int PRIVATE=4;
11 public static final int STATIC=8;
12 public static final int ABSTRACT=16;
13 public static final int FINAL=32;
14 public static final int NATIVE=64;
15 public static final int SYNCHRONIZED=128;
16 public static final int TRANSIENT=256;
17 public static final int VOLATILE=512;
19 public static final int ATOMIC=2048;
21 // java annotation can be intermixed freely with modifiers
22 // so Modifiers maintains the list of annotations for later usage
23 Vector<AnnotationDescriptor> annotations;
28 annotations=new Vector<AnnotationDescriptor>();
31 public Modifiers(int v) {
35 public void addAnnotation(AnnotationDescriptor an){
39 public Vector<AnnotationDescriptor> getAnnotations(){
43 public void addModifier(int mod) {
45 if (isSynchronized()&&isNative())
46 throw new Error("Synchronized native methods are not supported");
49 public boolean isAtomic() {
50 return ((value&ATOMIC)!=0);
53 public boolean isAbstract() {
54 return ((value&ABSTRACT)!=0);
57 public boolean isSynchronized() {
58 return ((value&SYNCHRONIZED)!=0);
61 public boolean isStatic() {
62 return ((value&STATIC)!=0);
65 public boolean isNative() {
66 return ((value&NATIVE)!=0);
69 public boolean isFinal() {
70 return ((value&FINAL)!=0);
73 public boolean isVolatile() {
74 return ((value&VOLATILE)!= 0);
77 public boolean isTransient() {
78 return ((value & TRANSIENT) != 0);
81 public String toString() {
83 if ((value&PUBLIC)!=0)
85 if ((value&PROTECTED)!=0)
87 if ((value&PRIVATE)!=0)
89 if ((value&STATIC)!=0)
93 if ((value&NATIVE)!=0)
95 if ((value&SYNCHRONIZED)!=0)
97 if ((value&ATOMIC)!=0)
99 if ((value&ABSTRACT)!=0)
101 if((value&VOLATILE)!=0)
103 if((value&TRANSIENT)!=0)