import java.util.Hashtable;
import java.util.Vector;
import Jakarta.util.FixDosOutputStream;
import java.io.*;
public class SmClassDecl {
public void reduce2java( AstProperties props ) {
// must have a RootClause if the state machine does not extend
// another state machine
RootDecl rd = (RootDecl) arg[0].arg[0];
if ( kernelConstants.globals().sm4vars.Sm.superSm_name == null && rd == null )
AstNode.fatalError( tok[0], Utility.SourceName()+
"Delivery_parameters clause is missing from "+
kernelConstants.globals().sm4vars.Sm.name +" specification." );
// if there is a superSm, there must be no NoTransitionClause
if ( kernelConstants.globals().sm4vars.Sm.superSm_name != null && rd !=null
&& rd.arg[1].arg[0] != null )
AstNode.fatalError( tok[0], Utility.SourceName()+
"NoTransitionClause should not be present in "+
kernelConstants.globals().sm4vars.Sm.name +" specification." );
kernelConstants.globals().sm4vars.Sm.body_ast = ( AST_FieldDecl ) arg[4].arg[0];
// reduce only selected subtrees at this time - don't reduce
// arg[4] (AST_FieldDecl) now - do it later in UmodSmDecl.reduce2java
// reduce all state machine declarations first.
arg[0].reduce2java( props );
arg[1].reduce2java( props );
arg[2].reduce2java( props );
arg[3].reduce2java( props );
}
}