public override LGSPEdge Retype(LGSPEdge edge, EdgeType newEdgeType) { String name; if (ElemToName.TryGetValue(edge, out name)) // give new edge the name of the old edge in case it was named { LGSPEdge newEdge = (LGSPEdge)newEdgeType.CreateEdgeWithCopyCommons(edge.lgspSource, edge.lgspTarget, edge); ElemToName[newEdge] = name; RetypingEdge(edge, newEdge); ReplaceEdge(edge, newEdge); ElemToName.Remove(edge); NameToElem[name] = newEdge; return(newEdge); } else { return(base.Retype(edge, newEdgeType)); } }
/// <summary> /// Retypes an edge by replacing it by a new edge of the given type. /// Source and target node as well as all attributes from common super classes are kept. /// </summary> /// <param name="edge">The edge to be retyped.</param> /// <param name="newEdgeType">The new type for the edge.</param> /// <returns>The new edge object representing the retyped edge.</returns> public virtual LGSPEdge Retype(LGSPEdge edge, EdgeType newEdgeType) { LGSPEdge newEdge = (LGSPEdge) newEdgeType.CreateEdgeWithCopyCommons(edge.lgspSource, edge.lgspTarget, edge); RetypingEdge(edge, newEdge); ReplaceEdge(edge, newEdge); return newEdge; }
public override LGSPEdge Retype(LGSPEdge edge, EdgeType newEdgeType) { String name; if(ElemToName.TryGetValue(edge, out name)) // give new edge the name of the old edge in case it was named { LGSPEdge newEdge = (LGSPEdge)newEdgeType.CreateEdgeWithCopyCommons(edge.lgspSource, edge.lgspTarget, edge); ElemToName[newEdge] = name; RetypingEdge(edge, newEdge); ReplaceEdge(edge, newEdge); ElemToName.Remove(edge); NameToElem[name] = newEdge; return newEdge; } else return base.Retype(edge, newEdgeType); }