public override LGSPNode Retype(LGSPNode node, NodeType newNodeType) { String name; if (ElemToName.TryGetValue(node, out name)) // give new node the name of the old node in case it was named { LGSPNode newNode = (LGSPNode)newNodeType.CreateNodeWithCopyCommons(node); ElemToName[newNode] = name; RetypingNode(node, newNode); ReplaceNode(node, newNode); ElemToName.Remove(node); NameToElem[name] = newNode; return(newNode); } else { return(base.Retype(node, newNodeType)); } }
/// <summary> /// Retypes a node by creating a new node of the given type. /// All incident edges as well as all attributes from common super classes are kept. /// </summary> /// <param name="node">The node to be retyped.</param> /// <param name="newNodeType">The new type for the node.</param> /// <returns>The new node object representing the retyped node.</returns> public virtual LGSPNode Retype(LGSPNode node, NodeType newNodeType) { LGSPNode newNode = (LGSPNode) newNodeType.CreateNodeWithCopyCommons(node); RetypingNode(node, newNode); ReplaceNode(node, newNode); return newNode; }
public override LGSPNode Retype(LGSPNode node, NodeType newNodeType) { String name; if(ElemToName.TryGetValue(node, out name)) // give new node the name of the old node in case it was named { LGSPNode newNode = (LGSPNode)newNodeType.CreateNodeWithCopyCommons(node); ElemToName[newNode] = name; RetypingNode(node, newNode); ReplaceNode(node, newNode); ElemToName.Remove(node); NameToElem[name] = newNode; return newNode; } else return base.Retype(node, newNodeType); }