+ return (char*)(*self)->GetStringUTFChars(self, (jstring)jobj, NULL);
+ `}
+
+ 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;