Remove cpp 17 features and implement Rust into CPP

This commit is contained in:
Jackson Coxson
2025-08-29 14:19:28 -06:00
parent 4fde7cf06b
commit 1169408da1
41 changed files with 1638 additions and 1212 deletions

View File

@@ -1,43 +1,50 @@
// Jackson Coxson
#include <idevice++/adapter_stream.hpp>
#include <idevice++/option.hpp>
namespace IdeviceFFI {
bool AdapterStream::close(FfiError& err) {
if (!h_)
return true;
if (IdeviceFfiError* e = ::adapter_close(h_)) {
err = FfiError(e);
return false;
}
h_ = nullptr;
return true;
Result<void, FfiError> AdapterStream::close() {
if (!h_)
return Ok();
FfiError e(::adapter_close(h_));
if (e) {
return Err(e);
}
h_ = nullptr;
return Ok();
}
bool AdapterStream::send(const uint8_t* data, size_t len, FfiError& err) {
if (!h_)
return false;
if (IdeviceFfiError* e = ::adapter_send(h_, data, len)) {
err = FfiError(e);
return false;
}
return true;
Result<void, FfiError> AdapterStream::send(const uint8_t *data, size_t len) {
if (!h_)
return Err(FfiError::NotConnected());
FfiError e(::adapter_send(h_, data, len));
if (e) {
return Err(e);
}
return Ok();
}
bool AdapterStream::recv(std::vector<uint8_t>& out, FfiError& err, size_t max_hint) {
if (!h_)
return false;
if (max_hint == 0)
max_hint = 2048;
out.resize(max_hint);
size_t actual = 0;
if (IdeviceFfiError* e = ::adapter_recv(h_, out.data(), &actual, out.size())) {
err = FfiError(e);
return false;
}
out.resize(actual);
return true;
Result<std::vector<uint8_t>, FfiError> AdapterStream::recv(size_t max_hint) {
if (!h_)
return Err(FfiError::NotConnected());
if (max_hint == 0)
max_hint = 2048;
std::vector<uint8_t> out(max_hint);
size_t actual = 0;
FfiError e(::adapter_recv(h_, out.data(), &actual, out.size()));
if (e) {
return Err(e);
}
out.resize(actual);
return Ok(std::move(out));
}
} // namespace IdeviceFFI