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:
parent
6dbeba36af
commit
9d0e20d4df
1 changed files with 40 additions and 13 deletions
|
|
@ -11,6 +11,7 @@
|
||||||
* char ** is mapped to a Java String[].
|
* char ** is mapped to a Java String[].
|
||||||
*
|
*
|
||||||
* Example usage wrapping:
|
* Example usage wrapping:
|
||||||
|
* %apply char **STRING_ARRAY { char **input };
|
||||||
* char ** foo(char **input);
|
* char ** foo(char **input);
|
||||||
*
|
*
|
||||||
* Java usage:
|
* Java usage:
|
||||||
|
|
@ -77,14 +78,47 @@
|
||||||
return $jnicall;
|
return $jnicall;
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(javadirectorin) char **STRING_ARRAY "$jniinput"
|
/*
|
||||||
%typemap(javadirectorout) char **STRING_ARRAY "$javacall"
|
* char **STRING_OUT typemaps.
|
||||||
%typemap(directorin, descriptor="Ljava/lang/String;") char **STRING_ARRAY
|
* These are typemaps for returning strings when using a C char ** parameter type.
|
||||||
%{ $input = JCALL1(NewStringUTF, jenv, *$1); %}
|
* 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.
|
* char *BYTE typemaps.
|
||||||
* This is an input typemap for mapping a Java byte[] array to a C char array.
|
* 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
|
* Note that as a Java array is used and thus passeed by reference, the C routine
|
||||||
* can return data to Java via the parameter.
|
* can return data to Java via the parameter.
|
||||||
*
|
*
|
||||||
|
|
@ -111,10 +145,3 @@
|
||||||
/* Prevent default freearg typemap from being used */
|
/* Prevent default freearg typemap from being used */
|
||||||
%typemap(freearg) char *BYTE ""
|
%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."
|
|
||||||
%}
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue