Add support for volatile keyword in mgc version. For Tilera, as we execute a process...
[IRC.git] / Robust / src / IR / Tree / Modifiers.java
1 package IR.Tree;
2
3 public class Modifiers {
4   public static final int PUBLIC=1;
5   public static final int PROTECTED=2;
6   public static final int PRIVATE=4;
7   public static final int STATIC=8;
8   public static final int ABSTRACT=16;
9   public static final int FINAL=32;
10   public static final int NATIVE=64;
11   public static final int SYNCHRONIZED=128;
12 //      TRANSIENT=256
13   public static final int VOLATILE=512;
14 //      STRICTFP=1024
15   public static final int ATOMIC=2048;
16
17
18   private int value;
19
20   public Modifiers() {
21     value=0;
22   }
23
24   public Modifiers(int v) {
25     value=v;
26   }
27
28   public void addModifier(int mod) {
29     value|=mod;
30     if (isSynchronized()&&isNative())
31       throw new Error("Synchronized native methods are not supported");
32   }
33
34   public boolean isAtomic() {
35     return ((value&ATOMIC)!=0);
36   }
37   
38   public boolean isAbstract() {
39     return ((value&ABSTRACT)!=0);
40   }
41
42   public boolean isSynchronized() {
43     return ((value&SYNCHRONIZED)!=0);
44   }
45
46   public boolean isStatic() {
47     return ((value&STATIC)!=0);
48   }
49
50   public boolean isNative() {
51     return ((value&NATIVE)!=0);
52   }
53
54   public boolean isFinal() {
55     return ((value&FINAL)!=0);
56   }
57   
58   public boolean isVolatile() {
59     return ((value&VOLATILE)!= 0);
60   }
61
62   public String toString() {
63     String st="";
64     if ((value&PUBLIC)!=0)
65       st+="public ";
66     if ((value&PROTECTED)!=0)
67       st+="protected ";
68     if ((value&PRIVATE)!=0)
69       st+="private ";
70     if ((value&STATIC)!=0)
71       st+="static ";
72     if ((value&FINAL)!=0)
73       st+="final ";
74     if ((value&NATIVE)!=0)
75       st+="native ";
76     if ((value&SYNCHRONIZED)!=0)
77       st+="synchronized ";
78     if ((value&ATOMIC)!=0)
79       st+="atomic ";
80     if ((value&ABSTRACT)!=0)
81       st+="abstract ";
82     if((value&VOLATILE)!=0)
83       st += "volatile ";
84     return st;
85   }
86 }