import java.util.*; import Jakarta.util.*; import java.io.*; /*********************** AST_IMPORT CODE *************************** * @layer<mixinbase> */ public class AST_Imports { private boolean findImport( ImpQual x ) { AstCursor c = new AstCursor(); AST_Imports b = ( AST_Imports ) this; String xName = x.GetName(); for ( c.FirstElement( b ); c.MoreElement(); c.NextElement() ) { if ( ( ( ImportDeclaration ) ( c.node ) ).GetName().equals( xName ) ) return true; } return false; } // concatenate sequence of base import declarations with // extension import declarations without replication public void compose( AstNode etree, JTSParseTree base, JTSParseTree ext ) { AST_Imports b = ( AST_Imports ) this; AST_Imports x = ( AST_Imports ) etree; // Step 1: foreach element e of extension imports list // see if e is already present on base imports list. // if so, delete it from the extension list AstCursor c = new AstCursor(); for ( c.FirstElement( x ); c.MoreElement(); c.NextElement() ) { if ( findImport( ( ImpQual ) c.node ) ) c.Delete(); } // Step 2: now add the truncated imports list to the base // list b.add( x ); } }