Mercurial > hg > octave-lyh
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 +++ b/src/ChangeLog @@ -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 +++ b/src/pt-select.cc @@ -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 +++ b/src/pt-select.h @@ -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 +++ b/src/pt-stmt.cc @@ -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 +++ b/src/pt-stmt.h @@ -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 +++ b/src/pt.h @@ -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; }