Added PluginContext
This commit is contained in:
41
sdk/rust/dim_sdk/src/plugin_info.rs
Normal file
41
sdk/rust/dim_sdk/src/plugin_info.rs
Normal file
@@ -0,0 +1,41 @@
|
||||
use std::ffi::{c_char, c_void, CString};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct PluginInfo {
|
||||
ptrs: PluginInfoPtrs,
|
||||
_name: CString,
|
||||
_version: CString,
|
||||
_license: CString
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Debug)]
|
||||
struct PluginInfoPtrs {
|
||||
name: *const c_char,
|
||||
version: *const c_char,
|
||||
license: *const c_char,
|
||||
}
|
||||
|
||||
impl PluginInfo {
|
||||
pub fn new(name: &str, version: &str, license: &str) -> Self {
|
||||
|
||||
let _name = CString::new(name).unwrap();
|
||||
let _version = CString::new(version).unwrap();
|
||||
let _license = CString::new(license).unwrap();
|
||||
let name = _name.as_ptr();
|
||||
let version = if _version.is_empty() {
|
||||
std::ptr::null()
|
||||
} else {_version.as_ptr()};
|
||||
let license = if _license.is_empty() {
|
||||
std::ptr::null()
|
||||
} else {_license.as_ptr()};
|
||||
|
||||
Self { ptrs: PluginInfoPtrs{ name, version, license }, _name, _version, _license }
|
||||
}
|
||||
|
||||
pub fn get_raw_ptr(&self) -> *const c_void {
|
||||
&self.ptrs as *const _ as *const c_void
|
||||
}
|
||||
}
|
||||
unsafe impl Sync for PluginInfo {}
|
||||
|
||||
Reference in New Issue
Block a user