pub struct ProcEvents<'a> { /* private fields */ }Expand description
A list of events for an AudioNodeProcessor.
Implementations§
Source§impl<'a> ProcEvents<'a>
impl<'a> ProcEvents<'a>
pub fn new( immediate_event_buffer: &'a mut [Option<NodeEvent>], scheduled_event_arena: &'a mut [Option<ScheduledEventEntry>], indices: &'a mut Vec<ProcEventsIndex>, ) -> Self
pub fn num_events(&self) -> usize
Sourcepub fn drain<'b>(
&'b mut self,
) -> impl IntoIterator<Item = NodeEventType> + use<'b>
pub fn drain<'b>( &'b mut self, ) -> impl IntoIterator<Item = NodeEventType> + use<'b>
Iterate over all events, draining the events from the list.
Sourcepub fn drain_with_timestamps<'b>(
&'b mut self,
) -> impl IntoIterator<Item = (NodeEventType, Option<EventInstant>)> + use<'b>
pub fn drain_with_timestamps<'b>( &'b mut self, ) -> impl IntoIterator<Item = (NodeEventType, Option<EventInstant>)> + use<'b>
Iterate over all events and their timestamps, draining the events from the list.
The iterator returns (event_type, Option<event_instant>)
where event_type is the event, event_instant is the instant the
event was schedueld for. If the event was not scheduled, then
the latter will be None.
Sourcepub fn drain_patches<'b, T: Patch>(
&'b mut self,
) -> impl IntoIterator<Item = <T as Patch>::Patch> + use<'b, T>
pub fn drain_patches<'b, T: Patch>( &'b mut self, ) -> impl IntoIterator<Item = <T as Patch>::Patch> + use<'b, T>
Iterate over patches for T, draining the events from the list.
#[derive(Patch, Default)]
struct FilterNode {
frequency: f32,
quality: f32,
}
let mut node = FilterNode::default();
// You can match on individual patch variants.
for patch in event_list.drain_patches::<FilterNode>() {
match patch {
FilterNodePatch::Frequency(frequency) => {
node.frequency = frequency;
}
FilterNodePatch::Quality(quality) => {
node.quality = quality;
}
}
}
// Or simply apply all of them.
for patch in event_list.drain_patches::<FilterNode>() { node.apply(patch); }Errors produced while constructing patches are simply skipped.
Sourcepub fn drain_patches_with_timestamps<'b, T: Patch>(
&'b mut self,
) -> impl IntoIterator<Item = (<T as Patch>::Patch, Option<EventInstant>)> + use<'b, T>
pub fn drain_patches_with_timestamps<'b, T: Patch>( &'b mut self, ) -> impl IntoIterator<Item = (<T as Patch>::Patch, Option<EventInstant>)> + use<'b, T>
Iterate over patches for T, draining the events from the list, while also
returning the timestamp the event was scheduled for.
The iterator returns (patch, Option<event_instant>)
where event_instant is the instant the event was schedueld for. If the event
was not scheduled, then the latter will be None.
#[derive(Patch, Default)]
struct FilterNode {
frequency: f32,
quality: f32,
}
let mut node = FilterNode::default();
// You can match on individual patch variants.
for (patch, timestamp) in event_list.drain_patches_with_timestamps::<FilterNode>() {
match patch {
FilterNodePatch::Frequency(frequency) => {
node.frequency = frequency;
}
FilterNodePatch::Quality(quality) => {
node.quality = quality;
}
}
}
// Or simply apply all of them.
for (patch, timestamp) in event_list.drain_patches_with_timestamps::<FilterNode>() { node.apply(patch); }Errors produced while constructing patches are simply skipped.
Auto Trait Implementations§
impl<'a> Freeze for ProcEvents<'a>
impl<'a> !RefUnwindSafe for ProcEvents<'a>
impl<'a> Send for ProcEvents<'a>
impl<'a> Sync for ProcEvents<'a>
impl<'a> Unpin for ProcEvents<'a>
impl<'a> !UnwindSafe for ProcEvents<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.