package org.scribble.del.local; import org.scribble.ast.ScribNode; import org.scribble.ast.context.local.LProtocolDeclContext; import org.scribble.ast.local.LProtocolDecl; import org.scribble.del.ProtocolDeclDel; import org.scribble.main.ScribbleException; import org.scribble.sesstype.kind.Local; import org.scribble.sesstype.name.LProtocolName; import org.scribble.sesstype.name.ProtocolName; import org.scribble.sesstype.name.Role; import org.scribble.visit.context.EGraphBuilder; import org.scribble.visit.context.ProtocolDeclContextBuilder; public class LProtocolDeclDel extends ProtocolDeclDel<Local> { public LProtocolDeclDel() { } @Override protected LProtocolDeclDel copy() { return new LProtocolDeclDel(); } @Override protected void addSelfDependency(ProtocolDeclContextBuilder builder, ProtocolName<?> proto, Role role) { builder.addLocalProtocolDependency(role, (LProtocolName) proto, role); } @Override public void enterProtocolDeclContextBuilding(ScribNode parent, ScribNode child, ProtocolDeclContextBuilder builder) throws ScribbleException { super.enterProtocolDeclContextBuilding(parent, child, builder); } @Override public LProtocolDecl leaveProtocolDeclContextBuilding(ScribNode parent, ScribNode child, ProtocolDeclContextBuilder builder, ScribNode visited) throws ScribbleException { LProtocolDecl lpd = (LProtocolDecl) visited; LProtocolDeclContext lcontext = new LProtocolDeclContext(builder.getLocalProtocolDependencyMap()); LProtocolDeclDel del = (LProtocolDeclDel) setProtocolDeclContext(lcontext); return (LProtocolDecl) lpd.del(del); } @Override public void enterEGraphBuilding(ScribNode parent, ScribNode child, EGraphBuilder graph) { graph.util.reset(); } @Override public ScribNode leaveEGraphBuilding(ScribNode parent, ScribNode child, EGraphBuilder graph, ScribNode visited) { /*LProtocolDecl lpd = (LProtocolDecl) visited; // Refactored into JobContext JobContext jc = graph.getJobContext(); // FIXME: should just bypass builder visit if already built LProtocolName lpn = lpd.getFullMemberName((Module) parent); if (jc.getEndpointGraph(lpn) == null) // FIXME: what is the routine to obtain gpn from lpn? { //EndpointGraph fsm = new EndpointGraph(graph.builder.getEntry(), graph.builder.getExit()); EndpointGraph graph = graph.builder.finalise(); jc.addEndpointGraph(lpn, graph); }*/ return visited; } @Override public LProtocolDeclContext getProtocolDeclContext() { return (LProtocolDeclContext) super.getProtocolDeclContext(); } }