Quintiq file version 2.0
|
#parent: #root
|
Method OnDelete
|
{
|
Description: 'Do some post-processing upon deletion of this `LibOpt_ScopeElement`.'
|
TextBody:
|
[*
|
details := this.Details();
|
identifier := this.Identifier();
|
|
replacement := null( LibOpt_ScopeElementDeleted );
|
|
// Use the scope element with the same Identifier and Details
|
traverse( this, ScopeElementOnScope, seos )
|
{
|
run := seos.Scope().Run();
|
// If DebugScope is enabled, create a ScopeElementDeleted
|
if( run.DebugScope() )
|
{
|
optimization := run.Optimization();
|
if( isnull( replacement ) )
|
{
|
replacement := LibOpt_ScopeElementDeleted::Create( optimization, this.InternalIdentifier(), details, identifier, false );
|
}
|
replacement.ScopeElementOnScope( relmove, seos );
|
|
// Link the `LibOpt_SuboptimizerScopeElement` of this `LibOpt_ScopeElement` to its replacement.
|
traverse( this, SuboptimizerScopeElement, suboptimizerscopeelement )
|
{
|
suboptimizerscopeelement.ScopeElement( relset, replacement );
|
}
|
|
seos.ScopeAsActiveScopeElements( relflush );
|
seos.ScopeAsDeletedScopeElements( relset, seos.Scope() );
|
}
|
// Otherwise clean up
|
else
|
{
|
seos.Delete();
|
}
|
}
|
*]
|
}
|