Put STRING_OUT typemaps back in.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5493 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2003-12-06 23:02:03 +00:00
commit 9d0e20d4df

View file

@ -11,6 +11,7 @@
* char ** is mapped to a Java String[].
*
* Example usage wrapping:
* %apply char **STRING_ARRAY { char **input };
* char ** foo(char **input);
*
* Java usage:
@ -77,14 +78,47 @@
return $jnicall;
}
%typemap(javadirectorin) char **STRING_ARRAY "$jniinput"
%typemap(javadirectorout) char **STRING_ARRAY "$javacall"
%typemap(directorin, descriptor="Ljava/lang/String;") char **STRING_ARRAY
%{ $input = JCALL1(NewStringUTF, jenv, *$1); %}
/*
* char **STRING_OUT typemaps.
* These are typemaps for returning strings when using a C char ** parameter type.
* The returned string appears in the 1st element of the passed in Java String array.
*
* Example usage wrapping:
* void foo(char **string_out);
*
* Java usage:
* String stringOutArray[] = { "" };
* modulename.foo(stringOutArray);
* System.out.println( stringOutArray[0] );
*/
%typemap(jni) char **STRING_OUT "jobjectArray"
%typemap(jtype) char **STRING_OUT "String[]"
%typemap(jstype) char **STRING_OUT "String[]"
%typemap(javain) char **STRING_OUT "$javainput"
%typemap(in) char **STRING_OUT($*1_ltype temp) {
if (!$input) {
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
return $null;
}
if (JCALL1(GetArrayLength, jenv, $input) == 0) {
SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
return $null;
}
$1 = &temp;
}
%typemap(argout) char **STRING_OUT {
jstring jnewstring = NULL;
if($1) {
jnewstring = JCALL1(NewStringUTF, jenv, *$1);
}
JCALL3(SetObjectArrayElement, jenv, $input, 0, jnewstring);
}
/*
* char *BYTE typemap.
* This is an input typemap for mapping a Java byte[] array to a C char array.
* char *BYTE typemaps.
* These are input typemaps for mapping a Java byte[] array to a C char array.
* Note that as a Java array is used and thus passeed by reference, the C routine
* can return data to Java via the parameter.
*
@ -111,10 +145,3 @@
/* Prevent default freearg typemap from being used */
%typemap(freearg) char *BYTE ""
%typemap(javadirectorin) char *BYTE "$jniinput"
%typemap(javadirectorout) char *BYTE "$javacall"
%typemap(directorin,descriptor="[B") char *BYTE
%{
#error "Need directorin typemap for char *BYTE, array input size is unknown."
%}