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

Create a new empty graph builder.

Source

pub fn add_resource(&mut self, resource: GraphResource)

Register a named resource.

Source

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

Add a source node and return its index.

Source

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

Add a processor node and return its index.

Source

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

Add a sink node and return its index.

Source

pub fn add_router(&mut self, router: Box<dyn Router<T, BUF_SIZE>>) -> usize

Add a Router node (N→M configurable routing, no DSP).

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.

§Errors

Returns RegistryError if the type name is not registered or construction fails.

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.

§Errors

Returns RegistryError if the type name is not registered or construction fails.

§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.

§Errors

Returns BuildError::CycleDetected if the signal edges contain a cycle.

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.