summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2006-08-09 17:18:31 +0000
committerTom Tromey <tromey@redhat.com>2006-08-09 17:18:31 +0000
commit2c561b3523b5f3f5a44ebae6533d682613d309e8 (patch)
tree414b89b1d29896c1a547b319186aa602eaf30d92 /tools
parent559cd931760fca0150ce45ceada93ee67c849b3e (diff)
downloadclasspath-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.
Diffstat (limited to 'tools')
-rw-r--r--tools/gnu/classpath/tools/javah/JniHelper.java6
-rw-r--r--tools/gnu/classpath/tools/javah/JniIncludePrinter.java13
2 files changed, 13 insertions, 6 deletions
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;