diff src/pt-stmt.cc @ 5861:2a6cb4ed8f1e

[project @ 2006-06-16 05:09:41 by jwe]
author jwe
date Fri, 16 Jun 2006 05:09:42 +0000
parents 6bd94066d360
children f1676652d808
line wrap: on
line diff
--- a/src/pt-stmt.cc
+++ b/src/pt-stmt.cc
@@ -143,6 +143,22 @@
   return retval;
 }
 
+tree_statement *
+tree_statement::dup (symbol_table *sym_tab)
+{
+  tree_statement *new_stmt = new tree_statement ();
+
+  new_stmt->cmd = cmd ? cmd->dup (sym_tab) : 0;
+
+  new_stmt->expr = expr ? expr->dup (sym_tab) : 0;
+
+  new_stmt->comm = comm ? comm->dup () : 0;
+
+  new_stmt->print_flag = print_flag;
+
+  return new_stmt;
+}
+
 void
 tree_statement::accept (tree_walker& tw)
 {
@@ -251,6 +267,23 @@
   return tbp.get_list ();
 }
 
+tree_statement_list *
+tree_statement_list::dup (symbol_table *sym_tab)
+{
+  tree_statement_list *new_list = new tree_statement_list ();
+
+  new_list->function_body = function_body;
+
+  for (iterator p = begin (); p != end (); p++)
+    {
+      tree_statement *elt = *p;
+
+      new_list->append (elt ? elt->dup (sym_tab) : 0);
+    }
+
+  return new_list;
+}
+
 void
 tree_statement_list::accept (tree_walker& tw)
 {