diff --git a/src/runtime2/component/component.rs b/src/runtime2/component/component.rs index 0937682ed8884505429fe1e2ac2ef4671afe234f..f1d24bd7abf6821c74823e93f5f4e59401463f83 100644 --- a/src/runtime2/component/component.rs +++ b/src/runtime2/component/component.rs @@ -2,6 +2,7 @@ use crate::protocol::eval::*; use crate::protocol::*; use crate::runtime2::*; use super::{CompCtx, CompPDL}; +use super::component_ip::*; pub enum CompScheduling { Immediate, @@ -39,7 +40,12 @@ pub(crate) fn create_component( if definition.source.is_builtin() { // Builtin component - todo!("implement") + let component = match definition.source { + ProcedureSource::CompRandomU32 => Box::new(ComponentRandomU32::new(arguments)), + _ => unreachable!(), + }; + + return component; } else { // User-defined component let prompt = Prompt::new( @@ -49,4 +55,15 @@ pub(crate) fn create_component( let component = CompPDL::new(prompt, num_ports); return Box::new(component); } -} \ No newline at end of file +} + + +#[inline] +pub(crate) fn port_id_from_eval(port_id: EvalPortId) -> PortId { + return PortId(port_id.id); +} + +#[inline] +pub(crate) fn port_id_to_eval(port_id: PortId) -> EvalPortId { + return EvalPortId{ id: port_id.0 }; +}