public virtual Graph.Node AddEdge(Graph.Node to, string info) { Graph.Edge e = new Graph.Edge(this, this, to, info); this.outs.AddItem(e); to.ins.AddItem(e); return(this); }
public Edge(Graph _enclosing, Graph.Node from, Graph.Node to, string info) { this._enclosing = _enclosing; this.from = from; this.to = to; this.label = info; }
/// <summary>Generate a graph represents the state graph of this StateMachine</summary> /// <param name="name">graph name</param> /// <returns>Graph object generated</returns> public Graph GenerateStateGraph(string name) { MaybeMakeStateMachineTable(); Graph g = new Graph(name); foreach (STATE startState in stateMachineTable.Keys) { IDictionary <EVENTTYPE, StateMachineFactory.Transition <OPERAND, STATE, EVENTTYPE, EVENT> > transitions = stateMachineTable[startState]; foreach (KeyValuePair <EVENTTYPE, StateMachineFactory.Transition <OPERAND, STATE, EVENTTYPE , EVENT> > entry in transitions) { StateMachineFactory.Transition <OPERAND, STATE, EVENTTYPE, EVENT> transition = entry .Value; if (transition is StateMachineFactory.SingleInternalArc) { StateMachineFactory.SingleInternalArc sa = (StateMachineFactory.SingleInternalArc )transition; Graph.Node fromNode = g.GetNode(startState.ToString()); Graph.Node toNode = g.GetNode(sa.postState.ToString()); fromNode.AddEdge(toNode, entry.Key.ToString()); } else { if (transition is StateMachineFactory.MultipleInternalArc) { StateMachineFactory.MultipleInternalArc ma = (StateMachineFactory.MultipleInternalArc )transition; IEnumerator iter = ma.validPostStates.GetEnumerator(); while (iter.HasNext()) { Graph.Node fromNode = g.GetNode(startState.ToString()); Graph.Node toNode = g.GetNode(iter.Next().ToString()); fromNode.AddEdge(toNode, entry.Key.ToString()); } } } } } return(g); }
private Graph.Node NewNode(string id) { Graph.Node ret = new Graph.Node(this, id); nodes.AddItem(ret); return(ret); }