import java.util.*;
import Jakarta.util.FixDosOutputStream;
import java.io.*;
public class UmodSmDecl {
public void execute( int stage ) {
if ( stage!=0 ) {
super.execute( stage );
return;
}
NamedVector nv;
MMOutput m = Main.mmresult;
m.setType( MMGlobals.StateMachine );
m.setName( ( ( QName ) arg[0] ).GetName() );
m.setlines( -1, -1 ); // entire file
m.setModifiers( (AstOptNode) up.arg[0] );
// do the SmExtendsClause first
if ( arg[1].arg[0] == null )
m.setDefn( MMGlobals.Defines );
else {
m.setDefn( MMGlobals.Extends );
String name = ( arg[1].arg[0] instanceof SmExtends ) ?
MMGlobals.Smachines :
MMGlobals.Classes;
nv = new NamedVector( name );
arg[1].arg[0].harvestAST_QualifiedNames( nv );
m.union( nv );
// do the same for harvesting the super"class" name
nv = new NamedVector( "super" );
arg[1].arg[0].harvestAST_QualifiedNames( nv );
m.union( nv );
}
// now do the implements claus
if ( arg[2].arg[0] != null ) {
nv = new NamedVector( MMGlobals.Interfaces );
arg[2].arg[0].harvestAST_QualifiedNames( nv );
m.union( nv );
}
// now harvest the contents of the state machine
arg[3].execute( stage );
}
}