Mercurial > octave
diff libinterp/parse-tree/pt-stmt.cc @ 29457:313b8b897733
revamp handling of breakpoint line positions
Use set<int> instead of map<int,int> since we don't assign number IDs
to breakpoints, we just use line numbers. Allow breakpoint functions
to accept individual line number arguments. Simplify iteration over
sets of breakpoint lines.
* debug.cc (bp_lines_to_ov): Rename from intmap_to_ov.
* bp-table.h, bp-table.cc (bp_table::bp_lines): New typedef to replace
bp_table::intmap. Change all uses.
(bp_table::add_breakpoint, bp_table::remove_breakpoint): New overloads
that accept single lines as integers instead of requiring a set of lines.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 03 Mar 2021 23:57:31 -0500 |
parents | 0a5b15007766 |
children | a61e1a0f6024 |
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-stmt.cc Sun Mar 21 10:53:11 2021 +0100 +++ b/libinterp/parse-tree/pt-stmt.cc Wed Mar 03 23:57:31 2021 -0500 @@ -249,49 +249,45 @@ // Updates GUI via event_manager::update_breakpoint. // FIXME: COME BACK TO ME. - bp_table::intmap + bp_table::bp_lines tree_statement_list::add_breakpoint (event_manager& evmgr, const std::string& file, - const bp_table::intmap& line, + const bp_table::bp_lines& lines, const std::string& condition) { - bp_table::intmap retval; - - octave_idx_type len = line.size (); + bp_table::bp_lines retval; - for (int i = 0; i < len; i++) + for (const auto& lineno : lines) { - bp_table::const_intmap_iterator p = line.find (i); + int line = set_breakpoint (lineno, condition); - if (p != line.end ()) + if (line) { - int lineno = p->second; + if (! file.empty ()) + evmgr.update_breakpoint (true, file, line, condition); - retval[i] = set_breakpoint (lineno, condition); - - if (retval[i] != 0 && ! file.empty ()) - evmgr.update_breakpoint (true, file, retval[i], condition); + retval.insert (line); } } return retval; } - bp_table::intmap + bp_table::bp_lines tree_statement_list::remove_all_breakpoints (event_manager& evmgr, const std::string& file) { - bp_table::intmap retval; + bp_table::bp_lines retval; octave_value_list bkpts = list_breakpoints (); for (int i = 0; i < bkpts.length (); i++) { - int lineno = static_cast<int> (bkpts(i).int_value ()); + int lineno = bkpts(i).int_value (); delete_breakpoint (lineno); - retval[i] = lineno; + retval.insert (lineno); if (! file.empty ()) evmgr.update_breakpoint (false, file, lineno);