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);
        }
Example #2
0
        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);
        }