changeset 8843:b9ce57a309a3

don't store breakpoint info in tree_statement object
author John W. Eaton <jwe@octave.org>
date Mon, 23 Feb 2009 12:44:57 -0500
parents be7b30a24938
children c84a5b6377c4
files src/ChangeLog src/pt-select.cc src/pt-select.h src/pt-stmt.cc src/pt-stmt.h src/pt.h
diffstat 6 files changed, 106 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/ChangeLog	Mon Feb 23 12:44:57 2009 -0500
@@ -1,5 +1,19 @@
 2009-02-23  John W. Eaton  <jwe@octave.org>
 
+	* pt-select.h, pt-select.cc (tree_if_command::set_breakpoint,
+	tree_if_command::delete_breakpoint): New functions.
+	(tree_switch_command::set_breakpoint,
+	tree_switch_command::delete_breakpoint): New functions.
+	* pt-stmt.h, pt-stmt.cc (tree_statement::set_breakpoint,
+	tree_statement::delete_breakpoint, tree_statement::is_breakpoint):
+	Delegate real work to cmd or expr.
+	(tree_statement::bp): Delete data member.
+	(tree_statement::tree_statement): Don't initialize bp.
+	(tree_statement::dup): Don't copy bp.
+
+	* pt.h (tree::line (int), tree:column (int)): New functions.
+	(tree:set_breakpoint, tree::delete_breakpoint): Now virtual.
+
 	* parse.y (finish_if_command): Also store line and column info for
 	if statement in first element of list.
 	(finish_switch_command): Likewise, for switch.
--- a/src/pt-select.cc	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/pt-select.cc	Mon Feb 23 12:44:57 2009 -0500
@@ -93,6 +93,30 @@
   delete trail_comm;
 }
 
+void
+tree_if_command::set_breakpoint (void)
+{
+  if (list)
+    {
+      tree_if_clause *elt = list->front ();
+
+      if (elt)
+	elt->set_breakpoint ();
+    }
+}
+
+void
+tree_if_command::delete_breakpoint (void)
+{
+  if (list)
+    {
+      tree_if_clause *elt = list->front ();
+
+      if (elt)
+	elt->set_breakpoint ();
+    }
+}
+
 tree_command *
 tree_if_command::dup (symbol_table::scope_id scope,
 		      symbol_table::context_id context)
@@ -206,6 +230,30 @@
   delete trail_comm;
 }
 
+void
+tree_switch_command::set_breakpoint (void)
+{
+  if (list)
+    {
+      tree_switch_case *elt = list->front ();
+
+      if (elt)
+	elt->set_breakpoint ();
+    }
+}
+
+void
+tree_switch_command::delete_breakpoint (void)
+{
+  if (list)
+    {
+      tree_switch_case *elt = list->front ();
+
+      if (elt)
+	elt->set_breakpoint ();
+    }
+}
+
 tree_command *
 tree_switch_command::dup (symbol_table::scope_id scope,
 			  symbol_table::context_id context)
--- a/src/pt-select.h	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/pt-select.h	Mon Feb 23 12:44:57 2009 -0500
@@ -133,6 +133,10 @@
 
   ~tree_if_command (void);
 
+  void set_breakpoint (void);
+
+  void delete_breakpoint (void);
+
   tree_if_command_list *cmd_list (void) { return list; }
 
   octave_comment_list *leading_comment (void) { return lead_comm; }
@@ -266,6 +270,10 @@
 
   ~tree_switch_command (void);
 
+  void set_breakpoint (void);
+
+  void delete_breakpoint (void);
+
   tree_expression *switch_value (void) { return expr; }
 
   tree_switch_case_list *case_list (void) { return list; }
--- a/src/pt-stmt.cc	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/pt-stmt.cc	Mon Feb 23 12:44:57 2009 -0500
@@ -70,6 +70,30 @@
   return expr && expr->print_result ();
 }
 
+void
+tree_statement::set_breakpoint (void)
+{
+  if (cmd)
+    cmd->set_breakpoint ();
+  else if (expr)
+    expr->set_breakpoint ();
+}
+
+void
+tree_statement::delete_breakpoint (void)
+{
+  if (cmd)
+    cmd->delete_breakpoint ();
+  else if (expr)
+    expr->delete_breakpoint ();
+}
+
+bool
+tree_statement::is_breakpoint (void) const
+{
+  return cmd ? cmd->is_breakpoint () : (expr ? expr->is_breakpoint () : false);
+}
+
 int
 tree_statement::line (void) const
 {
@@ -121,8 +145,6 @@
 
   new_stmt->expr = expr ? expr->dup (scope, context) : 0;
 
-  new_stmt->bp = bp;
-
   new_stmt->comm = comm ? comm->dup () : 0;
 
   return new_stmt;
--- a/src/pt-stmt.h	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/pt-stmt.h	Mon Feb 23 12:44:57 2009 -0500
@@ -46,13 +46,13 @@
 public:
 
   tree_statement (void)
-    : cmd (0), expr (0), bp (false), comm (0) { }
+    : cmd (0), expr (0), comm (0) { }
 
   tree_statement (tree_command *c, octave_comment_list *cl)
-    : cmd (c), expr (0), bp (false), comm (cl) { }
+    : cmd (c), expr (0), comm (cl) { }
 
   tree_statement (tree_expression *e, octave_comment_list *cl)
-    : cmd (0), expr (e), bp (false), comm (cl) { }
+    : cmd (0), expr (e), comm (cl) { }
 
   ~tree_statement (void);
 
@@ -64,11 +64,11 @@
 
   bool is_expression (void) const { return expr != 0; }
 
-  void set_breakpoint (void) { bp = true; }
+  void set_breakpoint (void);
 
-  void delete_breakpoint (void) { bp = false; }
+  void delete_breakpoint (void);
 
-  bool is_breakpoint (void) const { return bp; }
+  bool is_breakpoint (void) const;
 
   int line (void) const;
   int column (void) const;
@@ -108,9 +108,6 @@
   // Expression to evaluate.
   tree_expression *expr;
 
-  // Breakpoint flag.
-  bool bp;
-
   // Comment associated with this statement.
   octave_comment_list *comm;
 
--- a/src/pt.h	Mon Feb 23 12:29:10 2009 -0500
+++ b/src/pt.h	Mon Feb 23 12:44:57 2009 -0500
@@ -47,9 +47,13 @@
 
   virtual int column (void) const { return column_num; }
 
-  void set_breakpoint (void) { bp = true; }
+  void line (int l) { line_num = l; }
+
+  void column (int c) { column_num = c; }
 
-  void delete_breakpoint (void) { bp = false; }
+  virtual void set_breakpoint (void) { bp = true; }
+
+  virtual void delete_breakpoint (void) { bp = false; }
 
   bool is_breakpoint (void) const { return bp; }