pub mod array;
mod boolean;
#[cfg(target_pointer_width = "64")]
mod lv_errors;
mod lv_status;
pub mod string;
pub mod timestamp;
use std::ffi::c_void;
use crate::memory::UHandle;
#[cfg(feature = "link")]
pub use array::LVArrayOwned;
pub use array::{LVArray, LVArrayHandle};
pub use boolean::LVBool;
#[cfg(target_pointer_width = "64")]
pub use lv_errors::{ErrorClusterPtr, ToLvError};
pub use lv_status::LVStatusCode;
pub use string::LStrHandle;
#[cfg(feature = "link")]
pub use string::LStrOwned;
pub use timestamp::LVTime;
#[macro_export]
macro_rules! labview_layout {
($struct:item) => {
#[repr(C)]
#[cfg_attr(target_pointer_width = "32", repr(packed))]
$struct
};
}
#[repr(transparent)]
pub struct LVVariant<'variant>(UHandle<'variant, c_void>);
labview_layout!(
pub struct Waveform<'waveform, T> {
pub t0: timestamp::LVTime,
pub dt: f64,
pub data: LVArrayHandle<'waveform, 1, T>,
#[cfg(target_pointer_width = "64")]
_pad: u64,
#[cfg(target_pointer_width = "32")]
_pad: u32,
#[cfg(target_pointer_width = "32")]
_mini_pad: u8,
attributes: LVVariant<'waveform>,
#[cfg(target_pointer_width = "64")]
_pad2: u64,
#[cfg(target_pointer_width = "32")]
_pad2: u32,
}
);