package org.scribble.ast.global;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.AstFactoryImpl;
import org.scribble.ast.ProtocolBlock;
import org.scribble.ast.ProtocolDef;
import org.scribble.ast.local.LProtocolBlock;
import org.scribble.ast.local.LProtocolDef;
import org.scribble.del.ScribDel;
import org.scribble.sesstype.kind.Global;
import org.scribble.sesstype.name.Role;
public class GProtocolDef extends ProtocolDef<Global> implements GNode
{
public GProtocolDef(CommonTree source, GProtocolBlock block)
{
super(source, block);
}
@Override
protected GProtocolDef copy()
{
return new GProtocolDef(this.source, getBlock());
}
public LProtocolDef project(Role self, LProtocolBlock block)
{
LProtocolDef projection = AstFactoryImpl.FACTORY.LProtocolDef(this.source, block);
return projection;
}
@Override
public GProtocolDef clone()
{
GProtocolBlock block = getBlock().clone();
return AstFactoryImpl.FACTORY.GProtocolDef(this.source, block);
}
@Override
public GProtocolDef reconstruct(ProtocolBlock<Global> block)
{
ScribDel del = del();
GProtocolDef gpd = new GProtocolDef(this.source, (GProtocolBlock) block);
gpd = (GProtocolDef) gpd.del(del);
return gpd;
}
@Override
public GProtocolBlock getBlock()
{
return (GProtocolBlock) this.block;
}
// 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();
}
}