diff options
Diffstat (limited to 'src/net/java/games/gluegen/CMethodBindingImplEmitter.java')
-rw-r--r-- | src/net/java/games/gluegen/CMethodBindingImplEmitter.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/net/java/games/gluegen/CMethodBindingImplEmitter.java b/src/net/java/games/gluegen/CMethodBindingImplEmitter.java index 43e4f4d86..98c5c1b4a 100644 --- a/src/net/java/games/gluegen/CMethodBindingImplEmitter.java +++ b/src/net/java/games/gluegen/CMethodBindingImplEmitter.java @@ -48,8 +48,11 @@ public class CMethodBindingImplEmitter extends CMethodBindingEmitter protected static final CommentEmitter defaultCImplCommentEmitter = new CImplCommentEmitter(); + protected boolean arrayImplRoutine = false; + public CMethodBindingImplEmitter(MethodBinding binding, boolean isOverloadedBinding, + boolean arrayImpl, String javaPackageName, String javaClassName, boolean isJavaMethodStatic, @@ -59,13 +62,17 @@ public class CMethodBindingImplEmitter extends CMethodBindingEmitter javaPackageName, javaClassName, isJavaMethodStatic, output); setCommentEmitter(defaultCImplCommentEmitter); + arrayImplRoutine = arrayImpl; } protected void emitName(PrintWriter writer) { super.emitName(writer); if (!getIsOverloadedBinding()) { - writer.print("0"); + if(!arrayImplRoutine) + writer.print("0"); + else + writer.print("1"); } } @@ -76,7 +83,12 @@ public class CMethodBindingImplEmitter extends CMethodBindingEmitter protected String jniMangle(MethodBinding binding) { StringBuffer buf = new StringBuffer(); buf.append(jniMangle(binding.getName())); - buf.append("0"); + + if(!arrayImplRoutine) + buf.append("0"); + else + buf.append("1"); + buf.append("__"); for (int i = 0; i < binding.getNumArguments(); i++) { JavaType type = binding.getJavaArgumentType(i); @@ -91,6 +103,9 @@ public class CMethodBindingImplEmitter extends CMethodBindingEmitter c = intArrayType.getClass(); jniMangle(c , buf); } + if(type.isArray() && !type.isNIOBufferArray() && !type.isStringArray()) { + jniMangle(Integer.TYPE, buf); + } } else { // FIXME: add support for char* -> String conversion throw new RuntimeException("Unknown kind of JavaType: name="+type.getName()); |