--- a/langtools/src/share/classes/com/sun/tools/javac/code/Flags.java Thu Jul 24 11:12:41 2008 +0100
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Flags.java Thu Jul 24 19:06:57 2008 +0100
@@ -25,6 +25,7 @@
package com.sun.tools.javac.code;
+import java.util.EnumSet;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
@@ -43,38 +44,49 @@
public static String toString(long flags) {
StringBuffer buf = new StringBuffer();
- if ((flags&PUBLIC) != 0) buf.append("public ");
- if ((flags&PRIVATE) != 0) buf.append("private ");
- if ((flags&PROTECTED) != 0) buf.append("protected ");
- if ((flags&STATIC) != 0) buf.append("static ");
- if ((flags&FINAL) != 0) buf.append("final ");
- if ((flags&SYNCHRONIZED) != 0) buf.append("synchronized ");
- if ((flags&VOLATILE) != 0) buf.append("volatile ");
- if ((flags&TRANSIENT) != 0) buf.append("transient ");
- if ((flags&NATIVE) != 0) buf.append("native ");
- if ((flags&INTERFACE) != 0) buf.append("interface ");
- if ((flags&ABSTRACT) != 0) buf.append("abstract ");
- if ((flags&STRICTFP) != 0) buf.append("strictfp ");
- if ((flags&BRIDGE) != 0) buf.append("bridge ");
- if ((flags&SYNTHETIC) != 0) buf.append("synthetic ");
- if ((flags&DEPRECATED) != 0) buf.append("deprecated ");
- if ((flags&HASINIT) != 0) buf.append("hasinit ");
- if ((flags&ENUM) != 0) buf.append("enum ");
- if ((flags&IPROXY) != 0) buf.append("iproxy ");
- if ((flags&NOOUTERTHIS) != 0) buf.append("noouterthis ");
- if ((flags&EXISTS) != 0) buf.append("exists ");
- if ((flags&COMPOUND) != 0) buf.append("compound ");
- if ((flags&CLASS_SEEN) != 0) buf.append("class_seen ");
- if ((flags&SOURCE_SEEN) != 0) buf.append("source_seen ");
- if ((flags&LOCKED) != 0) buf.append("locked ");
- if ((flags&UNATTRIBUTED) != 0) buf.append("unattributed ");
- if ((flags&ANONCONSTR) != 0) buf.append("anonconstr ");
- if ((flags&ACYCLIC) != 0) buf.append("acyclic ");
- if ((flags&PARAMETER) != 0) buf.append("parameter ");
- if ((flags&VARARGS) != 0) buf.append("varargs ");
+ String sep = "";
+ for (Flag s : asFlagSet(flags)) {
+ buf.append(sep);
+ buf.append(s);
+ sep = " ";
+ }
return buf.toString();
}
+ public static EnumSet<Flag> asFlagSet(long mask) {
+ EnumSet<Flag> flags = EnumSet.noneOf(Flag.class);
+ if ((mask&PUBLIC) != 0) flags.add(Flag.PUBLIC);
+ if ((mask&PRIVATE) != 0) flags.add(Flag.PRIVATE);
+ if ((mask&PROTECTED) != 0) flags.add(Flag.PROTECTED);
+ if ((mask&STATIC) != 0) flags.add(Flag.STATIC);
+ if ((mask&FINAL) != 0) flags.add(Flag.FINAL);
+ if ((mask&SYNCHRONIZED) != 0) flags.add(Flag.SYNCHRONIZED);
+ if ((mask&VOLATILE) != 0) flags.add(Flag.VOLATILE);
+ if ((mask&TRANSIENT) != 0) flags.add(Flag.TRANSIENT);
+ if ((mask&NATIVE) != 0) flags.add(Flag.NATIVE);
+ if ((mask&INTERFACE) != 0) flags.add(Flag.INTERFACE);
+ if ((mask&ABSTRACT) != 0) flags.add(Flag.ABSTRACT);
+ if ((mask&STRICTFP) != 0) flags.add(Flag.STRICTFP);
+ if ((mask&BRIDGE) != 0) flags.add(Flag.BRIDGE);
+ if ((mask&SYNTHETIC) != 0) flags.add(Flag.SYNTHETIC);
+ if ((mask&DEPRECATED) != 0) flags.add(Flag.DEPRECATED);
+ if ((mask&HASINIT) != 0) flags.add(Flag.HASINIT);
+ if ((mask&ENUM) != 0) flags.add(Flag.ENUM);
+ if ((mask&IPROXY) != 0) flags.add(Flag.IPROXY);
+ if ((mask&NOOUTERTHIS) != 0) flags.add(Flag.NOOUTERTHIS);
+ if ((mask&EXISTS) != 0) flags.add(Flag.EXISTS);
+ if ((mask&COMPOUND) != 0) flags.add(Flag.COMPOUND);
+ if ((mask&CLASS_SEEN) != 0) flags.add(Flag.CLASS_SEEN);
+ if ((mask&SOURCE_SEEN) != 0) flags.add(Flag.SOURCE_SEEN);
+ if ((mask&LOCKED) != 0) flags.add(Flag.LOCKED);
+ if ((mask&UNATTRIBUTED) != 0) flags.add(Flag.UNATTRIBUTED);
+ if ((mask&ANONCONSTR) != 0) flags.add(Flag.ANONCONSTR);
+ if ((mask&ACYCLIC) != 0) flags.add(Flag.ACYCLIC);
+ if ((mask&PARAMETER) != 0) flags.add(Flag.PARAMETER);
+ if ((mask&VARARGS) != 0) flags.add(Flag.VARARGS);
+ return flags;
+ }
+
/* Standard Java flags.
*/
public static final int PUBLIC = 1<<0;
@@ -271,4 +283,48 @@
public static boolean isConstant(Symbol.VarSymbol symbol) {
return symbol.getConstValue() != null;
}
+
+ public enum Flag {
+
+ PUBLIC("public"),
+ PRIVATE("private"),
+ PROTECTED("protected"),
+ STATIC("static"),
+ FINAL("final"),
+ SYNCHRONIZED("synchronized"),
+ VOLATILE("volatile"),
+ TRANSIENT("transient"),
+ NATIVE("native"),
+ INTERFACE("interface"),
+ ABSTRACT("abstract"),
+ STRICTFP("strictfp"),
+ BRIDGE("bridge"),
+ SYNTHETIC("synthetic"),
+ DEPRECATED("deprecated"),
+ HASINIT("hasinit"),
+ ENUM("enum"),
+ IPROXY("iproxy"),
+ NOOUTERTHIS("noouterthis"),
+ EXISTS("exists"),
+ COMPOUND("compound"),
+ CLASS_SEEN("class_seen"),
+ SOURCE_SEEN("source_seen"),
+ LOCKED("locked"),
+ UNATTRIBUTED("unattributed"),
+ ANONCONSTR("anonconstr"),
+ ACYCLIC("acyclic"),
+ PARAMETER("parameter"),
+ VARARGS("varargs"),
+ PACKAGE("package");
+
+ String name;
+
+ Flag(String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return name;
+ }
+ }
}