/** Print a description of the class (not members). */ public void printclassHeader() { String srcName = ""; if ((srcName = cls.getSourceName()) != "null") // requires debug info out.println("Compiled from " + javaclassname(srcName)); if (cls.isInterface()) { // The only useful access modifier of an interface is // public; interfaces are always marked as abstract and // cannot be final. out.print( (cls.isPublic() ? "public " : "") + "interface " + javaclassname(cls.getClassName())); } else if (cls.isClass()) { String[] accflags = cls.getAccess(); printAccess(accflags); out.print("class " + javaclassname(cls.getClassName())); if (cls.getSuperClassName() != null) { out.print(" extends " + javaclassname(cls.getSuperClassName())); } } String[] interfacelist = cls.getSuperInterfaces(); if (interfacelist.length > 0) { if (cls.isClass()) { out.print(" implements "); } else if (cls.isInterface()) { out.print(" extends "); } for (int j = 0; j < interfacelist.length; j++) { out.print(javaclassname(interfacelist[j])); if ((j + 1) < interfacelist.length) { out.print(","); } } } // Print class attribute information. if ((env.showallAttr) || (env.showVerbose)) { printClassAttributes(); } // Print verbose output. if (env.showVerbose) { printverbosecls(); } out.println("{"); }
/** Print method signature. */ public void printMethodSignature(MethodData method, String[] accflags) { printAccess(accflags); if ((method.getName()).equals("<init>")) { out.print(javaclassname(cls.getClassName())); out.print(method.getParameters()); } else if ((method.getName()).equals("<clinit>")) { out.print("{}"); } else { out.print(method.getReturnType() + " "); out.print(method.getName()); out.print(method.getParameters()); } }
/** Print exceptions. */ public void printExceptions(MethodData method) { int[] exc_index_table = method.get_exc_index_table(); if (exc_index_table != null) { if (!(env.showLineAndLocal || env.showDisassembled || env.showVerbose || env.showInternalSigs || env.showallAttr)) { out.print(" "); } out.print(" throws "); int k; int l = exc_index_table.length; for (k = 0; k < l; k++) { out.print(javaclassname(cls.getClassName(exc_index_table[k]))); if (k < l - 1) out.print(", "); } } }
/** Print the exception table for this method code */ void printExceptionTable(MethodData method) { // throws IOException Vector exception_table = method.getexception_table(); if (exception_table.size() > 0) { out.println(" Exception table:"); out.println(" from to target type"); for (int idx = 0; idx < exception_table.size(); ++idx) { TrapData handler = (TrapData) exception_table.elementAt(idx); printFixedWidthInt(handler.start_pc, 6); printFixedWidthInt(handler.end_pc, 6); printFixedWidthInt(handler.handler_pc, 6); out.print(" "); int catch_cpx = handler.catch_cpx; if (catch_cpx == 0) { out.println("any"); } else { out.print("Class "); out.println(cls.getClassName(catch_cpx)); out.println(""); } } } }