blob: cf0f85ba8b843257e34ccc09c1984341aa1b279b [file] [log] [blame]
/* -------------------------------------------------------------
* 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);
}