1pub trait AsJava<'a> {
5 fn java_fn(&self) -> String;
7}
8
9pub trait AsJavaPtr {
11 fn as_java_ptr(self) -> *const Self;
13}
14
15impl<T> AsJavaPtr for T {
16 fn as_java_ptr(self) -> *const Self {
17 Box::into_raw(Box::new(self))
18 }
19}
20
21impl<'a> AsJava<'a> for String {
22 fn java_fn(&self) -> String {
23 "NativeTools.getString".into()
24 }
25}
26
27macro_rules! conversion {
28 ($ty: ty => $other: ident: $func: ident) => {
29 impl<'a> AsJava<'a> for $ty {
30 fn java_fn(&self) -> String {
31 format!("NativeTools.{}", stringify!($func))
32 }
33 }
34 };
35}
36
37conversion!(u8 => jbyte: getByte);
38conversion!(u16 => jshort: getShort);
39conversion!(u32 => jint: getInt);
40conversion!(u64 => jlong: getLong);
41conversion!(i8 => jbyte: getByte);
42conversion!(i16 => jshort: getShort);
43conversion!(i32 => jint: getInt);
44conversion!(i64 => jlong: getLong);
45conversion!(char => jchar: getChar);
46conversion!(bool => jboolean: getBool);
47conversion!(f32 => jfloat: getFloat);
48conversion!(f64 => jdouble: getDouble);
49
50