use crate::InferenceError;
pub(crate) type Result<T> = std::result::Result<T, InferenceError>;
#[doc(hidden)]
#[macro_export]
macro_rules! cstr {
($str: expr) => {
std::ffi::CString::new($str).expect("a valid C string")
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! try_unsafe {
($e: expr) => {{
let status = unsafe { $e };
let message = if status != openvino_sys::ov_status_e::OK {
unsafe {
let ptr = openvino_sys::ov_get_last_err_msg();
if ptr.is_null() {
None
} else {
Some(std::ffi::CStr::from_ptr(ptr).to_string_lossy().into_owned())
}
}
} else {
None
};
$crate::InferenceError::convert(status, message)
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! drop_using_function {
($ty: ty, $free_fn: expr) => {
impl Drop for $ty {
fn drop(&mut self) {
let free = $free_fn;
unsafe { free(self.ptr.cast()) }
}
}
};
}