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