public static SqlParseTree Clone(SqlParseTree original) { if (original == null) { return(null); } SqlParseTree tree = new SqlParseTree(); tree.TreeDescription = original.TreeDescription; tree.RootNode = SqlParseTreeNode.Clone(original.RootNode); tree.OuterTreeText = original.OuterTreeText; tree.InnerTreeText = original.InnerTreeText; tree.BeginOffset = original.BeginOffset; tree.EndOffset = original.EndOffset; return(tree); }
public static SqlParseTreeNode Clone(SqlParseTreeNode original, SqlParseTreeNode newParent = null) { if (original == null) { return(null); } SqlParseTreeNode node = new SqlParseTreeNode(); node.SequenceNumber = original.SequenceNumber; node.Level = original.Level; node.OperationName = original.OperationName; node.Arguments = original.Arguments; node.Operation = original.Operation; node.Parent = newParent; node.Children = new List <SqlParseTreeNode>(); original.Children.ForEach(n => node.Children.Add(SqlParseTreeNode.Clone(n, node))); return(node); }