Esempio n. 1
0
		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;
		}
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }