aboutsummaryrefslogtreecommitdiff
path: root/core/bindings/lang
diff options
context:
space:
mode:
author1992414357@qq.com <1992414357@qq.com>2025-06-14 16:13:13 +0800
committer1992414357@qq.com <1992414357@qq.com>2025-06-14 16:13:13 +0800
commit9d55a51782e811e8a71cda1a3d7872371ec54aeb (patch)
tree49870217e4523a63656542c9ead0fa49ad63bc1b /core/bindings/lang
parent1ce8a3cda8ff5fd64f476ebaa036ae96ca0600ed (diff)
Change std::os::raw to std::ffi
Diffstat (limited to 'core/bindings/lang')
-rw-r--r--core/bindings/lang/clang/src/data/ngpd_game_info.rs3
-rw-r--r--core/bindings/lang/clang/src/data/ngpd_message.rs8
-rw-r--r--core/bindings/lang/clang/src/data/ngpd_player.rs9
3 files changed, 15 insertions, 5 deletions
diff --git a/core/bindings/lang/clang/src/data/ngpd_game_info.rs b/core/bindings/lang/clang/src/data/ngpd_game_info.rs
index af45758..b83d0f7 100644
--- a/core/bindings/lang/clang/src/data/ngpd_game_info.rs
+++ b/core/bindings/lang/clang/src/data/ngpd_game_info.rs
@@ -1,6 +1,5 @@
use std::collections::HashMap;
-use std::ffi::{CStr, CString};
-use std::os::raw::c_char;
+use std::ffi::{c_char, CStr, CString};
#[repr(C)]
pub struct KeyValuePair {
diff --git a/core/bindings/lang/clang/src/data/ngpd_message.rs b/core/bindings/lang/clang/src/data/ngpd_message.rs
index c11ac12..466b50d 100644
--- a/core/bindings/lang/clang/src/data/ngpd_message.rs
+++ b/core/bindings/lang/clang/src/data/ngpd_message.rs
@@ -1,10 +1,10 @@
+use std::ffi::{c_char, c_double};
use crate::converter::string_converter::{str_c_to_rs, str_rs_to_c};
use crate::data::ngpd_game_info::FfiGameInfo;
use crate::data::ngpd_player::FfiPlayer;
use nogamepads_core::data::message::message_enums::{ConnectionMessage, ConnectionResponseMessage, ControlMessage, ExitReason, GameMessage, JoinFailedMessage};
use std::mem::ManuallyDrop;
use std::ops::Deref;
-use std::os::raw::{c_char, c_double};
#[repr(C)]
pub struct FfiControlMessage {
@@ -481,31 +481,37 @@ impl From<&FfiJoinFailedMessage> for JoinFailedMessage {
}
}
+/// Free ControlMessage
#[unsafe(no_mangle)]
pub extern "C" fn free_control_message(msg: FfiControlMessage) {
let _ = msg;
}
+/// Free GameMessage
#[unsafe(no_mangle)]
pub extern "C" fn free_game_message(msg: FfiGameMessage) {
let _ = msg;
}
+/// Free ExitReason
#[unsafe(no_mangle)]
pub extern "C" fn free_exit_reason(msg: FfiExitReason) {
let _ = msg;
}
+/// Free ConnectionMessage
#[unsafe(no_mangle)]
pub extern "C" fn free_connection_message(msg: FfiConnectionMessage) {
let _ = msg;
}
+/// Free ConnectionResponseMessage
#[unsafe(no_mangle)]
pub extern "C" fn free_connection_response_message(msg: FfiConnectionResponseMessage) {
let _ = msg;
}
+/// Free JoinFailedMessage
#[unsafe(no_mangle)]
pub extern "C" fn free_join_failed_message(msg: FfiJoinFailedMessage) {
let _ = msg;
diff --git a/core/bindings/lang/clang/src/data/ngpd_player.rs b/core/bindings/lang/clang/src/data/ngpd_player.rs
index a1a8370..3f6a84a 100644
--- a/core/bindings/lang/clang/src/data/ngpd_player.rs
+++ b/core/bindings/lang/clang/src/data/ngpd_player.rs
@@ -1,5 +1,4 @@
-use std::ffi::{CStr, CString};
-use std::os::raw::{c_char, c_double, c_int};
+use std::ffi::{c_char, c_double, c_int, CStr, CString};
use std::ptr;
use nogamepads_core::data::player::player_data::{Account, Customize, Player};
@@ -73,6 +72,7 @@ impl TryFrom<&FfiPlayer> for Player {
}
}
+/// Register a player
#[unsafe(no_mangle)]
pub extern "C" fn player_register(id: *const c_char, password: *const c_char) -> *mut FfiPlayer {
let id_str = unsafe { CStr::from_ptr(id) }.to_string_lossy();
@@ -82,6 +82,7 @@ pub extern "C" fn player_register(id: *const c_char, password: *const c_char) ->
Box::into_raw(Box::new(FfiPlayer::from(&player)))
}
+/// Check if the player's password is correct
#[unsafe(no_mangle)]
pub extern "C" fn player_check(player: *const FfiPlayer, password: *const c_char) -> bool {
let player = unsafe { &*player };
@@ -92,6 +93,7 @@ pub extern "C" fn player_check(player: *const FfiPlayer, password: *const c_char
.unwrap_or(false)
}
+/// Set the player's nickname
#[unsafe(no_mangle)]
pub extern "C" fn player_set_nickname(player: *mut FfiPlayer, nickname: *const c_char) {
let nickname_str = unsafe { CStr::from_ptr(nickname) }.to_string_lossy().into_owned();
@@ -101,6 +103,7 @@ pub extern "C" fn player_set_nickname(player: *mut FfiPlayer, nickname: *const c
*unsafe { &mut *player } = FfiPlayer::from(&rust_player);
}
+/// Set the player's hue
#[unsafe(no_mangle)]
pub extern "C" fn player_set_hue(player: *mut FfiPlayer, hue: c_int) {
let mut rust_player : Player = unsafe { (&*player).try_into().unwrap() };
@@ -109,6 +112,7 @@ pub extern "C" fn player_set_hue(player: *mut FfiPlayer, hue: c_int) {
*unsafe { &mut *player } = FfiPlayer::from(&rust_player);
}
+/// Set the player's HSV color
#[unsafe(no_mangle)]
pub extern "C" fn player_set_hsv(
player: *mut FfiPlayer, hue: c_int, saturation: c_double, value: c_double
@@ -119,6 +123,7 @@ pub extern "C" fn player_set_hsv(
*unsafe { &mut *player } = FfiPlayer::from(&rust_player);
}
+/// Free the player
#[unsafe(no_mangle)]
pub extern "C" fn player_free(player: *mut FfiPlayer) {
if player.is_null() { return; }