From 0d0ffcbb5988e8cf96fe178988354f885638bab5 Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Thu, 13 Oct 2011 16:53:53 +0000 Subject: [PATCH] Fixed signatures: CharSequence[] parameters and ByteBuffer returns. --- .../util/generator/JNITypeTranslator.java | 2 +- .../util/generator/RegisterStubsGenerator.java | 5 +++-- .../util/generator/SignatureTranslator.java | 18 ++++++++---------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/java/org/lwjgl/util/generator/JNITypeTranslator.java b/src/java/org/lwjgl/util/generator/JNITypeTranslator.java index 2c6f1327..44bf8046 100644 --- a/src/java/org/lwjgl/util/generator/JNITypeTranslator.java +++ b/src/java/org/lwjgl/util/generator/JNITypeTranslator.java @@ -69,7 +69,7 @@ public class JNITypeTranslator implements TypeVisitor { public void visitArrayType(ArrayType t) { final String className = t.getComponentType().toString(); if ( "java.lang.CharSequence".equals(className) ) - signature.append("jobject"); + signature.append("jlong"); else if ( "java.nio.ByteBuffer".equals(className) ) signature.append("jobjectArray"); else if ( "org.lwjgl.opencl.CLMem".equals(className) ) diff --git a/src/java/org/lwjgl/util/generator/RegisterStubsGenerator.java b/src/java/org/lwjgl/util/generator/RegisterStubsGenerator.java index 918adf25..7bfc1014 100644 --- a/src/java/org/lwjgl/util/generator/RegisterStubsGenerator.java +++ b/src/java/org/lwjgl/util/generator/RegisterStubsGenerator.java @@ -101,10 +101,11 @@ public class RegisterStubsGenerator { final CachedResult cached_result_annotation = method.getAnnotation(CachedResult.class); final AutoSize auto_size_annotation = method.getAnnotation(AutoSize.class); - if ( Utils.getNIOBufferType(result_type) != null && (auto_size_annotation == null || !auto_size_annotation.isNative()) ) + final boolean isNIOBuffer = Utils.getNIOBufferType(result_type) != null; + if ( isNIOBuffer && (auto_size_annotation == null || !auto_size_annotation.isNative()) ) signature += "J"; - String result_type_signature = getTypeSignature(result_type, false); + final String result_type_signature = isNIOBuffer ? "Ljava/nio/ByteBuffer;" : getTypeSignature(result_type, false); if ( cached_result_annotation != null ) signature += result_type_signature; diff --git a/src/java/org/lwjgl/util/generator/SignatureTranslator.java b/src/java/org/lwjgl/util/generator/SignatureTranslator.java index ab467e5a..db82d1bd 100644 --- a/src/java/org/lwjgl/util/generator/SignatureTranslator.java +++ b/src/java/org/lwjgl/util/generator/SignatureTranslator.java @@ -71,7 +71,7 @@ class SignatureTranslator implements TypeVisitor { public void visitArrayType(ArrayType t) { final Class type = Utils.getJavaType(t.getComponentType()); if ( CharSequence.class.isAssignableFrom(type) ) - signature.append("Ljava/nio/ByteBuffer;I"); + signature.append("J"); else if ( Buffer.class.isAssignableFrom(type) ) signature.append("[Ljava/nio/ByteBuffer;"); else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) @@ -82,18 +82,16 @@ class SignatureTranslator implements TypeVisitor { public void visitClassType(ClassType t) { Class type = NativeTypeTranslator.getClassFromType(t); - String type_name; - if ( (CharSequence.class.isAssignableFrom(type) && !String.class.equals(type)) || CharSequence[].class.isAssignableFrom(type) || PointerBuffer.class.isAssignableFrom(type) ) - type_name = ByteBuffer.class.getName(); - else if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) ) { - signature.append("J"); - return; - } else - type_name = t.getDeclaration().getQualifiedName(); - if ( Utils.isAddressableType(type) && !String.class.equals(type) ) + if ( org.lwjgl.PointerWrapper.class.isAssignableFrom(type) || (Utils.isAddressableType(type) && !String.class.equals(type)) ) signature.append("J"); else { + String type_name; + if ( (CharSequence.class.isAssignableFrom(type) && !String.class.equals(type)) || CharSequence[].class.isAssignableFrom(type) || PointerBuffer.class.isAssignableFrom(type) ) + type_name = ByteBuffer.class.getName(); + else + type_name = t.getDeclaration().getQualifiedName(); + signature.append("L"); signature.append(getNativeNameFromClassName(type_name)); signature.append(";");