From 1e18dd4cb2d268bfd47f43efd8104be400a4b3ff Mon Sep 17 00:00:00 2001 From: GuilhermeWerner <26710260+GuilhermeWerner@users.noreply.github.com> Date: Fri, 7 May 2021 08:42:42 -0300 Subject: [PATCH] Add Rust Library --- .cargo/config.toml | 2 ++ Cargo.toml | 18 ++++++++++++++++++ Source/lib.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ build.rs | 3 +++ 4 files changed, 66 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 Cargo.toml create mode 100644 Source/lib.rs create mode 100644 build.rs diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..0243837 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target-dir = "Binaries" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..eccfe77 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "TribuFu-jvm" +version = "0.0.1" +description = "Jvm bindings to TribuFu SDK" +repository = "https://github.com/TribuFu/SDK" +authors = ["TribuFu "] +license = "Apache-2.0" +edition = "2018" +publish = false + +[lib] +name="TribuFu_jvm" +crate-type = ["cdylib", "rlib"] +path = "Source/lib.rs" + +[dependencies] +TribuFu_sys = { path = "../DevKit.Rs/Native", package = "TribuFu-sys" } +jni = "0.19.0" diff --git a/Source/lib.rs b/Source/lib.rs new file mode 100644 index 0000000..55e4f3d --- /dev/null +++ b/Source/lib.rs @@ -0,0 +1,43 @@ +// Copyright (c) TribuFu. All Rights Reserved + +//! Jvm bindings to TribuFu SDK. + +#![allow(non_snake_case)] +#![allow(unused_variables)] +#![allow(unused_imports)] + +#[cfg(not(any( + target_os = "windows", + target_os = "macos", + target_os = "linux", + target_os = "android", + target_os = "ios", + target_arch = "wasm32", +)))] +compile_error!("INVALID_TARGET_PLATFORM"); + +use jni::objects::{JClass, JString}; +use jni::sys::jstring; +use jni::JNIEnv; +use std::ffi::{CStr, CString}; + +#[no_mangle] +// This is the class that owns our static method. It's not going to be used, +// but still must be present to match the expected signature of a static +// native method. +pub extern "system" fn Java_tribufu_TribuFu_Hello( + env: JNIEnv, + _: JClass, + j_input: JString, +) -> jstring { + // First, we have to get the string out of Java. Check out the `strings` + // module for more info on how this works. + let input = CString::from(unsafe { CStr::from_ptr(env.get_string(j_input).unwrap().as_ptr()) }); + + // Then we have to create a new Java string to return. Again, more info + // in the `strings` module. + let res = env.new_string(input.to_str().unwrap()).unwrap(); + + // Finally, extract the raw pointer to return. + return res.into_inner(); +} diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..623d209 --- /dev/null +++ b/build.rs @@ -0,0 +1,3 @@ +// Copyright (c) TribuFu. All Rights Reserved + +fn main() {}