From 6722b2ea894e6df819fca9f2d483768a5863f975 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Wed, 8 Dec 2004 22:49:00 +0000 Subject: [PATCH] mods so that a %apply will work on pointers, eg %apply int[] {int*} git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6847 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Lib/java/arrays_java.i | 184 +++++++++--------------------------- 1 file changed, 45 insertions(+), 139 deletions(-) diff --git a/SWIG/Lib/java/arrays_java.i b/SWIG/Lib/java/arrays_java.i index 6f7428c5f..4f99f5d05 100644 --- a/SWIG/Lib/java/arrays_java.i +++ b/SWIG/Lib/java/arrays_java.i @@ -138,82 +138,12 @@ JAVA_ARRAYS_IMPL(double, jdouble, Double, Double) /* double[] */ /* The rest of this file has the array typemaps */ -/* Arrays of primitive types. - * These typemaps are applied merely by including this file. */ -%typemap(jni) bool[ANY] "jbooleanArray" -%typemap(jni) signed char[ANY] "jbyteArray" -%typemap(jni) unsigned char[ANY] "jshortArray" -%typemap(jni) short[ANY] "jshortArray" -%typemap(jni) unsigned short[ANY] "jintArray" -%typemap(jni) int[ANY] "jintArray" -%typemap(jni) unsigned int[ANY] "jlongArray" -%typemap(jni) long[ANY] "jintArray" -%typemap(jni) unsigned long[ANY] "jlongArray" -%typemap(jni) long long[ANY] "jlongArray" -/*%typemap(jni) unsigned long long[ANY] "jobjectArray"*/ -%typemap(jni) float[ANY] "jfloatArray" -%typemap(jni) double[ANY] "jdoubleArray" - -%typemap(jtype) bool[ANY] "boolean[]" -%typemap(jtype) signed char[ANY] "byte[]" -%typemap(jtype) unsigned char[ANY] "short[]" -%typemap(jtype) short[ANY] "short[]" -%typemap(jtype) unsigned short[ANY] "int[]" -%typemap(jtype) int[ANY] "int[]" -%typemap(jtype) unsigned int[ANY] "long[]" -%typemap(jtype) long[ANY] "int[]" -%typemap(jtype) unsigned long[ANY] "long[]" -%typemap(jtype) long long[ANY] "long[]" -/*%typemap(jtype) unsigned long long[ANY] "java.math.BigInteger[]"*/ -%typemap(jtype) float[ANY] "float[]" -%typemap(jtype) double[ANY] "double[]" - -%typemap(jstype) bool[ANY] "boolean[]" -%typemap(jstype) signed char[ANY] "byte[]" -%typemap(jstype) unsigned char[ANY] "short[]" -%typemap(jstype) short[ANY] "short[]" -%typemap(jstype) unsigned short[ANY] "int[]" -%typemap(jstype) int[ANY] "int[]" -%typemap(jstype) unsigned int[ANY] "long[]" -%typemap(jstype) long[ANY] "int[]" -%typemap(jstype) unsigned long[ANY] "long[]" -%typemap(jstype) long long[ANY] "long[]" -/*%typemap(jstype) unsigned long long[ANY] "java.math.BigInteger[]"*/ -%typemap(jstype) float[ANY] "float[]" -%typemap(jstype) double[ANY] "double[]" - -%typemap(javadirectorin) bool[ANY], - signed char[ANY], - unsigned char[ANY], - short[ANY], - unsigned short[ANY], - int[ANY], - unsigned int[ANY], - long[ANY], - unsigned long[ANY], - long long[ANY], - /* unsigned long long[ANY], */ - float[ANY], - double[ANY] - "$jniinput" - -%typemap(javadirectorout) bool[ANY], - signed char[ANY], - unsigned char[ANY], - short[ANY], - unsigned short[ANY], - int[ANY], - unsigned int[ANY], - long[ANY], - unsigned long[ANY], - long long[ANY], - /* unsigned long long[ANY], */ - float[ANY], - double[ANY] - "$javacall" - /* Arrays of primitive types use the following macro. The array typemaps use support functions. */ -%define JAVA_ARRAYS_TYPEMAPS(CTYPE, JNITYPE, JFUNCNAME, JNIDESC) +%define JAVA_ARRAYS_TYPEMAPS(CTYPE, JTYPE, JNITYPE, JFUNCNAME, JNIDESC) + +%typemap(jni) CTYPE[ANY], CTYPE[] %{JNITYPE##Array%} +%typemap(jtype) CTYPE[ANY], CTYPE[] %{JTYPE[]%} +%typemap(jstype) CTYPE[ANY], CTYPE[] %{JTYPE[]%} %typemap(in) CTYPE[] (JNITYPE *jarr) %{ if (!SWIG_JavaArrayIn##JFUNCNAME(jenv, &jarr, &$1, $input)) return $null; %} @@ -223,106 +153,82 @@ JAVA_ARRAYS_IMPL(double, jdouble, Double, Double) /* double[] */ return $null; } if (!SWIG_JavaArrayIn##JFUNCNAME(jenv, &jarr, &$1, $input)) return $null; %} -%typemap(argout) CTYPE[ANY] +%typemap(argout) CTYPE[ANY], CTYPE[] %{ SWIG_JavaArrayArgout##JFUNCNAME(jenv, jarr$argnum, $1, $input); %} -%typemap(directorin,descriptor=JNIDESC) CTYPE[ANY] +%typemap(directorin,descriptor=JNIDESC) CTYPE[ANY], CTYPE[] %{$input = SWIG_JavaArrayOut##JFUNCNAME(jenv, $1, $1_dim0); %} -%typemap(out) CTYPE[ANY] +%typemap(out) CTYPE[ANY] %{$result = SWIG_JavaArrayOut##JFUNCNAME(jenv, $1, $1_dim0); %} -%typemap(freearg) CTYPE[ANY] +%typemap(out) CTYPE[] +%{$result = SWIG_JavaArrayOut##JFUNCNAME(jenv, $1, FillMeInAsSizeCannotBeDeterminedAutomatically); %} +%typemap(freearg) CTYPE[ANY], CTYPE[] #ifdef __cplusplus %{ delete [] $1; %} #else %{ free($1); %} #endif -%typemap(director_in) CTYPE[ANY] -%{$result = SWIG_JavaArrayOut##JFUNCNAME(jenv, $1, $1_dim0); %} -%typemap(director_out) CTYPE[] (JNITYPE *jarr) -%{ if (!SWIG_JavaArrayIn##JFUNCNAME(jenv, &jarr, &$1, $input)) return $null; %} + +%typemap(javain) CTYPE[ANY], CTYPE[] "$javainput" +%typemap(javaout) CTYPE[ANY], CTYPE[] { + return $jnicall; + } + +%typemap(javadirectorin) CTYPE[ANY], CTYPE[] "$jniinput" +%typemap(javadirectorout) CTYPE[ANY], CTYPE[] "$javacall" %enddef -JAVA_ARRAYS_TYPEMAPS(bool, jboolean, Bool, "[Z") /* bool[ANY] */ -JAVA_ARRAYS_TYPEMAPS(signed char, jbyte, Schar, "[B") /* signed char[ANY] */ -JAVA_ARRAYS_TYPEMAPS(unsigned char, jshort, Uchar, "[S") /* unsigned char[ANY] */ -JAVA_ARRAYS_TYPEMAPS(short, jshort, Short, "[S") /* short[ANY] */ -JAVA_ARRAYS_TYPEMAPS(unsigned short, jint, Ushort, "[I") /* unsigned short[ANY] */ -JAVA_ARRAYS_TYPEMAPS(int, jint, Int, "[I") /* int[ANY] */ -JAVA_ARRAYS_TYPEMAPS(unsigned int, jlong, Uint, "[J") /* unsigned int[ANY] */ -JAVA_ARRAYS_TYPEMAPS(long, jint, Long, "[I") /* long[ANY] */ -JAVA_ARRAYS_TYPEMAPS(unsigned long, jlong, Ulong, "[J") /* unsigned long[ANY] */ -JAVA_ARRAYS_TYPEMAPS(long long, jlong, Longlong, "[J") /* long long[ANY] */ -JAVA_ARRAYS_TYPEMAPS(float, jfloat, Float, "[F") /* float[ANY] */ -JAVA_ARRAYS_TYPEMAPS(double, jdouble, Double, "[D") /* double[ANY] */ +JAVA_ARRAYS_TYPEMAPS(bool, boolean, jboolean, Bool, "[Z") /* bool[ANY] */ +JAVA_ARRAYS_TYPEMAPS(signed char, byte, jbyte, Schar, "[B") /* signed char[ANY] */ +JAVA_ARRAYS_TYPEMAPS(unsigned char, short, jshort, Uchar, "[S") /* unsigned char[ANY] */ +JAVA_ARRAYS_TYPEMAPS(short, short, jshort, Short, "[S") /* short[ANY] */ +JAVA_ARRAYS_TYPEMAPS(unsigned short, int, jint, Ushort, "[I") /* unsigned short[ANY] */ +JAVA_ARRAYS_TYPEMAPS(int, int, jint, Int, "[I") /* int[ANY] */ +JAVA_ARRAYS_TYPEMAPS(unsigned int, long, jlong, Uint, "[J") /* unsigned int[ANY] */ +JAVA_ARRAYS_TYPEMAPS(long, int, jint, Long, "[I") /* long[ANY] */ +JAVA_ARRAYS_TYPEMAPS(unsigned long, long, jlong, Ulong, "[J") /* unsigned long[ANY] */ +JAVA_ARRAYS_TYPEMAPS(long long, long, jlong, Longlong, "[J") /* long long[ANY] */ +JAVA_ARRAYS_TYPEMAPS(float, float, jfloat, Float, "[F") /* float[ANY] */ +JAVA_ARRAYS_TYPEMAPS(double, double, jdouble, Double, "[D") /* double[ANY] */ + %typecheck(SWIG_TYPECHECK_BOOL_ARRAY) /* Java boolean[] */ - bool[ANY] + bool[ANY], bool[] "" %typecheck(SWIG_TYPECHECK_INT8_ARRAY) /* Java byte[] */ - signed char[ANY] + signed char[ANY], signed char[] "" %typecheck(SWIG_TYPECHECK_INT16_ARRAY) /* Java short[] */ - unsigned char[ANY], - short[ANY] + unsigned char[ANY], unsigned char[], + short[ANY], short[] "" %typecheck(SWIG_TYPECHECK_INT32_ARRAY) /* Java int[] */ - unsigned short[ANY], - int[ANY], - long[ANY] + unsigned short[ANY], unsigned short[], + int[ANY], int[], + long[ANY], long[] "" %typecheck(SWIG_TYPECHECK_INT64_ARRAY) /* Java long[] */ - unsigned int[ANY], - unsigned long[ANY], - long long[ANY] + unsigned int[ANY], unsigned int[], + unsigned long[ANY], unsigned long[], + long long[ANY], long long[] "" %typecheck(SWIG_TYPECHECK_INT128_ARRAY) /* Java BigInteger[] */ - unsigned long long[ANY] + unsigned long long[ANY], unsigned long long[] "" %typecheck(SWIG_TYPECHECK_FLOAT_ARRAY) /* Java float[] */ - float[ANY] + float[ANY], float[] "" %typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY) /* Java double[] */ - double[ANY] + double[ANY], double[] "" -%typemap(javain) bool[ANY], - signed char[ANY], - unsigned char[ANY], - short[ANY], - unsigned short[ANY], - int[ANY], - unsigned int[ANY], - long[ANY], - unsigned long[ANY], - long long[ANY], -/* unsigned long long[ANY], */ - float[ANY], - double[ANY] - "$javainput" - -%typemap(javaout) bool[ANY], - signed char[ANY], - unsigned char[ANY], - short[ANY], - unsigned short[ANY], - int[ANY], - unsigned int[ANY], - long[ANY], - unsigned long[ANY], - long long[ANY], -/* unsigned long long[ANY], */ - float[ANY], - double[ANY] { - return $jnicall; - } - /* Arrays of proxy classes. The typemaps in this macro make it possible to treat an array of * class/struct/unions as an array of Java classes.