| /* ------------------------------------------------------------- |
| * SWIG library containing argc and argv multi-argument typemaps |
| * ------------------------------------------------------------- */ |
| |
| %typemap(jni) (int ARGC, char **ARGV) "jobjectArray" |
| %typemap(jtype) (int ARGC, char **ARGV) "String[]" |
| %typemap(jstype) (int ARGC, char **ARGV) "String[]" |
| |
| %typemap(in) (int ARGC, char **ARGV) { |
| $1_ltype i, len; |
| if ($input == (jobjectArray)0) { |
| SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array"); |
| return $null; |
| } |
| len = ($1_ltype)JCALL1(GetArrayLength, jenv, $input); |
| if (len < 0) { |
| SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "array length negative"); |
| return $null; |
| } |
| $2 = ($2_ltype) malloc((len+1)*sizeof($*2_ltype)); |
| if ($2 == NULL) { |
| SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "memory allocation failed"); |
| return $null; |
| } |
| $1 = len; |
| for (i = 0; i < len; i++) { |
| jstring j_string = (jstring)JCALL2(GetObjectArrayElement, jenv, $input, (jsize)i); |
| const char *c_string = JCALL2(GetStringUTFChars, jenv, j_string, 0); |
| $2[i] = ($*2_ltype)c_string; |
| } |
| $2[i] = NULL; |
| } |
| |
| %typemap(freearg) (int ARGC, char **ARGV) { |
| free((void *)$2); |
| } |