(jni_env: *mut JNIEnv)
| 781 | } |
| 782 | |
| 783 | unsafe fn primitive_box_methods(jni_env: *mut JNIEnv) -> Result<PrimitiveBoxMethods, String> { |
| 784 | static mut PRIM_BOX_METHS: *const Result<PrimitiveBoxMethods, String> = 0 as *const Result<PrimitiveBoxMethods, String>; |
| 785 | static ONCE: Once = ONCE_INIT; |
| 786 | ONCE.call_once(|| { |
| 787 | unsafe fn method_ref(jni_env: *mut JNIEnv, class_name: &str, method_desc: &str) -> Result<MethodRef, String> { |
| 788 | let class_name_str = CString::new(class_name).unwrap(); |
| 789 | let class = util::result_or_jni_ex((**jni_env).FindClass.unwrap()(jni_env, |
| 790 | class_name_str.as_ptr()), jni_env)?; |
| 791 | let meth_name_str = CString::new("valueOf").unwrap(); |
| 792 | let desc_str = CString::new(method_desc).unwrap(); |
| 793 | let method = util::result_or_jni_ex((**jni_env).GetStaticMethodID.unwrap()(jni_env, |
| 794 | class, |
| 795 | meth_name_str.as_ptr(), |
| 796 | desc_str.as_ptr()), jni_env)?; |
| 797 | return Result::Ok((class, method)); |
| 798 | } |
| 799 | unsafe fn prim_box_meths(jni_env: *mut JNIEnv) -> Result<PrimitiveBoxMethods, String> { |
| 800 | return Result::Ok(PrimitiveBoxMethods { |
| 801 | boolean: method_ref(jni_env, "java/lang/Boolean", "(Z)Ljava/lang/Boolean;")?, |
| 802 | byte: method_ref(jni_env, "java/lang/Byte", "(B)Ljava/lang/Byte;")?, |
| 803 | char: method_ref(jni_env, "java/lang/Character", "(C)Ljava/lang/Character;")?, |
| 804 | short: method_ref(jni_env, "java/lang/Short", "(S)Ljava/lang/Short;")?, |
| 805 | int: method_ref(jni_env, "java/lang/Integer", "(I)Ljava/lang/Integer;")?, |
| 806 | long: method_ref(jni_env, "java/lang/Long", "(J)Ljava/lang/Long;")?, |
| 807 | float: method_ref(jni_env, "java/lang/Float", "(F)Ljava/lang/Float;")?, |
| 808 | double: method_ref(jni_env, "java/lang/Double", "(D)Ljava/lang/Double;")?, |
| 809 | }); |
| 810 | } |
| 811 | PRIM_BOX_METHS = mem::transmute(Box::new(prim_box_meths(jni_env))); |
| 812 | }); |
| 813 | return ptr::read(PRIM_BOX_METHS); |
| 814 | } |
no test coverage detected