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