diff options
author | Tom Tromey <tromey@redhat.com> | 2006-08-09 17:18:31 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2006-08-09 17:18:31 +0000 |
commit | 2c561b3523b5f3f5a44ebae6533d682613d309e8 (patch) | |
tree | 414b89b1d29896c1a547b319186aa602eaf30d92 | |
parent | 559cd931760fca0150ce45ceada93ee67c849b3e (diff) | |
download | classpath-2c561b3523b5f3f5a44ebae6533d682613d309e8.tar.gz |
* tools/gnu/classpath/tools/javah/JniHelper.java (getName): Properly
handle arrays.
* tools/gnu/classpath/tools/javah/JniIncludePrinter.java
(writeFields): Print "L" after int constant. Don't mangle the field
name. Only print int/long fields.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | tools/gnu/classpath/tools/javah/JniHelper.java | 6 | ||||
-rw-r--r-- | tools/gnu/classpath/tools/javah/JniIncludePrinter.java | 13 |
3 files changed, 21 insertions, 6 deletions
@@ -1,5 +1,13 @@ 2006-08-09 Tom Tromey <tromey@redhat.com> + * tools/gnu/classpath/tools/javah/JniHelper.java (getName): Properly + handle arrays. + * tools/gnu/classpath/tools/javah/JniIncludePrinter.java + (writeFields): Print "L" after int constant. Don't mangle the field + name. Only print int/long fields. + +2006-08-09 Tom Tromey <tromey@redhat.com> + * tools/gnu/classpath/tools/javah/Main.java (getParser): Name program "javah". diff --git a/tools/gnu/classpath/tools/javah/JniHelper.java b/tools/gnu/classpath/tools/javah/JniHelper.java index 3104cea5a..7c508997e 100644 --- a/tools/gnu/classpath/tools/javah/JniHelper.java +++ b/tools/gnu/classpath/tools/javah/JniHelper.java @@ -69,12 +69,12 @@ public class JniHelper { Type elt = type.getElementType(); int eltSort = elt.getSort(); - if (eltSort != Type.OBJECT && eltSort != Type.ARRAY) + if (type.getDimensions() == 1 && eltSort != Type.OBJECT) return getName(classpath, elt) + "Array"; - return "jarray"; + return "jobjectArray"; } - assert type.getSort() == Type.OBJECT; + // assert type.getSort() == Type.OBJECT; String className = type.getClassName(); // FIXME: is this correct? if (className.equals("java/lang/Class") diff --git a/tools/gnu/classpath/tools/javah/JniIncludePrinter.java b/tools/gnu/classpath/tools/javah/JniIncludePrinter.java index 36ab33bc1..c01634007 100644 --- a/tools/gnu/classpath/tools/javah/JniIncludePrinter.java +++ b/tools/gnu/classpath/tools/javah/JniIncludePrinter.java @@ -67,16 +67,23 @@ public class JniIncludePrinter { FieldNode field = (FieldNode) i.next(); if (! Modifier.isStatic(field.access) - || ! Modifier.isFinal(field.access) || field.value == null) + || ! Modifier.isFinal(field.access)) continue; - String name = (JniHelper.mangle(klass.name) + "_" + JniHelper.mangle(field.name)); + if (! (field.value instanceof Integer) + && ! (field.value instanceof Long)) + continue; + + // Note that we don't want to mangle the field name. + String name = (JniHelper.mangle(klass.name) + "_" + field.name); out.print("#undef "); out.println(name); out.print("#define "); out.print(name); out.print(" "); out.print(field.value); - if (field.value instanceof Long) + if (field.value instanceof Integer) + out.print("L"); + else if (field.value instanceof Long) out.print("LL"); out.println(); wroteAny = true; |