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

changeset 80
5c9cdeb740f2
parent 1
9a66ca7c79fa
child 117
24a47c3062fe
equal deleted inserted replaced
79:36df13bde238 80:5c9cdeb740f2
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 }

mercurial