Пример #1
0
  /** 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("{");
  }
Пример #2
0
  /** 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());
    }
  }
Пример #3
0
  /** 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(", ");
      }
    }
  }
Пример #4
0
 /** 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("");
       }
     }
   }
 }