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

[project @ 2006-06-16 05:09:41 by jwe]
author jwe
date Fri, 16 Jun 2006 05:09:42 +0000
parents 4c8a2e4e0717
children 516d3071b34c
line wrap: on
line diff
--- a/src/pt-decl.cc
+++ b/src/pt-decl.cc
@@ -45,6 +45,13 @@
   delete expr;
 }
 
+tree_decl_elt *
+tree_decl_elt::dup (symbol_table *sym_tab)
+{
+  return new tree_decl_elt (id ? id->dup (sym_tab) : 0,
+			    expr ? expr->dup (sym_tab) : 0);
+}
+
 void
 tree_decl_elt::accept (tree_walker& tw)
 {
@@ -67,6 +74,21 @@
     }
 }
 
+tree_decl_init_list *
+tree_decl_init_list::dup (symbol_table *sym_tab)
+{
+  tree_decl_init_list *new_dil = new tree_decl_init_list ();
+
+  for (iterator p = begin (); p != end (); p++)
+    {
+      tree_decl_elt *elt = *p;
+
+      new_dil->append (elt ? elt->dup (sym_tab) : 0);
+    }
+  
+  return new_dil;
+}
+
 void
 tree_decl_init_list::accept (tree_walker& tw)
 {
@@ -133,6 +155,13 @@
 	     line (), column ());
 }
 
+tree_command *
+tree_global_command::dup (symbol_table *sym_tab)
+{
+  return new tree_global_command (init_list ? init_list->dup (sym_tab) : 0,
+				  line (), column ());
+}
+
 // Static.
 
 void
@@ -179,6 +208,13 @@
     }
 }
 
+tree_command *
+tree_static_command::dup (symbol_table *sym_tab)
+{
+  return new tree_static_command (init_list ? init_list->dup (sym_tab) : 0,
+				  line (), column ());
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***