src/share/classes/com/sun/tools/javac/code/Flags.java

changeset 80
5c9cdeb740f2
parent 1
9a66ca7c79fa
child 117
24a47c3062fe
     1.1 --- a/src/share/classes/com/sun/tools/javac/code/Flags.java	Thu Jul 24 11:12:41 2008 +0100
     1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Flags.java	Thu Jul 24 19:06:57 2008 +0100
     1.3 @@ -25,6 +25,7 @@
     1.4  
     1.5  package com.sun.tools.javac.code;
     1.6  
     1.7 +import java.util.EnumSet;
     1.8  import java.util.Collections;
     1.9  import java.util.Map;
    1.10  import java.util.Set;
    1.11 @@ -43,38 +44,49 @@
    1.12  
    1.13      public static String toString(long flags) {
    1.14          StringBuffer buf = new StringBuffer();
    1.15 -        if ((flags&PUBLIC) != 0) buf.append("public ");
    1.16 -        if ((flags&PRIVATE) != 0) buf.append("private ");
    1.17 -        if ((flags&PROTECTED) != 0) buf.append("protected ");
    1.18 -        if ((flags&STATIC) != 0) buf.append("static ");
    1.19 -        if ((flags&FINAL) != 0) buf.append("final ");
    1.20 -        if ((flags&SYNCHRONIZED) != 0) buf.append("synchronized ");
    1.21 -        if ((flags&VOLATILE) != 0) buf.append("volatile ");
    1.22 -        if ((flags&TRANSIENT) != 0) buf.append("transient ");
    1.23 -        if ((flags&NATIVE) != 0) buf.append("native ");
    1.24 -        if ((flags&INTERFACE) != 0) buf.append("interface ");
    1.25 -        if ((flags&ABSTRACT) != 0) buf.append("abstract ");
    1.26 -        if ((flags&STRICTFP) != 0) buf.append("strictfp ");
    1.27 -        if ((flags&BRIDGE) != 0) buf.append("bridge ");
    1.28 -        if ((flags&SYNTHETIC) != 0) buf.append("synthetic ");
    1.29 -        if ((flags&DEPRECATED) != 0) buf.append("deprecated ");
    1.30 -        if ((flags&HASINIT) != 0) buf.append("hasinit ");
    1.31 -        if ((flags&ENUM) != 0) buf.append("enum ");
    1.32 -        if ((flags&IPROXY) != 0) buf.append("iproxy ");
    1.33 -        if ((flags&NOOUTERTHIS) != 0) buf.append("noouterthis ");
    1.34 -        if ((flags&EXISTS) != 0) buf.append("exists ");
    1.35 -        if ((flags&COMPOUND) != 0) buf.append("compound ");
    1.36 -        if ((flags&CLASS_SEEN) != 0) buf.append("class_seen ");
    1.37 -        if ((flags&SOURCE_SEEN) != 0) buf.append("source_seen ");
    1.38 -        if ((flags&LOCKED) != 0) buf.append("locked ");
    1.39 -        if ((flags&UNATTRIBUTED) != 0) buf.append("unattributed ");
    1.40 -        if ((flags&ANONCONSTR) != 0) buf.append("anonconstr ");
    1.41 -        if ((flags&ACYCLIC) != 0) buf.append("acyclic ");
    1.42 -        if ((flags&PARAMETER) != 0) buf.append("parameter ");
    1.43 -        if ((flags&VARARGS) != 0) buf.append("varargs ");
    1.44 +        String sep = "";
    1.45 +        for (Flag s : asFlagSet(flags)) {
    1.46 +            buf.append(sep);
    1.47 +            buf.append(s);
    1.48 +            sep = " ";
    1.49 +        }
    1.50          return buf.toString();
    1.51      }
    1.52  
    1.53 +    public static EnumSet<Flag> asFlagSet(long mask) {
    1.54 +        EnumSet<Flag> flags = EnumSet.noneOf(Flag.class);
    1.55 +        if ((mask&PUBLIC) != 0) flags.add(Flag.PUBLIC);
    1.56 +        if ((mask&PRIVATE) != 0) flags.add(Flag.PRIVATE);
    1.57 +        if ((mask&PROTECTED) != 0) flags.add(Flag.PROTECTED);
    1.58 +        if ((mask&STATIC) != 0) flags.add(Flag.STATIC);
    1.59 +        if ((mask&FINAL) != 0) flags.add(Flag.FINAL);
    1.60 +        if ((mask&SYNCHRONIZED) != 0) flags.add(Flag.SYNCHRONIZED);
    1.61 +        if ((mask&VOLATILE) != 0) flags.add(Flag.VOLATILE);
    1.62 +        if ((mask&TRANSIENT) != 0) flags.add(Flag.TRANSIENT);
    1.63 +        if ((mask&NATIVE) != 0) flags.add(Flag.NATIVE);
    1.64 +        if ((mask&INTERFACE) != 0) flags.add(Flag.INTERFACE);
    1.65 +        if ((mask&ABSTRACT) != 0) flags.add(Flag.ABSTRACT);
    1.66 +        if ((mask&STRICTFP) != 0) flags.add(Flag.STRICTFP);
    1.67 +        if ((mask&BRIDGE) != 0) flags.add(Flag.BRIDGE);
    1.68 +        if ((mask&SYNTHETIC) != 0) flags.add(Flag.SYNTHETIC);
    1.69 +        if ((mask&DEPRECATED) != 0) flags.add(Flag.DEPRECATED);
    1.70 +        if ((mask&HASINIT) != 0) flags.add(Flag.HASINIT);
    1.71 +        if ((mask&ENUM) != 0) flags.add(Flag.ENUM);
    1.72 +        if ((mask&IPROXY) != 0) flags.add(Flag.IPROXY);
    1.73 +        if ((mask&NOOUTERTHIS) != 0) flags.add(Flag.NOOUTERTHIS);
    1.74 +        if ((mask&EXISTS) != 0) flags.add(Flag.EXISTS);
    1.75 +        if ((mask&COMPOUND) != 0) flags.add(Flag.COMPOUND);
    1.76 +        if ((mask&CLASS_SEEN) != 0) flags.add(Flag.CLASS_SEEN);
    1.77 +        if ((mask&SOURCE_SEEN) != 0) flags.add(Flag.SOURCE_SEEN);
    1.78 +        if ((mask&LOCKED) != 0) flags.add(Flag.LOCKED);
    1.79 +        if ((mask&UNATTRIBUTED) != 0) flags.add(Flag.UNATTRIBUTED);
    1.80 +        if ((mask&ANONCONSTR) != 0) flags.add(Flag.ANONCONSTR);
    1.81 +        if ((mask&ACYCLIC) != 0) flags.add(Flag.ACYCLIC);
    1.82 +        if ((mask&PARAMETER) != 0) flags.add(Flag.PARAMETER);
    1.83 +        if ((mask&VARARGS) != 0) flags.add(Flag.VARARGS);
    1.84 +        return flags;
    1.85 +    }
    1.86 +
    1.87      /* Standard Java flags.
    1.88       */
    1.89      public static final int PUBLIC       = 1<<0;
    1.90 @@ -271,4 +283,48 @@
    1.91      public static boolean isConstant(Symbol.VarSymbol symbol) {
    1.92          return symbol.getConstValue() != null;
    1.93      }
    1.94 +
    1.95 +    public enum Flag {
    1.96 +
    1.97 +        PUBLIC("public"),
    1.98 +        PRIVATE("private"),
    1.99 +        PROTECTED("protected"),
   1.100 +        STATIC("static"),
   1.101 +        FINAL("final"),
   1.102 +        SYNCHRONIZED("synchronized"),
   1.103 +        VOLATILE("volatile"),
   1.104 +        TRANSIENT("transient"),
   1.105 +        NATIVE("native"),
   1.106 +        INTERFACE("interface"),
   1.107 +        ABSTRACT("abstract"),
   1.108 +        STRICTFP("strictfp"),
   1.109 +        BRIDGE("bridge"),
   1.110 +        SYNTHETIC("synthetic"),
   1.111 +        DEPRECATED("deprecated"),
   1.112 +        HASINIT("hasinit"),
   1.113 +        ENUM("enum"),
   1.114 +        IPROXY("iproxy"),
   1.115 +        NOOUTERTHIS("noouterthis"),
   1.116 +        EXISTS("exists"),
   1.117 +        COMPOUND("compound"),
   1.118 +        CLASS_SEEN("class_seen"),
   1.119 +        SOURCE_SEEN("source_seen"),
   1.120 +        LOCKED("locked"),
   1.121 +        UNATTRIBUTED("unattributed"),
   1.122 +        ANONCONSTR("anonconstr"),
   1.123 +        ACYCLIC("acyclic"),
   1.124 +        PARAMETER("parameter"),
   1.125 +        VARARGS("varargs"),
   1.126 +        PACKAGE("package");
   1.127 +
   1.128 +        String name;
   1.129 +
   1.130 +        Flag(String name) {
   1.131 +            this.name = name;
   1.132 +        }
   1.133 +
   1.134 +        public String toString() {
   1.135 +            return name;
   1.136 +        }
   1.137 +    }
   1.138  }

mercurial