feat(rustadapter): using rifgen and flapigen-rs to generate interface
This commit is contained in:
parent
69b9f018b7
commit
e292058b5c
15 changed files with 1724 additions and 30 deletions
59
rust-adapter/src/_old.rs
Normal file
59
rust-adapter/src/_old.rs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#[no_mangle]
|
||||
pub extern "system" fn Java_net_mbess_popequer_Native_add(
|
||||
_env: JNIEnv,
|
||||
_class: JClass,
|
||||
a: i32,
|
||||
b: i32
|
||||
) -> i32 {
|
||||
a + b
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_net_mbess_popequer_Native_mul(
|
||||
_env: JNIEnv,
|
||||
_class: JClass,
|
||||
a: i32,
|
||||
b: i32
|
||||
) -> i32 {
|
||||
a * b
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_net_mbess_popequer_Native_fsInfo<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass<'local>,
|
||||
jinput: JString
|
||||
) -> jstring {
|
||||
let input: String = env.get_string(&jinput).unwrap().into();
|
||||
let paths = std::fs::read_dir(format!("/{}", input));
|
||||
dbg!(&input);
|
||||
let mut out = String::from("");
|
||||
for path in paths.unwrap() {
|
||||
out.push_str(&format!("{:?}\n", path.unwrap().path()))
|
||||
}
|
||||
let output = env.new_string(format!("FS test {:?}", out))
|
||||
.expect("Couldn't create java string!");
|
||||
|
||||
output.into_raw()
|
||||
}
|
||||
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_net_mbess_popequer_Native_entryPoint<'local>(
|
||||
mut env: JNIEnv<'local>,
|
||||
_class: JClass<'local>,
|
||||
jinput: JString
|
||||
) -> jstring {
|
||||
let input: String = env.get_string(&jinput).unwrap().into();
|
||||
let paths = std::fs::read_dir(format!("/{}", input));
|
||||
dbg!(&input);
|
||||
let mut out = String::from("");
|
||||
for path in paths.unwrap() {
|
||||
out.push_str(&format!("{:?}\n", path.unwrap().path()))
|
||||
}
|
||||
let output = env.new_string(format!("FS test {:?}", out))
|
||||
.expect("Couldn't create java string!");
|
||||
|
||||
output.into_raw()
|
||||
}
|
||||
|
||||
15
rust-adapter/src/java_glue.rs
Normal file
15
rust-adapter/src/java_glue.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#![allow(
|
||||
clippy::enum_variant_names,
|
||||
clippy::unused_unit,
|
||||
clippy::let_and_return,
|
||||
clippy::not_unsafe_ptr_arg_deref,
|
||||
clippy::cast_lossless,
|
||||
clippy::blacklisted_name,
|
||||
clippy::too_many_arguments,
|
||||
clippy::trivially_copy_pass_by_ref,
|
||||
clippy::let_unit_value,
|
||||
clippy::clone_on_copy
|
||||
)]
|
||||
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/java_glue.rs"));
|
||||
33
rust-adapter/src/lib.rs
Normal file
33
rust-adapter/src/lib.rs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
mod java_glue;
|
||||
|
||||
pub use crate::java_glue::*;
|
||||
|
||||
use rifgen::rifgen_attr::*;
|
||||
|
||||
struct Foo {
|
||||
data: i32
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
#[generate_interface(constructor)]
|
||||
fn new(val: i32) -> Foo {
|
||||
Foo{data: val}
|
||||
}
|
||||
|
||||
#[generate_interface]
|
||||
fn f(&self, a: i32, b: i32) -> i32 {
|
||||
self.data + a + b
|
||||
}
|
||||
|
||||
#[generate_interface]
|
||||
fn get_data(&self) -> i32 {
|
||||
self.data
|
||||
}
|
||||
|
||||
///Custom doc comment
|
||||
#[generate_interface]
|
||||
fn set_field(&mut self, v: i32) {
|
||||
self.data = v;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue