#![allow(clippy::all, unused_imports, rustdoc::bare_urls)]
use crate::error::{check, Error, Result};
use crate::object::{BaseObject, Interface, Ref};
use crate::sys;
use crate::value::{Complex, Ratio, Value};
use crate::generated::*;
use std::ffi::c_char;
#[repr(transparent)]
#[derive(Clone, Debug)]
pub struct Logger(pub(crate) BaseObject);
impl std::ops::Deref for Logger {
type Target = BaseObject;
fn deref(&self) -> &BaseObject { &self.0 }
}
impl crate::sealed::Sealed for Logger {}
unsafe impl Interface for Logger {
const NAME: &'static str = "daqLogger";
fn interface_id() -> Option<crate::IntfID> {
let mut id = crate::IntfID { Data1: 0, Data2: 0, Data3: 0, Data4: 0 };
unsafe { (crate::sys::api().daqLogger_getInterfaceId)(&mut id) };
Some(id)
}
unsafe fn from_raw(ptr: *mut std::ffi::c_void) -> Option<Self> {
Ref::from_owned(ptr).map(Self::__from_ref)
}
fn as_base_object(&self) -> &BaseObject { &self.0 }
}
impl Logger {
#[doc(hidden)]
pub(crate) fn __from_ref(r: Ref) -> Self { Logger(BaseObject(r)) }
}
impl std::fmt::Display for Logger {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.as_base_object(), f)
}
}
impl From<&Logger> for Value {
fn from(value: &Logger) -> Value { Value::Object(value.to_base_object()) }
}
impl From<Logger> for Value {
fn from(value: Logger) -> Value { Value::Object(value.to_base_object()) }
}
impl crate::value::FromDaqOwned for Logger {
unsafe fn from_daq_owned(ptr: *mut std::ffi::c_void, op: &'static str) -> Result<Self> {
crate::value::cast_owned(ptr, op)
}
}
#[repr(transparent)]
#[derive(Clone, Debug)]
pub struct ModuleManager(pub(crate) BaseObject);
impl std::ops::Deref for ModuleManager {
type Target = BaseObject;
fn deref(&self) -> &BaseObject { &self.0 }
}
impl crate::sealed::Sealed for ModuleManager {}
unsafe impl Interface for ModuleManager {
const NAME: &'static str = "daqModuleManager";
fn interface_id() -> Option<crate::IntfID> {
let mut id = crate::IntfID { Data1: 0, Data2: 0, Data3: 0, Data4: 0 };
unsafe { (crate::sys::api().daqModuleManager_getInterfaceId)(&mut id) };
Some(id)
}
unsafe fn from_raw(ptr: *mut std::ffi::c_void) -> Option<Self> {
Ref::from_owned(ptr).map(Self::__from_ref)
}
fn as_base_object(&self) -> &BaseObject { &self.0 }
}
impl ModuleManager {
#[doc(hidden)]
pub(crate) fn __from_ref(r: Ref) -> Self { ModuleManager(BaseObject(r)) }
}
impl std::fmt::Display for ModuleManager {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.as_base_object(), f)
}
}
impl From<&ModuleManager> for Value {
fn from(value: &ModuleManager) -> Value { Value::Object(value.to_base_object()) }
}
impl From<ModuleManager> for Value {
fn from(value: ModuleManager) -> Value { Value::Object(value.to_base_object()) }
}
impl crate::value::FromDaqOwned for ModuleManager {
unsafe fn from_daq_owned(ptr: *mut std::ffi::c_void, op: &'static str) -> Result<Self> {
crate::value::cast_owned(ptr, op)
}
}
#[repr(transparent)]
#[derive(Clone, Debug)]
pub struct Scheduler(pub(crate) BaseObject);
impl std::ops::Deref for Scheduler {
type Target = BaseObject;
fn deref(&self) -> &BaseObject { &self.0 }
}
impl crate::sealed::Sealed for Scheduler {}
unsafe impl Interface for Scheduler {
const NAME: &'static str = "daqScheduler";
fn interface_id() -> Option<crate::IntfID> {
let mut id = crate::IntfID { Data1: 0, Data2: 0, Data3: 0, Data4: 0 };
unsafe { (crate::sys::api().daqScheduler_getInterfaceId)(&mut id) };
Some(id)
}
unsafe fn from_raw(ptr: *mut std::ffi::c_void) -> Option<Self> {
Ref::from_owned(ptr).map(Self::__from_ref)
}
fn as_base_object(&self) -> &BaseObject { &self.0 }
}
impl Scheduler {
#[doc(hidden)]
pub(crate) fn __from_ref(r: Ref) -> Self { Scheduler(BaseObject(r)) }
}
impl std::fmt::Display for Scheduler {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.as_base_object(), f)
}
}
impl From<&Scheduler> for Value {
fn from(value: &Scheduler) -> Value { Value::Object(value.to_base_object()) }
}
impl From<Scheduler> for Value {
fn from(value: Scheduler) -> Value { Value::Object(value.to_base_object()) }
}
impl crate::value::FromDaqOwned for Scheduler {
unsafe fn from_daq_owned(ptr: *mut std::ffi::c_void, op: &'static str) -> Result<Self> {
crate::value::cast_owned(ptr, op)
}
}
impl Logger {
pub fn add_component(&self, name: &str) -> Result<Option<LoggerComponent>> {
let __name = crate::marshal::make_string(name)?;
let mut __component: *mut sys::daqLoggerComponent = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqLogger_addComponent)(self.as_raw() as *mut _, __name.as_ptr() as *mut _, &mut __component) };
check(__code, "daqLogger_addComponent")?;
Ok(unsafe { crate::marshal::take_object::<LoggerComponent>(__component as *mut _) })
}
pub fn new(sinks: impl Into<Value>, level: LogLevel) -> Result<Logger> {
let __sinks = crate::value::to_daq(&sinks.into())?;
let mut __obj: *mut sys::daqLogger = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqLogger_createLogger)(&mut __obj, crate::value::opt_ref_ptr(&__sinks) as *mut _, level as u32) };
check(__code, "daqLogger_createLogger")?;
Ok(unsafe { crate::marshal::require_object::<Logger>(__obj as *mut _, "daqLogger_createLogger") }?)
}
pub fn flush(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqLogger_flush)(self.as_raw() as *mut _) };
check(__code, "daqLogger_flush")?;
Ok(())
}
pub fn flush_on_level(&self, level: LogLevel) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqLogger_flushOnLevel)(self.as_raw() as *mut _, level as u32) };
check(__code, "daqLogger_flushOnLevel")?;
Ok(())
}
pub fn component(&self, name: &str) -> Result<Option<LoggerComponent>> {
let __name = crate::marshal::make_string(name)?;
let mut __component: *mut sys::daqLoggerComponent = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqLogger_getComponent)(self.as_raw() as *mut _, __name.as_ptr() as *mut _, &mut __component) };
check(__code, "daqLogger_getComponent")?;
Ok(unsafe { crate::marshal::take_object::<LoggerComponent>(__component as *mut _) })
}
pub fn components(&self) -> Result<Vec<LoggerComponent>> {
let mut __components: *mut sys::daqList = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqLogger_getComponents)(self.as_raw() as *mut _, &mut __components) };
check(__code, "daqLogger_getComponents")?;
Ok(unsafe { crate::marshal::take_list::<LoggerComponent>(__components as *mut _, "daqLogger_getComponents") }?)
}
pub fn level(&self) -> Result<LogLevel> {
let mut __level: u32 = 0;
let __code = unsafe { (crate::sys::api().daqLogger_getLevel)(self.as_raw() as *mut _, &mut __level) };
check(__code, "daqLogger_getLevel")?;
Ok(crate::marshal::enum_out(LogLevel::from_raw(__level), "daqLogger_getLevel")?)
}
pub fn or_add_component(&self, name: &str) -> Result<Option<LoggerComponent>> {
let __name = crate::marshal::make_string(name)?;
let mut __component: *mut sys::daqLoggerComponent = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqLogger_getOrAddComponent)(self.as_raw() as *mut _, __name.as_ptr() as *mut _, &mut __component) };
check(__code, "daqLogger_getOrAddComponent")?;
Ok(unsafe { crate::marshal::take_object::<LoggerComponent>(__component as *mut _) })
}
pub fn remove_component(&self, name: &str) -> Result<()> {
let __name = crate::marshal::make_string(name)?;
let __code = unsafe { (crate::sys::api().daqLogger_removeComponent)(self.as_raw() as *mut _, __name.as_ptr() as *mut _) };
check(__code, "daqLogger_removeComponent")?;
Ok(())
}
pub fn set_level(&self, level: LogLevel) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqLogger_setLevel)(self.as_raw() as *mut _, level as u32) };
check(__code, "daqLogger_setLevel")?;
Ok(())
}
}
impl ModuleManager {
pub fn add_module(&self, module: &Module) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqModuleManager_addModule)(self.as_raw() as *mut _, module.as_raw() as *mut _) };
check(__code, "daqModuleManager_addModule")?;
Ok(())
}
pub fn new(path: &str) -> Result<ModuleManager> {
let __path = crate::marshal::make_string(path)?;
let mut __obj: *mut sys::daqModuleManager = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqModuleManager_createModuleManager)(&mut __obj, __path.as_ptr() as *mut _) };
check(__code, "daqModuleManager_createModuleManager")?;
Ok(unsafe { crate::marshal::require_object::<ModuleManager>(__obj as *mut _, "daqModuleManager_createModuleManager") }?)
}
pub fn multiple_paths(paths: impl Into<Value>) -> Result<ModuleManager> {
let __paths = crate::value::to_daq(&paths.into())?;
let mut __obj: *mut sys::daqModuleManager = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqModuleManager_createModuleManagerMultiplePaths)(&mut __obj, crate::value::opt_ref_ptr(&__paths) as *mut _) };
check(__code, "daqModuleManager_createModuleManagerMultiplePaths")?;
Ok(unsafe { crate::marshal::require_object::<ModuleManager>(__obj as *mut _, "daqModuleManager_createModuleManagerMultiplePaths") }?)
}
pub fn modules(&self) -> Result<Vec<Module>> {
let mut __modules: *mut sys::daqList = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqModuleManager_getModules)(self.as_raw() as *mut _, &mut __modules) };
check(__code, "daqModuleManager_getModules")?;
Ok(unsafe { crate::marshal::take_list::<Module>(__modules as *mut _, "daqModuleManager_getModules") }?)
}
pub fn vendor_keys(&self) -> Result<std::collections::HashMap<String, String>> {
let mut __vendor_keys: *mut sys::daqDict = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqModuleManager_getVendorKeys)(self.as_raw() as *mut _, &mut __vendor_keys) };
check(__code, "daqModuleManager_getVendorKeys")?;
Ok(unsafe { crate::marshal::take_dict::<String, String>(__vendor_keys as *mut _, "daqModuleManager_getVendorKeys") }?)
}
pub fn load_module(&self, path: &str) -> Result<Option<Module>> {
let __path = crate::marshal::make_string(path)?;
let mut __module: *mut sys::daqModule = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqModuleManager_loadModule)(self.as_raw() as *mut _, __path.as_ptr() as *mut _, &mut __module) };
check(__code, "daqModuleManager_loadModule")?;
Ok(unsafe { crate::marshal::take_object::<Module>(__module as *mut _) })
}
pub fn load_modules(&self, context: &Context) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqModuleManager_loadModules)(self.as_raw() as *mut _, context.as_raw() as *mut _) };
check(__code, "daqModuleManager_loadModules")?;
Ok(())
}
pub fn set_authenticated_only(&self, authenticated_only: bool) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqModuleManager_setAuthenticatedOnly)(self.as_raw() as *mut _, u8::from(authenticated_only)) };
check(__code, "daqModuleManager_setAuthenticatedOnly")?;
Ok(())
}
pub fn set_module_authenticator(&self, authenticator: &ModuleAuthenticator) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqModuleManager_setModuleAuthenticator)(self.as_raw() as *mut _, authenticator.as_raw() as *mut _) };
check(__code, "daqModuleManager_setModuleAuthenticator")?;
Ok(())
}
}
impl Scheduler {
pub fn new(logger: &Logger, num_workers: usize) -> Result<Scheduler> {
let mut __obj: *mut sys::daqScheduler = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqScheduler_createScheduler)(&mut __obj, logger.as_raw() as *mut _, num_workers) };
check(__code, "daqScheduler_createScheduler")?;
Ok(unsafe { crate::marshal::require_object::<Scheduler>(__obj as *mut _, "daqScheduler_createScheduler") }?)
}
pub fn with_main_loop(logger: &Logger, num_workers: usize, use_main_loop: bool) -> Result<Scheduler> {
let mut __obj: *mut sys::daqScheduler = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqScheduler_createSchedulerWithMainLoop)(&mut __obj, logger.as_raw() as *mut _, num_workers, u8::from(use_main_loop)) };
check(__code, "daqScheduler_createSchedulerWithMainLoop")?;
Ok(unsafe { crate::marshal::require_object::<Scheduler>(__obj as *mut _, "daqScheduler_createSchedulerWithMainLoop") }?)
}
pub fn is_main_loop_set(&self) -> Result<bool> {
let mut __is_set: u8 = 0;
let __code = unsafe { (crate::sys::api().daqScheduler_isMainLoopSet)(self.as_raw() as *mut _, &mut __is_set) };
check(__code, "daqScheduler_isMainLoopSet")?;
Ok(__is_set != 0)
}
pub fn is_multi_threaded(&self) -> Result<bool> {
let mut __multi_threaded: u8 = 0;
let __code = unsafe { (crate::sys::api().daqScheduler_isMultiThreaded)(self.as_raw() as *mut _, &mut __multi_threaded) };
check(__code, "daqScheduler_isMultiThreaded")?;
Ok(__multi_threaded != 0)
}
pub fn run_main_loop(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_runMainLoop)(self.as_raw() as *mut _, 1) };
check(__code, "daqScheduler_runMainLoop")?;
Ok(())
}
pub fn run_main_loop_with(&self, loop_time: usize) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_runMainLoop)(self.as_raw() as *mut _, loop_time) };
check(__code, "daqScheduler_runMainLoop")?;
Ok(())
}
pub fn run_main_loop_iteration(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_runMainLoopIteration)(self.as_raw() as *mut _) };
check(__code, "daqScheduler_runMainLoopIteration")?;
Ok(())
}
pub fn schedule_function(&self, function: &FunctionObject) -> Result<Option<Awaitable>> {
let mut __awaitable: *mut sys::daqAwaitable = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqScheduler_scheduleFunction)(self.as_raw() as *mut _, function.as_raw() as *mut _, &mut __awaitable) };
check(__code, "daqScheduler_scheduleFunction")?;
Ok(unsafe { crate::marshal::take_object::<Awaitable>(__awaitable as *mut _) })
}
pub fn schedule_graph(&self, graph: &TaskGraph) -> Result<Option<Awaitable>> {
let mut __awaitable: *mut sys::daqAwaitable = std::ptr::null_mut();
let __code = unsafe { (crate::sys::api().daqScheduler_scheduleGraph)(self.as_raw() as *mut _, graph.as_raw() as *mut _, &mut __awaitable) };
check(__code, "daqScheduler_scheduleGraph")?;
Ok(unsafe { crate::marshal::take_object::<Awaitable>(__awaitable as *mut _) })
}
pub fn schedule_work(&self, work: &Work) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_scheduleWork)(self.as_raw() as *mut _, work.as_raw() as *mut _) };
check(__code, "daqScheduler_scheduleWork")?;
Ok(())
}
pub fn schedule_work_on_main_loop(&self, work: &Work) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_scheduleWorkOnMainLoop)(self.as_raw() as *mut _, work.as_raw() as *mut _) };
check(__code, "daqScheduler_scheduleWorkOnMainLoop")?;
Ok(())
}
pub fn stop(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_stop)(self.as_raw() as *mut _) };
check(__code, "daqScheduler_stop")?;
Ok(())
}
pub fn stop_main_loop(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_stopMainLoop)(self.as_raw() as *mut _) };
check(__code, "daqScheduler_stopMainLoop")?;
Ok(())
}
pub fn wait_all(&self) -> Result<()> {
let __code = unsafe { (crate::sys::api().daqScheduler_waitAll)(self.as_raw() as *mut _) };
check(__code, "daqScheduler_waitAll")?;
Ok(())
}
}