package IR.Tree; public class Modifiers { public static final int PUBLIC=1; public static final int PROTECTED=2; public static final int PRIVATE=4; public static final int STATIC=8; // ABSTRACT=16 public static final int FINAL=32; public static final int NATIVE=64; public static final int SYNCHRONIZED=128; public static final int ATOMIC=2048; // TRANSIENT=256 // VOLATILE=512 // STRICTFP=1024 private int value; public Modifiers() { value=0; } public Modifiers(int v) { value=v; } public void addModifier(int mod) { value|=mod; if (isSynchronized()&&isNative()) throw new Error("Synchronized native methods are not supported"); } public boolean isAtomic() { return ((value&ATOMIC)!=0); } public boolean isSynchronized() { return ((value&SYNCHRONIZED)!=0); } public boolean isStatic() { return ((value&STATIC)!=0); } public boolean isNative() { return ((value&NATIVE)!=0); } public String toString() { String st=""; if ((value&PUBLIC)!=0) st+="public "; if ((value&PROTECTED)!=0) st+="protected "; if ((value&PRIVATE)!=0) st+="private "; if ((value&STATIC)!=0) st+="static "; if ((value&FINAL)!=0) st+="final "; if ((value&NATIVE)!=0) st+="native "; if ((value&SYNCHRONIZED)!=0) st+="synchronized "; if ((value&ATOMIC)!=0) st+="atomic "; return st; } }