jvm :: JniEnv :: convert_args_to_jni
private fun convert_args_to_jni(args: nullable Array[nullable Object]): Pointer import Array[nullable Object].as not nullable, Array[nullable Object].[], Array[nullable Object].length, nullable Object.as(Int), nullable Object.as(Char), nullable Object.as(Bool), nullable Object.as(Float), nullable Object.as(JavaObject), nullable Object.as(String), String.to_cstring, String.length `{
if(nullable_Array_of_nullable_Object_is_null(args)){
return NULL;
}
Array_of_nullable_Object nit_array = nullable_Array_of_nullable_Object_as_Array_of_nullable_Object(args);
int nit_array_length = Array_of_nullable_Object_length(nit_array);
int i;
jvalue *c_array = malloc(sizeof(jvalue)*(nit_array_length));
for (i = 0; i < nit_array_length; i ++) {
nullable_Object nullable_obj = Array_of_nullable_Object__index(nit_array, i);
if(nullable_Object_is_a_Int(nullable_obj)) {
int val = nullable_Object_as_Int(nullable_obj);
c_array[i].i = val;
} else if (nullable_Object_is_a_Char(nullable_obj)){
char val = nullable_Object_as_Char(nullable_obj);
c_array[i].c = val;
} else if (nullable_Object_is_a_Bool(nullable_obj)){
int val = nullable_Object_as_Bool(nullable_obj);
c_array[i].z = val;
} else if(nullable_Object_is_a_Float(nullable_obj)){
float val = nullable_Object_as_Float(nullable_obj);
c_array[i].f = val;
} else if(nullable_Object_is_a_JavaObject(nullable_obj)){
jobject val = nullable_Object_as_JavaObject(nullable_obj);
c_array[i].l = val;
} else if(nullable_Object_is_a_String(nullable_obj)){
String val = nullable_Object_as_String(nullable_obj);
char* c = String_to_cstring(val);
jstring js = (*self)->NewStringUTF(self, c);
c_array[i].l = js;
} else {
fprintf(stderr, "NOT YET SUPPORTED: nit objects are not supported\n");
exit(1);
}
}
return c_array;
`}
lib/jvm/jvm.nit:298,2--334,3