pub mod channel;
pub mod compression;
pub mod multichannel;
pub use channel::*;
pub use compression::*;
pub use multichannel::*;
use crate::MultiMutPtr;
pub trait Channels {
type Data;
type Ptr: MultiMutPtr<Data = Self::Data>;
type UninitSelf: UninitChannels;
}
pub trait Slices<'a> {
type Target;
fn slices(&'a self) -> Self::Target;
}
pub trait SlicesMut<'a> {
type Target;
fn slices_mut(&'a mut self) -> Self::Target;
}
pub trait CopySlices<'a> {
type Src;
fn copy_slices(&mut self, src: Self::Src);
}
pub trait BorrowChannels<'a> {
type Borrowed;
fn borrow(&'a self) -> Self::Borrowed;
}
pub trait BorrowChannelsMut<'a> {
type Borrowed;
fn borrow_mut(&'a mut self) -> Self::Borrowed;
}
pub trait ResetChannels: Channels {
fn reset_values(&mut self, value: Self::Data);
}
pub trait FillChannels: Channels {
fn fill(value: Self::Data, length: usize) -> Self;
}
pub trait UninitChannels: Channels {
type InitSelf;
unsafe fn maybe_uninit(size: usize) -> Self;
unsafe fn assume_init(self) -> Self::InitSelf;
}