MCPcopy Index your code
hub / github.com/cretz/stackparam / params_to_object_array

Function params_to_object_array

src/native.rs:378–421  ·  view source on GitHub ↗
(jni_env: *mut JNIEnv, methods: Vec<MethodInfo>)

Source from the content-addressed store, hash-verified

376}
377
378unsafe fn params_to_object_array(jni_env: *mut JNIEnv, methods: Vec<MethodInfo>) -> Result<jobjectArray, String> {
379 let obj_str = CString::new("java/lang/Object").unwrap();
380 let obj_class = util::result_or_jni_ex((**jni_env).FindClass.unwrap()(jni_env, obj_str.as_ptr()), jni_env)?;
381 let obj_arr_str = CString::new("[Ljava/lang/Object;").unwrap();
382 let obj_arr_class = util::result_or_jni_ex((**jni_env).FindClass.unwrap()(jni_env, obj_arr_str.as_ptr()), jni_env)?;
383 let ret = util::result_or_jni_ex((**jni_env).NewObjectArray.unwrap()(jni_env,
384 methods.len() as jsize,
385 obj_arr_class,
386 ptr::null_mut()), jni_env)?;
387 let mut unknown_param: jstring = ptr::null_mut();
388 for (method_index, method) in methods.iter().enumerate() {
389 let param_arr = util::result_or_jni_ex((**jni_env).NewObjectArray.unwrap()(jni_env,
390 (method.params.len() * 3) as jsize,
391 obj_class,
392 ptr::null_mut()), jni_env)?;
393 for (param_index, param) in method.params.iter().enumerate() {
394 // Goes: param name, param sig, val
395 (**jni_env).SetObjectArrayElement.unwrap()(jni_env,
396 param_arr,
397 (param_index * 3) as jsize,
398 new_string(jni_env, param.name.as_ref())?);
399 util::result_or_jni_ex((), jni_env)?;
400 (**jni_env).SetObjectArrayElement.unwrap()(jni_env,
401 param_arr,
402 ((param_index * 3) + 1) as jsize,
403 new_string(jni_env, param.typ.as_ref())?);
404 util::result_or_jni_ex((), jni_env)?;
405 let val = match param.val {
406 Some(val) => val,
407 None => {
408 if unknown_param.is_null() {
409 unknown_param = new_string(jni_env, "<unknown>")?;
410 }
411 unknown_param
412 }
413 };
414 (**jni_env).SetObjectArrayElement.unwrap()(jni_env, param_arr, ((param_index * 3) + 2) as jsize, val);
415 util::result_or_jni_ex((), jni_env)?;
416 }
417 (**jni_env).SetObjectArrayElement.unwrap()(jni_env, ret, method_index as jsize, param_arr);
418 util::result_or_jni_ex((), jni_env)?;
419 }
420 return Result::Ok(ret);
421}
422
423unsafe fn throw_ex_with_msg(jni_env: *mut JNIEnv, ex_class: &str, ex_msg: &str) -> Result<(), String> {
424 let ex_class_str = CString::new(ex_class).unwrap();

Callers 2

populate_stack_paramsFunction · 0.85

Calls 3

result_or_jni_exFunction · 0.85
new_stringFunction · 0.85
lenMethod · 0.80

Tested by

no test coverage detected