| /* ------------------------------------------------------------- | |
| * 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); | |
| } |