package org.scribble.ast.global;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.AstFactoryImpl;
import org.scribble.ast.Constants;
import org.scribble.ast.NonRoleParamDeclList;
import org.scribble.ast.ProtocolHeader;
import org.scribble.ast.RoleDeclList;
import org.scribble.ast.ScribNodeBase;
import org.scribble.ast.name.qualified.GProtocolNameNode;
import org.scribble.ast.name.qualified.ProtocolNameNode;
import org.scribble.del.ScribDel;
import org.scribble.sesstype.kind.Global;
import org.scribble.sesstype.name.GProtocolName;
public class GProtocolHeader extends ProtocolHeader<Global> implements GNode
{
public GProtocolHeader(CommonTree source, GProtocolNameNode name, RoleDeclList roledecls, NonRoleParamDeclList paramdecls)
{
super(source, name, roledecls, paramdecls);
}
@Override
protected ScribNodeBase copy()
{
return new GProtocolHeader(this.source, getNameNode(), this.roledecls, this.paramdecls);
}
@Override
public GProtocolHeader clone()
{
GProtocolNameNode name = getNameNode().clone();
RoleDeclList roledecls = this.roledecls.clone();
NonRoleParamDeclList paramdecls = this.paramdecls.clone();
return AstFactoryImpl.FACTORY.GProtocolHeader(this.source, name, roledecls, paramdecls);
}
@Override
public GProtocolHeader reconstruct(ProtocolNameNode<Global> name, RoleDeclList rdl, NonRoleParamDeclList pdl)
{
ScribDel del = del();
GProtocolHeader gph = new GProtocolHeader(this.source, (GProtocolNameNode) name, rdl, pdl);
gph = (GProtocolHeader) gph.del(del);
return gph;
}
@Override
public GProtocolNameNode getNameNode()
{
return (GProtocolNameNode) this.name;
}
@Override
public GProtocolName getDeclName()
{
return (GProtocolName) super.getDeclName();
}
@Override
public String toString()
{
return Constants.GLOBAL_KW + " " + super.toString();
}
// FIXME: shouldn't be needed, but here due to Eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=436350
@Override
public Global getKind()
{
return GNode.super.getKind();
}
}