use crate::error_codes::DLOPEN_RUNTIME_LOAD_FAILED;
use crate::runtime::{OpenClRuntime, load_library};
pub fn load_dynamic_runtime() -> Result<&'static OpenClRuntime, i32> {
load_library()
.as_ref()
.map_err(|_| DLOPEN_RUNTIME_LOAD_FAILED)
}
macro_rules! cl_call {
($func:ident($($arg:expr),* $(,)?)) => {{
if let Some(result) = $crate::dynamic_library::load_dynamic_runtime()?.$func($($arg),*) {
result
} else {
return Err($crate::error_codes::DLOPEN_FUNCTION_NOT_AVAILABLE)
}
}};
($namespace:ident::$func:ident($($arg:expr),* $(,)?)) => {{
cl_call!($func($($arg),*))
}}
}