/// <summary> /// Adds a new edge to the graph and assigns it to the given variable. /// </summary> /// <param name="edgeType">The edge type for the new edge.</param> /// <param name="source">The source of the edge.</param> /// <param name="target">The target of the edge.</param> /// <param name="varName">The name of the variable.</param> /// <returns>The newly created edge.</returns> public LGSPEdge AddEdge(EdgeType edgeType, LGSPNode source, LGSPNode target, String varName) { LGSPEdge edge = (LGSPEdge)edgeType.CreateEdge(source, target); graph.AddEdgeWithoutEvents(edge, edgeType.TypeID); SetVariableValue(varName, edge); graph.EdgeAdded(edge); return(edge); }
public LGSPEdge AddEdge(EdgeType edgeType, LGSPNode source, LGSPNode target, String elemName) { if (elemName != null && NameToElem.ContainsKey(elemName)) { throw new ArgumentException("The name \"" + elemName + "\" is already used!"); } if (elemName == null) { elemName = GetNextName(); } LGSPEdge edge = (LGSPEdge)edgeType.CreateEdge(source, target); AddEdgeWithoutEvents(edge, edgeType.TypeID); NameToElem[elemName] = edge; ElemToName[edge] = elemName; EdgeAdded(edge); return(edge); }
/// <summary> /// Adds a new edge to the graph. /// </summary> /// <param name="edgeType">The edge type for the new edge.</param> /// <param name="source">The source of the edge.</param> /// <param name="target">The target of the edge.</param> /// <returns>The newly created edge.</returns> public virtual LGSPEdge AddEdge(EdgeType edgeType, LGSPNode source, LGSPNode target) { // LGSPEdge edge = new LGSPEdge(edgeType, source, target); LGSPEdge edge = (LGSPEdge) edgeType.CreateEdge(source, target); AddEdgeWithoutEvents(edge, edgeType.TypeID); EdgeAdded(edge); return edge; }
/// <summary> /// Adds a new edge to the graph and assigns it to the given variable. /// </summary> /// <param name="edgeType">The edge type for the new edge.</param> /// <param name="source">The source of the edge.</param> /// <param name="target">The target of the edge.</param> /// <param name="varName">The name of the variable.</param> /// <returns>The newly created edge.</returns> public LGSPEdge AddEdge(EdgeType edgeType, LGSPNode source, LGSPNode target, String varName) { // LGSPEdge edge = new LGSPEdge(edgeType, source, target); LGSPEdge edge = (LGSPEdge)edgeType.CreateEdge(source, target); graph.AddEdgeWithoutEvents(edge, edgeType.TypeID); SetVariableValue(varName, edge); graph.EdgeAdded(edge); return edge; }
public LGSPEdge AddEdge(EdgeType edgeType, LGSPNode source, LGSPNode target, String elemName) { if(elemName != null && NameToElem.ContainsKey(elemName)) throw new ArgumentException("The name \"" + elemName + "\" is already used!"); if(elemName == null) elemName = GetNextName(); // LGSPEdge edge = new LGSPEdge(edgeType, source, target); LGSPEdge edge = (LGSPEdge)edgeType.CreateEdge(source, target); AddEdgeWithoutEvents(edge, edgeType.TypeID); NameToElem[elemName] = edge; ElemToName[edge] = elemName; EdgeAdded(edge); return edge; }
private IEdge ParseEdgeDefinition(out string edgeName, out EdgeType edgeType) { // colon Text lparen dollar equal Text Attributes rparen Match(TokenKind.COLON); string typeName = ParseTypeText(); edgeType = graph.Model.EdgeModel.GetType(typeName); if(edgeType == null) throw new Exception("Unknown edge type: \"" + typeName + "\""); if(edgeType.IsAbstract) throw new Exception("Abstract edge type \"" + typeName + "\" may not be instantiated!"); Match(TokenKind.LPARENTHESIS); Match(TokenKind.DOLLAR); Match(TokenKind.EQUAL); edgeName = ParseText(); IEdge edge = edgeType.CreateEdge(); while(LookaheadToken() == TokenKind.COMMA) { Match(TokenKind.COMMA); string attribName = ParseText(); Match(TokenKind.EQUAL); AttributeType attrType = edge.Type.GetAttributeType(attribName); ParseAttributeValue(edge, attrType); } Match(TokenKind.RPARENTHESIS); return edge; }