/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/java/argcargv.i
36 строк
1 KB
Olly Betts
Tweak comment formatting
23 май 2023, 00:20
23 май 2023, 00:20
fcf0d7d
Код
Авторство
О чём код?
/* ------------------------------------------------------------- * 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); }