Skip to main content

GraphBuilder

Struct GraphBuilder 

Source
pub struct GraphBuilder<T: Transcendental, const BUF_SIZE: usize> { /* private fields */ }
Expand description

Mutable builder for an immutable signal graph.

Implementations§

Source§

impl<T: Transcendental, const BUF_SIZE: usize> GraphBuilder<T, BUF_SIZE>

Source

pub fn new() -> Self

Source

pub fn add_source(&mut self, source: Box<dyn Source<T, BUF_SIZE>>) -> usize

Source

pub fn add_processor( &mut self, processor: Box<dyn Processor<T, BUF_SIZE>>, ) -> usize

Source

pub fn add_sink(&mut self, sink: Box<dyn Sink<T, BUF_SIZE>>) -> usize

Source

pub fn add_node( &mut self, registry: &NodeRegistry<T, BUF_SIZE>, type_name: &str, params: &NodeParams, ) -> Result<usize, RegistryError>

Add a node by type name via the registry.

Looks up the type name in registry, calls its [NodeConstructor::construct], and pushes the resulting NodeVariant into the graph. The node’s NodeId is automatically assigned from its position in the graph.

Returns the index of the newly added node.

Source

pub fn add_node_with_id( &mut self, registry: &NodeRegistry<T, BUF_SIZE>, type_name: &str, params: &NodeParams, id: NodeId, ) -> Result<usize, RegistryError>

Add a node with an explicit NodeId.

Unlike add_node which auto-assigns IDs, this method uses the provided id directly. Important for serialization where external references (e.g. patchbay bindings) depend on exact IDs.

Returns the index (position) of the newly added node.

§Panics

If id duplicates a previously registered ID the error is reported by the caller — this method does not check for duplicates.

Source

pub fn node_count(&self) -> usize

Return the number of nodes added so far.

Source

pub fn connect_signal( &mut self, from_node: usize, from_port: usize, to_node: usize, to_port: usize, )

Connect signal output port from_port of node from_node to signal input port to_port of node to_node.

Source

pub fn connect_control( &mut self, from_node: usize, from_port: usize, to_node: usize, to_port: usize, )

Connect a control output to a control input.

Source

pub fn connect_clock( &mut self, from_node: usize, from_port: usize, to_node: usize, to_port: usize, )

Connect a clock output to a clock input.

Source

pub fn connect_feedback( &mut self, from_node: usize, from_port: usize, to_node: usize, to_port: usize, )

Connect a feedback output to a feedback input. This creates a feedback path (previous output → current input).

Source

pub fn build( self, clock_source: Box<dyn ClockSource>, ) -> Result<SignalGraph<T, BUF_SIZE>, BuildError>

Build the immutable SignalGraph.

Trait Implementations§

Source§

impl<T: Transcendental, const BUF_SIZE: usize> Default for GraphBuilder<T, BUF_SIZE>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T, const BUF_SIZE: usize> Freeze for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> !RefUnwindSafe for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> Send for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> Sync for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> Unpin for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> UnsafeUnpin for GraphBuilder<T, BUF_SIZE>

§

impl<T, const BUF_SIZE: usize> !UnwindSafe for GraphBuilder<T, BUF_SIZE>

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> AsAny for T
where T: 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert to &dyn std::any::Any
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert to &mut dyn std::any::Any
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> 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, 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.