public override IGraphElement[] ModifyNoReuse(LGSPGraph graph, LGSPMatch match) { LGSPNode node_p2 = match.nodes[ (int) NodeNums.@p2 - 1 ]; LGSPNode node_p1 = match.nodes[ (int) NodeNums.@p1 - 1 ]; LGSPEdge edge__edge0 = match.edges[ (int) EdgeNums.@_edge0 - 1 ]; LGSPNode node__node0 = graph.AddNode(NodeType_Process.typeVar); LGSPEdge edge__edge1 = graph.AddEdge(EdgeType_connection.typeVar, node_p1, node__node0); LGSPEdge edge__edge2 = graph.AddEdge(EdgeType_connection.typeVar, node__node0, node_p2); graph.Remove(edge__edge0); return EmptyReturnElements; }
public override IGraphElement[] ModifyNoReuse(LGSPGraph graph, LGSPMatch match) { LGSPNode node_p2 = match.nodes[(int)NodeNums.@p2 - 1]; LGSPNode node_p1 = match.nodes[(int)NodeNums.@p1 - 1]; LGSPEdge edge__edge0 = match.edges[(int)EdgeNums.@_edge0 - 1]; LGSPNode node__node0 = graph.AddNode(NodeType_Process.typeVar); LGSPEdge edge__edge1 = graph.AddEdge(EdgeType_connection.typeVar, node_p1, node__node0); LGSPEdge edge__edge2 = graph.AddEdge(EdgeType_connection.typeVar, node__node0, node_p2); graph.Remove(edge__edge0); return(EmptyReturnElements); }
public LGSPMatches myMatch(LGSPGraph graph, int maxMatches, IGraphElement[] parameters) { matches.matches.Clear(); // Lookup(edge__edge0:connection) foreach (EdgeType edge_type_edge__edge0 in EdgeType_connection.typeVar.SubOrSameTypes) { for (LGSPEdge edge_head_edge__edge0 = graph.edgesByTypeHeads[edge_type_edge__edge0.TypeID], edge_cur_edge__edge0 = edge_head_edge__edge0.typeNext; edge_cur_edge__edge0 != edge_head_edge__edge0; edge_cur_edge__edge0 = edge_cur_edge__edge0.typeNext) { // ImplicitTarget(edge__edge0 -> node_p2:Process) LGSPNode node_cur_node_p2 = edge_cur_edge__edge0.target; if (!NodeType_Process.isMyType[node_cur_node_p2.type.TypeID]) { goto contunmap_edge_cur_edge__edge0_2; } node_cur_node_p2.mappedTo = 1; // ImplicitSource(edge__edge0 -> node_p1:Process) LGSPNode node_cur_node_p1 = edge_cur_edge__edge0.source; if (!NodeType_Process.isMyType[node_cur_node_p1.type.TypeID]) { goto contunmap_node_cur_node_p2_4; } if (node_cur_node_p1.mappedTo != 0) { goto cont_node_cur_node_p1_7; } LGSPMatch match = matchesList.GetNewMatch(); match.nodes[0] = node_cur_node_p2; match.nodes[1] = node_cur_node_p1; match.edges[0] = edge_cur_edge__edge0; matchesList.CommitMatch(); if (maxMatches > 0 && matchesList.Count >= maxMatches) { node_cur_node_p2.mappedTo = 0; graph.MoveHeadAfter(edge_cur_edge__edge0); return(matches); } cont_node_cur_node_p1_7 :; contunmap_node_cur_node_p2_4 :; node_cur_node_p2.mappedTo = 0; contunmap_edge_cur_edge__edge0_2 :; // Tail of Lookup(edge_cur_edge__edge0) } } return(matches); }