I'm checking this in.

This fixes a couple javah buglets.

One, we should use the plain class name (and not the mangled one) to
name the .c and .h files for JNI.  Two, the CNI header file generator
wasn't properly handling classes in the default package.

Tom

2006-10-20  Tom Tromey  <[EMAIL PROTECTED]>

        * tools/gnu/classpath/tools/javah/JniIncludePrinter.java (printClass):
        Don't use mangled class name for .h file.
        * tools/gnu/classpath/tools/javah/JniStubPrinter.java (printClass):
        Don't use mangled class name for .c file.
        * tools/gnu/classpath/tools/javah/CniPrintStream.java (writeClass):
        Handle classes from the default package.

Index: tools/gnu/classpath/tools/javah/CniPrintStream.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/tools/gnu/classpath/tools/javah/CniPrintStream.java,v
retrieving revision 1.1
diff -u -r1.1 CniPrintStream.java
--- tools/gnu/classpath/tools/javah/CniPrintStream.java 28 Jul 2006 15:22:29 
-0000      1.1
+++ tools/gnu/classpath/tools/javah/CniPrintStream.java 20 Oct 2006 22:31:21 
-0000
@@ -196,9 +196,9 @@
   private void writeClass(PrintStream out, String klass)
   {
     int index = klass.lastIndexOf('/');
-    String pkg = klass.substring(0, index);
-    String[] pkgParts = pkg.split("/");
-    String className = klass.substring(index + 1);
+    String pkg = index == -1 ? "" : klass.substring(0, index);
+    String[] pkgParts = index == -1 ? new String[0] : pkg.split("/");
+    String className = index == -1 ? klass : klass.substring(index + 1);
     moveToPackage(out, pkgParts);
     indent(out, pkgParts.length + 2);
     out.print("class ");
Index: tools/gnu/classpath/tools/javah/JniIncludePrinter.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/tools/gnu/classpath/tools/javah/JniIncludePrinter.java,v
retrieving revision 1.3
diff -u -r1.3 JniIncludePrinter.java
--- tools/gnu/classpath/tools/javah/JniIncludePrinter.java      26 Sep 2006 
20:47:09 -0000      1.3
+++ tools/gnu/classpath/tools/javah/JniIncludePrinter.java      20 Oct 2006 
22:31:21 -0000
@@ -112,7 +112,7 @@
     if (! klass.hasNativeMethod())
       return;
     String xname = JniHelper.mangle(klass.name);
-    JniPrintStream out = (JniPrintStream) getPrintStream(xname + ".h", klass);
+    JniPrintStream out = (JniPrintStream) getPrintStream(klass.name + ".h", 
klass);
     if (out == null)
       return;
     out.println();
Index: tools/gnu/classpath/tools/javah/JniStubPrinter.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/tools/gnu/classpath/tools/javah/JniStubPrinter.java,v
retrieving revision 1.2
diff -u -r1.2 JniStubPrinter.java
--- tools/gnu/classpath/tools/javah/JniStubPrinter.java 26 Sep 2006 20:47:09 
-0000      1.2
+++ tools/gnu/classpath/tools/javah/JniStubPrinter.java 20 Oct 2006 22:31:21 
-0000
@@ -76,12 +76,12 @@
     if (! klass.hasNativeMethod())
       return;
     String xname = JniHelper.mangle(klass.name);
-    JniPrintStream out = (JniPrintStream) getPrintStream(xname + ".c", klass);
+    JniPrintStream out = (JniPrintStream) getPrintStream(klass.name + ".c", 
klass);
     if (out == null)
       return;
     out.println();
     out.print("#include <");
-    out.print(xname);
+    out.print(klass.name);
     out.println(".h>");
 
     Iterator i = klass.methods.iterator();

Reply via email to