pub struct PolydatRuntime { /* private fields */ }Expand description
The Polydat runtime: unified compilation context.
Holds the complete function registry (built-in + factory-provided), factory instances for node construction, module search paths, and stdlib sources. All compilation goes through the runtime.
Multiple runtimes can coexist with different factory sets.
Implementations§
Source§impl PolydatRuntime
impl PolydatRuntime
Sourcepub fn register_factory(&mut self, factory: Box<dyn NodeFactory>)
pub fn register_factory(&mut self, factory: Box<dyn NodeFactory>)
Register an external node factory.
The factory’s signatures are merged into the unified registry. Its nodes become available for compilation immediately.
Sourcepub fn add_polydat_lib(&mut self, path: PathBuf)
pub fn add_polydat_lib(&mut self, path: PathBuf)
Add a module search path (from –polydat-lib).
Sourcepub fn registry(&self) -> Vec<FuncSig>
pub fn registry(&self) -> Vec<FuncSig>
Return the unified function registry: built-in + all factories.
SRD-80 — #[polydat_node]-generated nodes route through
the same crate::dsl::registry::registry() channel
(they submit NodeRegistration entries link-time, same
as register_nodes!-using modules), so no separate
merge step is needed here.
Sourcepub fn by_category(&self) -> Vec<(FuncCategory, Vec<FuncSig>)>
pub fn by_category(&self) -> Vec<(FuncCategory, Vec<FuncSig>)>
Return functions grouped by category from the unified registry.
Sourcepub fn build_from_factory(
&self,
name: &str,
wire_count: usize,
consts: &[FactoryArg],
) -> Option<Result<Box<dyn PolydatNode>, String>>
pub fn build_from_factory( &self, name: &str, wire_count: usize, consts: &[FactoryArg], ) -> Option<Result<Box<dyn PolydatNode>, String>>
Try to build a node through registered factories.
Called by the compiler when the built-in build_node doesn’t match. Returns None if no factory handles this function name.
Sourcepub fn factory_count(&self) -> usize
pub fn factory_count(&self) -> usize
Number of registered factories.
Sourcepub fn polydat_lib_paths(&self) -> &[PathBuf]
pub fn polydat_lib_paths(&self) -> &[PathBuf]
The –polydat-lib search paths.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for PolydatRuntime
impl !UnwindSafe for PolydatRuntime
impl Freeze for PolydatRuntime
impl Send for PolydatRuntime
impl Sync for PolydatRuntime
impl Unpin for PolydatRuntime
impl UnsafeUnpin for PolydatRuntime
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more