# HG changeset patch # User John W. Eaton # Date 1235411097 18000 # Node ID b9ce57a309a306257c937314d0b3ff88511042ea # Parent be7b30a24938c1b92e6036533996f9e98b58b4b7 don't store breakpoint info in tree_statement object diff -r be7b30a24938 -r b9ce57a309a3 src/ChangeLog --- 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 + * 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. diff -r be7b30a24938 -r b9ce57a309a3 src/pt-select.cc --- 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) diff -r be7b30a24938 -r b9ce57a309a3 src/pt-select.h --- 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; } diff -r be7b30a24938 -r b9ce57a309a3 src/pt-stmt.cc --- 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; diff -r be7b30a24938 -r b9ce57a309a3 src/pt-stmt.h --- 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; diff -r be7b30a24938 -r b9ce57a309a3 src/pt.h --- 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; }