+
+ public static String flagsToString(int flags) {
+ String ret = "";
+ if ((flags & ACC_PUBLIC) != 0) ret += "public ";
+ if ((flags & ACC_PRIVATE) != 0) ret += "private ";
+ if ((flags & ACC_PROTECTED) != 0) ret += "protected ";
+ if ((flags & ACC_STATIC) != 0) ret += "static ";
+ if ((flags & ACC_FINAL) != 0) ret += "final ";
+ if ((flags & ACC_ABSTRACT) != 0) ret += "abstract ";
+ if ((flags & ACC_SYNCHRONIZED) != 0) ret += "synchronized ";
+ if ((flags & ACC_NATIVE) != 0) ret += "native ";
+ if ((flags & ACC_STRICT) != 0) ret += "strictfp ";
+ if ((flags & ACC_VOLATILE) != 0) ret += "volatile ";
+ if ((flags & ACC_TRANSIENT) != 0) ret += "transient ";
+ return ret;
+ }
+
+ public String toString() { StringBuffer sb = new StringBuffer(); toString(sb); return sb.toString(); }
+ public void toString(StringBuffer sb) {
+ sb.append(flagsToString(flags));
+ sb.append((flags & ACC_INTERFACE) != 0 ? "interface " : "class ");
+ sb.append(thisType.humanReadable());
+ if (superType != null) sb.append(" extends " + superType.humanReadable());
+ if (interfaces != null && interfaces.length > 0) sb.append(" implements");
+ for(int i=0; i<interfaces.length; i++) sb.append((i==0?" ":", ")+interfaces[i].humanReadable());
+ sb.append(" {");
+ sb.append(" // [jcf v"+major+"."+minor+"]");
+ if (sourceFile != null) sb.append(" from " + sourceFile);
+ sb.append("\n");
+ for(int i=0; i<fields.size(); i++) {
+ sb.append(" ");
+ ((FieldGen)fields.elementAt(i)).toString(sb);
+ sb.append("\n");
+ }
+ for(int i=0; i<methods.size(); i++) {
+ sb.append(" ");
+ ((MethodGen)methods.elementAt(i)).toString(sb, thisType.getShortName());
+ sb.append("\n");
+ }
+ sb.append("}");
+ }
+