langtools/src/share/classes/com/sun/tools/javac/code/Flags.java
changeset 939 38e24969c7e9
parent 10 06bc494ca11e
child 1264 076a3cde30d5
equal deleted inserted replaced
938:13aae74ca013 939:38e24969c7e9
    23  * have any questions.
    23  * have any questions.
    24  */
    24  */
    25 
    25 
    26 package com.sun.tools.javac.code;
    26 package com.sun.tools.javac.code;
    27 
    27 
       
    28 import java.util.EnumSet;
    28 import java.util.Collections;
    29 import java.util.Collections;
    29 import java.util.Map;
    30 import java.util.Map;
    30 import java.util.Set;
    31 import java.util.Set;
    31 import javax.lang.model.element.Modifier;
    32 import javax.lang.model.element.Modifier;
    32 
    33 
    41 
    42 
    42     private Flags() {} // uninstantiable
    43     private Flags() {} // uninstantiable
    43 
    44 
    44     public static String toString(long flags) {
    45     public static String toString(long flags) {
    45         StringBuffer buf = new StringBuffer();
    46         StringBuffer buf = new StringBuffer();
    46         if ((flags&PUBLIC) != 0) buf.append("public ");
    47         String sep = "";
    47         if ((flags&PRIVATE) != 0) buf.append("private ");
    48         for (Flag s : asFlagSet(flags)) {
    48         if ((flags&PROTECTED) != 0) buf.append("protected ");
    49             buf.append(sep);
    49         if ((flags&STATIC) != 0) buf.append("static ");
    50             buf.append(s);
    50         if ((flags&FINAL) != 0) buf.append("final ");
    51             sep = " ";
    51         if ((flags&SYNCHRONIZED) != 0) buf.append("synchronized ");
    52         }
    52         if ((flags&VOLATILE) != 0) buf.append("volatile ");
       
    53         if ((flags&TRANSIENT) != 0) buf.append("transient ");
       
    54         if ((flags&NATIVE) != 0) buf.append("native ");
       
    55         if ((flags&INTERFACE) != 0) buf.append("interface ");
       
    56         if ((flags&ABSTRACT) != 0) buf.append("abstract ");
       
    57         if ((flags&STRICTFP) != 0) buf.append("strictfp ");
       
    58         if ((flags&BRIDGE) != 0) buf.append("bridge ");
       
    59         if ((flags&SYNTHETIC) != 0) buf.append("synthetic ");
       
    60         if ((flags&DEPRECATED) != 0) buf.append("deprecated ");
       
    61         if ((flags&HASINIT) != 0) buf.append("hasinit ");
       
    62         if ((flags&ENUM) != 0) buf.append("enum ");
       
    63         if ((flags&IPROXY) != 0) buf.append("iproxy ");
       
    64         if ((flags&NOOUTERTHIS) != 0) buf.append("noouterthis ");
       
    65         if ((flags&EXISTS) != 0) buf.append("exists ");
       
    66         if ((flags&COMPOUND) != 0) buf.append("compound ");
       
    67         if ((flags&CLASS_SEEN) != 0) buf.append("class_seen ");
       
    68         if ((flags&SOURCE_SEEN) != 0) buf.append("source_seen ");
       
    69         if ((flags&LOCKED) != 0) buf.append("locked ");
       
    70         if ((flags&UNATTRIBUTED) != 0) buf.append("unattributed ");
       
    71         if ((flags&ANONCONSTR) != 0) buf.append("anonconstr ");
       
    72         if ((flags&ACYCLIC) != 0) buf.append("acyclic ");
       
    73         if ((flags&PARAMETER) != 0) buf.append("parameter ");
       
    74         if ((flags&VARARGS) != 0) buf.append("varargs ");
       
    75         return buf.toString();
    53         return buf.toString();
       
    54     }
       
    55 
       
    56     public static EnumSet<Flag> asFlagSet(long mask) {
       
    57         EnumSet<Flag> flags = EnumSet.noneOf(Flag.class);
       
    58         if ((mask&PUBLIC) != 0) flags.add(Flag.PUBLIC);
       
    59         if ((mask&PRIVATE) != 0) flags.add(Flag.PRIVATE);
       
    60         if ((mask&PROTECTED) != 0) flags.add(Flag.PROTECTED);
       
    61         if ((mask&STATIC) != 0) flags.add(Flag.STATIC);
       
    62         if ((mask&FINAL) != 0) flags.add(Flag.FINAL);
       
    63         if ((mask&SYNCHRONIZED) != 0) flags.add(Flag.SYNCHRONIZED);
       
    64         if ((mask&VOLATILE) != 0) flags.add(Flag.VOLATILE);
       
    65         if ((mask&TRANSIENT) != 0) flags.add(Flag.TRANSIENT);
       
    66         if ((mask&NATIVE) != 0) flags.add(Flag.NATIVE);
       
    67         if ((mask&INTERFACE) != 0) flags.add(Flag.INTERFACE);
       
    68         if ((mask&ABSTRACT) != 0) flags.add(Flag.ABSTRACT);
       
    69         if ((mask&STRICTFP) != 0) flags.add(Flag.STRICTFP);
       
    70         if ((mask&BRIDGE) != 0) flags.add(Flag.BRIDGE);
       
    71         if ((mask&SYNTHETIC) != 0) flags.add(Flag.SYNTHETIC);
       
    72         if ((mask&DEPRECATED) != 0) flags.add(Flag.DEPRECATED);
       
    73         if ((mask&HASINIT) != 0) flags.add(Flag.HASINIT);
       
    74         if ((mask&ENUM) != 0) flags.add(Flag.ENUM);
       
    75         if ((mask&IPROXY) != 0) flags.add(Flag.IPROXY);
       
    76         if ((mask&NOOUTERTHIS) != 0) flags.add(Flag.NOOUTERTHIS);
       
    77         if ((mask&EXISTS) != 0) flags.add(Flag.EXISTS);
       
    78         if ((mask&COMPOUND) != 0) flags.add(Flag.COMPOUND);
       
    79         if ((mask&CLASS_SEEN) != 0) flags.add(Flag.CLASS_SEEN);
       
    80         if ((mask&SOURCE_SEEN) != 0) flags.add(Flag.SOURCE_SEEN);
       
    81         if ((mask&LOCKED) != 0) flags.add(Flag.LOCKED);
       
    82         if ((mask&UNATTRIBUTED) != 0) flags.add(Flag.UNATTRIBUTED);
       
    83         if ((mask&ANONCONSTR) != 0) flags.add(Flag.ANONCONSTR);
       
    84         if ((mask&ACYCLIC) != 0) flags.add(Flag.ACYCLIC);
       
    85         if ((mask&PARAMETER) != 0) flags.add(Flag.PARAMETER);
       
    86         if ((mask&VARARGS) != 0) flags.add(Flag.VARARGS);
       
    87         return flags;
    76     }
    88     }
    77 
    89 
    78     /* Standard Java flags.
    90     /* Standard Java flags.
    79      */
    91      */
    80     public static final int PUBLIC       = 1<<0;
    92     public static final int PUBLIC       = 1<<0;
   269     }
   281     }
   270 
   282 
   271     public static boolean isConstant(Symbol.VarSymbol symbol) {
   283     public static boolean isConstant(Symbol.VarSymbol symbol) {
   272         return symbol.getConstValue() != null;
   284         return symbol.getConstValue() != null;
   273     }
   285     }
       
   286 
       
   287     public enum Flag {
       
   288 
       
   289         PUBLIC("public"),
       
   290         PRIVATE("private"),
       
   291         PROTECTED("protected"),
       
   292         STATIC("static"),
       
   293         FINAL("final"),
       
   294         SYNCHRONIZED("synchronized"),
       
   295         VOLATILE("volatile"),
       
   296         TRANSIENT("transient"),
       
   297         NATIVE("native"),
       
   298         INTERFACE("interface"),
       
   299         ABSTRACT("abstract"),
       
   300         STRICTFP("strictfp"),
       
   301         BRIDGE("bridge"),
       
   302         SYNTHETIC("synthetic"),
       
   303         DEPRECATED("deprecated"),
       
   304         HASINIT("hasinit"),
       
   305         ENUM("enum"),
       
   306         IPROXY("iproxy"),
       
   307         NOOUTERTHIS("noouterthis"),
       
   308         EXISTS("exists"),
       
   309         COMPOUND("compound"),
       
   310         CLASS_SEEN("class_seen"),
       
   311         SOURCE_SEEN("source_seen"),
       
   312         LOCKED("locked"),
       
   313         UNATTRIBUTED("unattributed"),
       
   314         ANONCONSTR("anonconstr"),
       
   315         ACYCLIC("acyclic"),
       
   316         PARAMETER("parameter"),
       
   317         VARARGS("varargs"),
       
   318         PACKAGE("package");
       
   319 
       
   320         String name;
       
   321 
       
   322         Flag(String name) {
       
   323             this.name = name;
       
   324         }
       
   325 
       
   326         public String toString() {
       
   327             return name;
       
   328         }
       
   329     }
   274 }
   330 }