java_spaghetti/
jni_type.rs1use jni_sys::*;
2
3pub unsafe trait JniType {
17 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R;
18}
19
20unsafe impl JniType for () {
21 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
22 callback("V\0")
23 }
24}
25unsafe impl JniType for bool {
26 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
27 callback("Z\0")
28 }
29}
30unsafe impl JniType for jbyte {
31 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
32 callback("B\0")
33 }
34}
35unsafe impl JniType for jchar {
36 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
37 callback("C\0")
38 }
39}
40unsafe impl JniType for jshort {
41 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
42 callback("S\0")
43 }
44}
45unsafe impl JniType for jint {
46 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
47 callback("I\0")
48 }
49}
50unsafe impl JniType for jlong {
51 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
52 callback("J\0")
53 }
54}
55unsafe impl JniType for jfloat {
56 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
57 callback("F\0")
58 }
59}
60unsafe impl JniType for jdouble {
61 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
62 callback("D\0")
63 }
64}
65unsafe impl JniType for &str {
66 fn static_with_jni_type<R>(callback: impl FnOnce(&str) -> R) -> R {
67 callback("Ljava/lang/String;\0")
68 }
69}