コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: lgspGraph.cs プロジェクト: jblomer/GrGen.NET
        /// <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;
        }
コード例 #4
0
 /// <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;
 }
コード例 #5
0
ファイル: lgspNamedGraph.cs プロジェクト: jblomer/GrGen.NET
        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;
        }
コード例 #6
0
ファイル: GrsImport.cs プロジェクト: jblomer/GrGen.NET
        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;
        }