import java.util.*;
import Jakarta.util.FixDosOutputStream;
import java.io.*;
/************ MIXININT layer ****************
* @layer<mixinInt>
*/
public class UmInterDecl {
// this method links extension declaration as a "extends" to
// the base declaration (whose typedeclaration name) is "name"
public void extensionOf( String name ) {
// add "name" to the extension list of this interface
// Step 1: create an AST_TypeNameList
AST_TypeNameList tl = AST_TypeNameList.MakeAST( " " + name + " " );
// Step 2: now either create an extension and plug it in,
if ( arg[1].arg[0] == null ) {
AstOptNode aon = ( AstOptNode ) arg[1];
aon.setParms( new IntExtClauseC().setParms( new AstToken().setParms( " ","extends", 0 ), tl ) );
}
// Step 3: or simply concatenate tl with the existing list
else {
AST_TypeNameList etnl =
( AST_TypeNameList ) arg[1].arg[0].arg[0];
etnl.add( tl, "," );
}
}
// this mangles the interface name and returns it
public String getAndMangleName() {
// get the name of the interface, mangle it, and return the
// mangled name
String name = mangleName( getName() );
setName( name );
return name;
}
public String getName() {
return arg[0].tok[0].tokenName();
}
private void setName( String name ) {
( ( AstToken ) arg[0].tok[0] ).setName( name );
}
}