diff options
| author | 1992414357@qq.com <1992414357@qq.com> | 2025-06-09 01:44:36 +0800 |
|---|---|---|
| committer | 1992414357@qq.com <1992414357@qq.com> | 2025-06-09 01:44:36 +0800 |
| commit | 49192dbb98e0ab1f2a66b4786fac86d63f69be64 (patch) | |
| tree | 7cdf27c7cab5fb6b1aabc2ac7c44b7b492558945 /bindings/c/src/data_c/control_message_c.rs | |
| parent | c9dbba0d288becb7f05cebe526be25c76e5a850a (diff) | |
重构所有部分
Diffstat (limited to 'bindings/c/src/data_c/control_message_c.rs')
| -rw-r--r-- | bindings/c/src/data_c/control_message_c.rs | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/bindings/c/src/data_c/control_message_c.rs b/bindings/c/src/data_c/control_message_c.rs deleted file mode 100644 index 6868459..0000000 --- a/bindings/c/src/data_c/control_message_c.rs +++ /dev/null @@ -1,150 +0,0 @@ -use crate::data_c::common::KeyData; -use crate::{str_c_to_rs, str_rs_to_c}; -use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::ControlMessage; -use std::ffi::{c_char, c_void}; -use std::ptr::null_mut; - -#[repr(C)] -#[allow(unused_imports)] -pub struct ControlMessageC { - pub tag: CtrlMsgCTag, - pub data: CtrlMsgCUnion -} - -#[repr(C)] -#[allow(unused_imports)] -pub enum CtrlMsgCTag { - Msg, Pressed, Released, Axis, Dir, Exit, Err -} - -#[repr(C)] -#[allow(unused_imports)] -pub union CtrlMsgCUnion { - nul: *mut c_void, - key: KeyData, - axis: AxisData, - dir: DirData, - str: StrData -} - -#[repr(C)] -#[allow(unused_imports)] -#[derive(Copy, Clone)] -pub struct AxisData { - key: u8, - ax: f64 -} - -#[repr(C)] -#[allow(unused_imports)] -#[derive(Copy, Clone)] -pub struct DirData { - key: u8, - x: f64, - y: f64 -} - -#[repr(C)] -#[allow(unused_imports)] -#[derive(Copy, Clone)] -pub struct StrData { - str: *const c_char -} - -impl From<ControlMessageC> for ControlMessage { - fn from(msg_c: ControlMessageC) -> Self { - match msg_c.tag { - CtrlMsgCTag::Msg => unsafe { - let str = str_c_to_rs(msg_c.data.str.str); - if str.is_some() { - ControlMessage::Msg(str.unwrap()) - } else { - ControlMessage::Err - } - } - CtrlMsgCTag::Pressed => unsafe { - ControlMessage::Pressed(msg_c.data.key.key) - } - CtrlMsgCTag::Released => unsafe { - ControlMessage::Released(msg_c.data.key.key) - } - CtrlMsgCTag::Axis => unsafe { - let data = msg_c.data.axis; - ControlMessage::Axis(data.key, data.ax) - } - CtrlMsgCTag::Dir => unsafe { - let data = msg_c.data.dir; - ControlMessage::Dir(data.key, (data.x, data.y)) - } - CtrlMsgCTag::Exit => { - ControlMessage::Exit - } - CtrlMsgCTag::Err => { - ControlMessage::Err - } - } - } -} - -impl From<ControlMessage> for ControlMessageC { - fn from(msg_rs: ControlMessage) -> Self { - match msg_rs { - ControlMessage::Msg(str_msg) => { - ControlMessageC { - tag: CtrlMsgCTag::Msg, - data: CtrlMsgCUnion { - str: StrData { str: str_rs_to_c(str_msg).1 }, - } - } - } - ControlMessage::Pressed(key) => { - ControlMessageC { - tag: CtrlMsgCTag::Pressed, - data: CtrlMsgCUnion { - key: KeyData { key }, - } - } - } - ControlMessage::Released(key) => { - ControlMessageC { - tag: CtrlMsgCTag::Released, - data: CtrlMsgCUnion { - key: KeyData { key }, - } - } - } - ControlMessage::Axis(key, ax) => { - ControlMessageC { - tag: CtrlMsgCTag::Axis, - data: CtrlMsgCUnion { - axis: AxisData { key, ax } - } - } - } - ControlMessage::Dir(key, (x, y)) => { - ControlMessageC { - tag: CtrlMsgCTag::Dir, - data: CtrlMsgCUnion { - dir: DirData { key, x, y } - } - } - } - ControlMessage::Exit => { - ControlMessageC { - tag: CtrlMsgCTag::Exit, - data: CtrlMsgCUnion { - nul: null_mut(), - } - } - } - ControlMessage::Err => { - ControlMessageC { - tag: CtrlMsgCTag::Err, - data: CtrlMsgCUnion { - nul: null_mut(), - } - } - } - } - } -}
\ No newline at end of file |
