Fixed signatures: CharSequence[] parameters and ByteBuffer returns.

This commit is contained in:
Ioannis Tsakpinis 2011-10-13 16:53:53 +00:00
parent 67c3452bb4
commit 0d0ffcbb59
3 changed files with 12 additions and 13 deletions

View File

@ -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) )

View File

@ -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;

View File

@ -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(";");