package org.scribble.ast.local; import java.util.List; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.Module; import org.scribble.ast.ProtocolDecl; import org.scribble.ast.ProtocolDef; import org.scribble.ast.ProtocolHeader; import org.scribble.ast.ScribNodeBase; import org.scribble.del.ScribDel; import org.scribble.sesstype.kind.Local; import org.scribble.sesstype.name.LProtocolName; import org.scribble.sesstype.name.ModuleName; import org.scribble.sesstype.name.Role; public class LProtocolDecl extends ProtocolDecl<Local> implements LNode { public LProtocolDecl(CommonTree source, List<Modifiers> modifiers, LProtocolHeader header, LProtocolDef def) { super(source, modifiers, header, def); } @Override protected ScribNodeBase copy() { return new LProtocolDecl(this.source, this.modifiers, getHeader(), getDef()); } @Override public LProtocolDecl clone() { LProtocolHeader header = getHeader().clone(); LProtocolDef def = getDef().clone(); return AstFactoryImpl.FACTORY.LProtocolDecl(this.source, this.modifiers, header, def); } @Override public LProtocolDecl reconstruct(ProtocolHeader<Local> header, ProtocolDef<Local> def) { ScribDel del = del(); LProtocolDecl lpd = new LProtocolDecl(this.source, this.modifiers, (LProtocolHeader) header, (LProtocolDef) def); lpd = (LProtocolDecl) lpd.del(del); return lpd; } @Override public LProtocolHeader getHeader() { return (LProtocolHeader) this.header; } @Override public LProtocolDef getDef() { return (LProtocolDef) this.def; } @Override public LProtocolName getFullMemberName(Module mod) { ModuleName fullmodname = mod.getFullModuleName(); return new LProtocolName(fullmodname, this.header.getDeclName()); } public Role getSelfRole() { return getHeader().getSelfRole(); } // FIXME: shouldn't be needed, but here due to Eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=436350 @Override public boolean isLocal() { return LNode.super.isLocal(); } // FIXME: shouldn't be needed, but here due to Eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=436350 @Override public Local getKind() { return LNode.super.getKind(); } }