import java.util.*;
import Jakarta.util.FixDosOutputStream;
import java.io.*;
public class TransitionDecl {
// add a transition to the collective
public static MMOutput addTrans( String name, boolean inFile,
AstNode me ) {
String defines = inFile ? MMGlobals.Defines : MMGlobals.Refines;
String noInfo = MMGlobals.NoInfo;
String method = MMGlobals.Method;
MMOutput m = Main.mmresult;
MMOutput o = new MMOutput().init( name,
MMGlobals.Transit,
defines );
o.setlines( me.getFirstLineNum(), me.getLastLineNum() );
o.nested.putUnique( "Action",
new MMOutput().init( "Action", method, noInfo ) );
o.nested.putUnique( "Condition",
new MMOutput().init( "Condition", method, noInfo ) );
m.nested.putUnique( name + ":", o );
return o;
}
public void execute( int stage ) {
if ( stage!=0 ) {
super.execute( stage );
return;
}
NamedVector n;
// Step 1: harvest information
String name = ( ( QName ) arg[0] ).GetName();
String start = ( ( StartName ) arg[1] ).GetName();
String end = ( ( QName ) arg[2] ).GetName();
// Step 2: define MMOutput for it and add it to main.
MMOutput o = addTrans( name, true, this );
// Step 3: now define the signatures
n = new NamedVector( MMGlobals.StartState );
n.add( start );
o.union( n );
n = new NamedVector( MMGlobals.EndState );
n.add( end );
o.union( n );
}
}