Quintiq file version 2.0
|
#parent: #root
|
Method AnalyzeGraph
|
{
|
Description: 'Analyze the component graph to find out at which points in the graph an `Algorithm` should be created and at which points it should be removed.'
|
TextBody:
|
[*
|
subscribed_components := selectset( this, ChannelReader.Component, c, true )
|
.Union( selectset( this, ChannelWriter.Component, w, true ) );
|
|
channel_components := LibOpt_Utility::GetDownstreamComponents( subscribed_components );
|
|
traverse( channel_components, Elements, component )
|
{
|
traverse( component, Parents, link )
|
{
|
origin := link.GetOrigin();
|
if( isnull( origin ) or channel_components.Find( origin ) < 0 )
|
{
|
LibOpt_ChannelNotify::Create( this, link, true );
|
}
|
else if( origin.istype( LibOpt_Iterator ) )
|
{
|
LibOpt_ChannelNotify::Create( this, link, false );
|
}
|
}
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|