diff options
Diffstat (limited to 'tools/gnu/classpath/tools/javah/JniIncludePrinter.java')
-rw-r--r-- | tools/gnu/classpath/tools/javah/JniIncludePrinter.java | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/tools/gnu/classpath/tools/javah/JniIncludePrinter.java b/tools/gnu/classpath/tools/javah/JniIncludePrinter.java index c01634007..3d88650c1 100644 --- a/tools/gnu/classpath/tools/javah/JniIncludePrinter.java +++ b/tools/gnu/classpath/tools/javah/JniIncludePrinter.java @@ -41,6 +41,7 @@ package gnu.classpath.tools.javah; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.io.PrintStream; import java.lang.reflect.Modifier; import java.util.Iterator; @@ -51,10 +52,10 @@ import org.objectweb.asm.tree.MethodNode; public class JniIncludePrinter extends Printer { - - protected JniIncludePrinter(Main classpath) + protected JniIncludePrinter(Main classpath, File outFile, boolean isDir, + boolean force) { - super(classpath); + super(classpath, outFile, isDir, force); } private void writeFields(ClassWrapper klass, JniPrintStream out) @@ -93,17 +94,27 @@ public class JniIncludePrinter out.println(); } - public void printClass(File outputDir, ClassWrapper klass) throws IOException + protected void writePreambleImpl(PrintStream out) + { + out.println("/* DO NOT EDIT THIS FILE - it is machine generated */"); + out.println(); + out.println("#include <jni.h>"); + } + + protected PrintStream getPrintStreamImpl(FileOutputStream fos, + ClassWrapper klass) + { + return new JniPrintStream(classpath, fos, klass); + } + + public void printClass(ClassWrapper klass) throws IOException { if (! klass.hasNativeMethod()) return; String xname = JniHelper.mangle(klass.name); - File outFile = new File(outputDir, xname + ".h"); - - JniPrintStream out = new JniPrintStream(classpath, - new FileOutputStream(outFile), - klass); - out.println("/* DO NOT EDIT THIS FILE - it is machine generated */"); + JniPrintStream out = (JniPrintStream) getPrintStream(xname + ".h", klass); + if (out == null) + return; out.println(); out.print("#ifndef __"); out.print(xname); @@ -112,8 +123,6 @@ public class JniIncludePrinter out.print(xname); out.println("__"); out.println(); - out.println("#include <jni.h>"); - out.println(); out.println("#ifdef __cplusplus"); out.println("extern \"C\""); out.println("{"); @@ -144,8 +153,6 @@ public class JniIncludePrinter out.print("#endif /* __"); out.print(xname); out.println("__ */"); - out.close(); } - } |