CFGLib.Parsers.Graphs.Graph.AddEdge C# (CSharp) Méthode

AddEdge() private méthode

private AddEdge ( INode newNode1, INode newNode2, Production label = null ) : bool
newNode1 INode
newNode2 INode
label Production
Résultat bool
		internal bool AddEdge(INode newNode1, INode newNode2, Production label = null) {
			// var node1 = new NodeNode(forestInternal);
			// var node2 = new NodeNode(option);
			var newEdge = new Edge(newNode1, newNode2, label);
			INode node1;
			if (!_nodeLookup.TryGetValue(newNode1.Name, out node1)) {
				node1 = newNode1;
				_nodeLookup[newNode1.Name] = newNode1;
			}
			Nodes.Add(node1);
			INode node2;
			if (!_nodeLookup.TryGetValue(newNode2.Name, out node2)) {
				node2 = newNode2;
				_nodeLookup[newNode2.Name] = newNode2;
			}
			Nodes.Add(node2);
			return Edges.Add(newEdge);
		}
		//internal bool AddEdge(ForestOption thing1, ChildNode node2) {

Usage Example

Exemple #1
0
		internal override void GetGraphHelper(Graph g, SppfNodeNode myNode, HashSet<InteriorNode> visited) {
			if (visited.Contains(this)) {
				return;
			}
			visited.Add(this);

			// foreach (var family in Families) {
			for (int i = 0; i < Families.Count; i++) {
				var family = Families[i];
				Production singletonProduction = null;
				INode prevNode;
				if (Families.Count == 1) {
					prevNode = myNode;
					singletonProduction = Families[0].Production;
				} else {
					prevNode = new FamilyNode(family, myNode.Node.Id + "-" + i, myNode.Rank + 1);
					// g.AddEdge(myNode, prevNode, family.Production);
					g.AddEdge(myNode, prevNode);
				}
				foreach (var child in family.Members) {
					var childNode = new SppfNodeNode(child, prevNode.Rank + 1);
					// var childNode = g.GetNode(child, prevNode.Rank + 1);
					// g.AddEdge(prevNode, childNode, singletonProduction);
					g.AddEdge(prevNode, childNode);
					child.GetGraphHelper(g, childNode, visited);
				}
			}
		}