ProcEvents

Struct ProcEvents 

Source
pub struct ProcEvents<'a> { /* private fields */ }
Expand description

A list of events for an AudioNodeProcessor.

Implementations§

Source§

impl<'a> ProcEvents<'a>

Source

pub fn new( immediate_event_buffer: &'a mut [Option<NodeEvent>], scheduled_event_arena: &'a mut [Option<ScheduledEventEntry>], indices: &'a mut Vec<ProcEventsIndex>, ) -> Self

Source

pub fn num_events(&self) -> usize

Source

pub fn drain<'b>( &'b mut self, ) -> impl IntoIterator<Item = NodeEventType> + use<'b>

Iterate over all events, draining the events from the list.

Source

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.

Source

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.

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts 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>

Converts 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)

Converts &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)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ConditionalSend for T
where T: Send,