mirror of
https://github.com/jkcoxson/idevice.git
synced 2026-03-02 14:36:16 +01:00
Remove cpp 17 features and implement Rust into CPP
This commit is contained in:
@@ -6,58 +6,53 @@
|
||||
|
||||
namespace IdeviceFFI {
|
||||
|
||||
std::optional<Provider> Provider::tcp_new(const idevice_sockaddr* ip,
|
||||
PairingFile&& pairing,
|
||||
const std::string& label,
|
||||
FfiError& err) {
|
||||
Result<Provider, FfiError>
|
||||
Provider::tcp_new(const idevice_sockaddr* ip, PairingFile&& pairing, const std::string& label) {
|
||||
IdeviceProviderHandle* out = nullptr;
|
||||
|
||||
// Call with exact types; do NOT cast to void*
|
||||
if (IdeviceFfiError* e = idevice_tcp_provider_new(
|
||||
ip, static_cast<IdevicePairingFile*>(pairing.raw()), label.c_str(), &out)) {
|
||||
err = FfiError(e);
|
||||
return std::nullopt;
|
||||
FfiError e(idevice_tcp_provider_new(
|
||||
ip, static_cast<IdevicePairingFile*>(pairing.raw()), label.c_str(), &out));
|
||||
if (e) {
|
||||
return Err(e);
|
||||
}
|
||||
|
||||
// Success: Rust consumed the pairing file -> abandon our ownership
|
||||
pairing.release(); // implement as: ptr_.release() in PairingFile
|
||||
pairing.release();
|
||||
|
||||
return Provider::adopt(out);
|
||||
return Ok(Provider::adopt(out));
|
||||
}
|
||||
|
||||
std::optional<Provider> Provider::usbmuxd_new(UsbmuxdAddr&& addr,
|
||||
uint32_t tag,
|
||||
const std::string& udid,
|
||||
uint32_t device_id,
|
||||
const std::string& label,
|
||||
FfiError& err) {
|
||||
Result<Provider, FfiError> Provider::usbmuxd_new(UsbmuxdAddr&& addr,
|
||||
uint32_t tag,
|
||||
const std::string& udid,
|
||||
uint32_t device_id,
|
||||
const std::string& label) {
|
||||
IdeviceProviderHandle* out = nullptr;
|
||||
|
||||
if (IdeviceFfiError* e = usbmuxd_provider_new(static_cast<UsbmuxdAddrHandle*>(addr.raw()),
|
||||
tag,
|
||||
udid.c_str(),
|
||||
device_id,
|
||||
label.c_str(),
|
||||
&out)) {
|
||||
err = FfiError(e);
|
||||
return std::nullopt;
|
||||
FfiError e(usbmuxd_provider_new(static_cast<UsbmuxdAddrHandle*>(addr.raw()),
|
||||
tag,
|
||||
udid.c_str(),
|
||||
device_id,
|
||||
label.c_str(),
|
||||
&out));
|
||||
if (e) {
|
||||
return Err(e);
|
||||
}
|
||||
|
||||
// Success: Rust consumed the addr -> abandon our ownership
|
||||
addr.release(); // implement as: ptr_.release() in UsbmuxdAddr
|
||||
|
||||
return Provider::adopt(out);
|
||||
addr.release();
|
||||
return Ok(Provider::adopt(out));
|
||||
}
|
||||
|
||||
std::optional<PairingFile> Provider::get_pairing_file(FfiError& err) {
|
||||
Result<PairingFile, FfiError> Provider::get_pairing_file() {
|
||||
|
||||
IdevicePairingFile* out = nullptr;
|
||||
if (IdeviceFfiError* e = idevice_provider_get_pairing_file(handle_.get(), &out)) {
|
||||
err = FfiError(e);
|
||||
return std::nullopt;
|
||||
FfiError e(idevice_provider_get_pairing_file(handle_.get(), &out));
|
||||
if (e) {
|
||||
return Err(e);
|
||||
}
|
||||
|
||||
return PairingFile(out);
|
||||
|
||||
return Ok(PairingFile(out));
|
||||
}
|
||||
|
||||
} // namespace IdeviceFFI
|
||||
|
||||
Reference in New Issue
Block a user