private void ConnectRootNode(TraceStepExpr tsExpr, BehaviorGraphNode parentNode) { Debug.Assert(parentNode != null); var newNodeProp1 = new InnerLoopBehaviorState(tsExpr.TraceStep.Source); var newNode1 = new BehaviorGraphNode(newNodeProp1); var newNodeProp2 = new InnerLoopBehaviorState(tsExpr.TraceStep.Target); var newNode2 = new BehaviorGraphNode(newNodeProp2); InnerLoopEdgeProperty newEdgeProp; if (tsExpr.TraceStep.WrongStep) { newEdgeProp = new InnerLoopEdgeProperty(); } else { newEdgeProp = new InnerLoopEdgeProperty((string)tsExpr.TraceStep.Rule, (string)tsExpr.TraceStep.AppliedRule); } var newEdge = new BehaviorGraphEdge(newNode1, newNode2, newEdgeProp); newNode1.OutEdges.Add(newEdge); newNode2.InEdges.Add(newEdge); parentNode.SubGraph.Nodes.Add(newNode1); parentNode.SubGraph.Nodes.Add(newNode2); }
private void ConnectTwoNodes(TraceStepExpr tsExpr, BehaviorGraphNode gn1, BehaviorGraphNode gn2) { bool findTarget = false; foreach (var edge in gn1.OutEdges) { if (edge.Target == null) { continue; } if (edge.Target.Equals(gn2)) { findTarget = true; } } if (!findTarget) { InnerLoopEdgeProperty newEdgeProp1; if (tsExpr.TraceStep.WrongStep) { newEdgeProp1 = new InnerLoopEdgeProperty(); } else { newEdgeProp1 = new InnerLoopEdgeProperty((string)tsExpr.TraceStep.Rule, (string)tsExpr.TraceStep.AppliedRule); } var newEdge1 = new BehaviorGraphEdge(gn1, gn2, newEdgeProp1); gn1.OutEdges.Add(newEdge1); gn2.InEdges.Add(newEdge1); } }
private void ConnectNextNode(TraceStepExpr tsExpr, BehaviorGraphNode gn2) { var newNodeProp = new InnerLoopBehaviorState(tsExpr.TraceStep.Source); var newNode = new BehaviorGraphNode(newNodeProp); InnerLoopEdgeProperty newEdgeProp; if (tsExpr.TraceStep.WrongStep) { newEdgeProp = new InnerLoopEdgeProperty(); } else { newEdgeProp = new InnerLoopEdgeProperty((string)tsExpr.TraceStep.Rule, (string)tsExpr.TraceStep.AppliedRule); } var newEdge = new BehaviorGraphEdge(newNode, gn2, newEdgeProp); /*foreach (var edge in gn2.InEdges) * { * var prevNode = edge.Source; * prevNode.OutEdges.Add(newEdge); * }*/ gn2.InEdges.Add(newEdge); newNode.OutEdges.Add(newEdge); BehaviorGraphNode parentNode = SearchOuterLoopNode(gn2); parentNode.SubGraph.Nodes.Add(newNode); }
private void InitSubGraph() { var outerState = _state as OuterLoopBehaviorState; if (outerState == null) return; var steps = outerState.Traces; if (steps == null || steps.Count == 0) return; _subGraph = new BehaviorGraph(); var ts1 = steps[0]; var startState = new BehaviorGraphNode(new InnerLoopBehaviorState(ts1.Source)); _subGraph.Nodes.Add(startState); BehaviorGraphNode source = startState; for(int i = 0; i < outerState.Traces.Count; i++) { var ts = outerState.Traces[i]; var nodeState = new InnerLoopBehaviorState(ts.Target); var target = new BehaviorGraphNode(nodeState); _subGraph.Nodes.Add(target); var innerEdgeProp = new InnerLoopEdgeProperty((string)ts.Rule, (string)ts.AppliedRule); var newEdge = new BehaviorGraphEdge(source, target, innerEdgeProp); source.OutEdges.Add(newEdge); target.InEdges.Add(newEdge); source = target; } }
private void InitSubGraph() { var outerState = _state as OuterLoopBehaviorState; if (outerState == null) { return; } var steps = outerState.Traces; if (steps == null || steps.Count == 0) { return; } _subGraph = new BehaviorGraph(); var ts1 = steps[0]; var startState = new BehaviorGraphNode(new InnerLoopBehaviorState(ts1.Source)); _subGraph.Nodes.Add(startState); BehaviorGraphNode source = startState; for (int i = 0; i < outerState.Traces.Count; i++) { var ts = outerState.Traces[i]; var nodeState = new InnerLoopBehaviorState(ts.Target); var target = new BehaviorGraphNode(nodeState); _subGraph.Nodes.Add(target); var innerEdgeProp = new InnerLoopEdgeProperty((string)ts.Rule, (string)ts.AppliedRule); var newEdge = new BehaviorGraphEdge(source, target, innerEdgeProp); source.OutEdges.Add(newEdge); target.InEdges.Add(newEdge); source = target; } }
private void ConnectNextNode(TraceStepExpr tsExpr, BehaviorGraphNode gn2) { var newNodeProp = new InnerLoopBehaviorState(tsExpr.TraceStep.Source); var newNode = new BehaviorGraphNode(newNodeProp); InnerLoopEdgeProperty newEdgeProp; if (tsExpr.TraceStep.WrongStep) { newEdgeProp = new InnerLoopEdgeProperty(); } else { newEdgeProp = new InnerLoopEdgeProperty((string)tsExpr.TraceStep.Rule, (string)tsExpr.TraceStep.AppliedRule); } var newEdge = new BehaviorGraphEdge(newNode, gn2, newEdgeProp); /*foreach (var edge in gn2.InEdges) { var prevNode = edge.Source; prevNode.OutEdges.Add(newEdge); }*/ gn2.InEdges.Add(newEdge); newNode.OutEdges.Add(newEdge); BehaviorGraphNode parentNode = SearchOuterLoopNode(gn2); parentNode.SubGraph.Nodes.Add(newNode); }
private void ConnectTwoNodes(TraceStepExpr tsExpr, BehaviorGraphNode gn1, BehaviorGraphNode gn2) { bool findTarget = false; foreach (var edge in gn1.OutEdges) { if (edge.Target == null) continue; if (edge.Target.Equals(gn2)) { findTarget = true; } } if (!findTarget) { InnerLoopEdgeProperty newEdgeProp1; if (tsExpr.TraceStep.WrongStep) { newEdgeProp1 = new InnerLoopEdgeProperty(); } else { newEdgeProp1 = new InnerLoopEdgeProperty((string)tsExpr.TraceStep.Rule, (string)tsExpr.TraceStep.AppliedRule); } var newEdge1 = new BehaviorGraphEdge(gn1, gn2, newEdgeProp1); gn1.OutEdges.Add(newEdge1); gn2.InEdges.Add(newEdge1); } }