import Jakarta.util.FixDosOutputStream; import Jakarta.util.Util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.HashSet; //-------------------- COMMON MODIFIER LIST UTILITIES ------------------ /** production: AST_Modifiers : ( Modifier )+ ; Modifier<br> : ABSTRACT::ModAbstract<br> | FINAL::ModFinal<br> | PUBLIC::ModPublic<br> | PROTECTED::ModProtected<br> ...<br> ;<br> * * @layer<Java> */ public class AST_Modifiers { // search modifier list of base for modifier x. // return true if present public boolean findModifier( Modifier x ) { return findModifier( x.GetName() ); } public boolean findModifier( String mod ) { AstCursor c = new AstCursor(); AST_Modifiers b = ( AST_Modifiers ) this; for ( c.FirstElement( b ); c.MoreElement(); c.NextElement() ) { if ( ( ( Modifier ) ( c.node ) ).GetName().equals( mod ) ) return true; } return false; } public void remModifier( Modifier x ) { remModifier( x.GetName() ); } public void remModifier( String xName ) { AstCursor c = new AstCursor(); AST_Modifiers b = ( AST_Modifiers ) this; for ( c.FirstElement( b ); c.MoreElement(); c.NextElement() ) { if ( ( ( Modifier ) ( c.node ) ).GetName().equals( xName ) ) c.Delete(); } } // to create a modifier for Public, use: // new $TEqn.ModPublic().setParms( // new $TEqn.AstToken().setParms(" ","public", 0)) // check with the java grammar to see the correct naming public void addModifier( Modifier m ) { // Step 1: if modifier already is present, do nothing if ( findModifier( m ) ) return; // Step 2: create a list of length one with m on it AST_Modifiers l = new AST_Modifiers(); l.add( new AST_ModifiersElem().setParms( m ) ); // Step 3: add the modifier to the list this.add( l ); } }