mod encode;
mod render;
use crate::signal::Mode;
#[derive(Clone, Debug)]
#[derive_const(Default)]
pub struct Signal {
mode: Mode,
data: Vec<u8>,
}
impl Signal {
#[inline]
#[must_use]
pub const fn new() -> Self {
Default::default()
}
#[inline]
pub fn set_mode(&mut self, mode: Mode) {
self.mode = mode;
let new_size = self.mode.sample_count();
self.data.resize(new_size, 0);
}
#[inline]
#[must_use]
pub const fn mode(&self) -> &Mode {
&self.mode
}
#[inline]
#[must_use]
pub const fn size(&self) -> usize {
self.data.len()
}
#[inline]
#[must_use]
pub const fn is_empty(&self) -> bool {
self.data.is_empty()
}
#[inline]
#[must_use]
pub const fn data(&self) -> &[u8] {
&self.data
}
#[inline]
#[must_use]
pub const fn data_mut(&mut self) -> &mut [u8] {
&mut self.data
}
}
impl Drop for Signal {
#[inline(always)]
fn drop(&mut self) {}
}