gdb: remove iterate_over_breakpoints function

Now that we have range functions that let us use ranged for loops, we
can remove iterate_over_breakpoints in favor of those, which are easier
to read and write.  This requires exposing the declaration of
all_breakpoints and all_breakpoints_safe in breakpoint.h, as well as the
supporting types.

Change some users of iterate_over_breakpoints to use all_breakpoints,
when they don't need to delete the breakpoint, and all_breakpoints_safe
otherwise.

gdb/ChangeLog:

	* breakpoint.h (iterate_over_breakpoints): Remove.  Update
	callers to use all_breakpoints or all_breakpoints_safe.
	(breakpoint_range, all_breakpoints, breakpoint_safe_range,
	all_breakpoints_safe): Move here.
	* breakpoint.c (all_breakpoints, all_breakpoints_safe): Make
	non-static.
	(iterate_over_breakpoints): Remove.
	* python/py-finishbreakpoint.c (bpfinishpy_detect_out_scope_cb):
	Return void.
	* python/py-breakpoint.c (build_bp_list): Add comment, reverse
	return value logic.
	* guile/scm-breakpoint.c (bpscm_build_bp_list): Return void.

Change-Id: Idde764a1f577de0423e4f2444a7d5cdb01ba5e48
This commit is contained in:
Simon Marchi
2021-05-27 14:58:37 -04:00
parent e0d9a27040
commit 240edef62f
9 changed files with 65 additions and 77 deletions

View File

@@ -31,6 +31,7 @@
#include "gdbsupport/filtered-iterator.h"
#include "gdbsupport/function-view.h"
#include "gdbsupport/refcounted-object.h"
#include "gdbsupport/safe-iterator.h"
#include "cli/cli-script.h"
struct block;
@@ -1711,21 +1712,28 @@ public:
DISABLE_COPY_AND_ASSIGN (scoped_rbreak_breakpoints);
};
/* Breakpoint iterator function.
Calls a callback function once for each breakpoint, so long as the
callback function returns false. If the callback function returns
true, the iteration will end and the current breakpoint will be
returned. This can be useful for implementing a search for a
breakpoint with arbitrary attributes, or for applying an operation
to every breakpoint. */
extern struct breakpoint *iterate_over_breakpoints
(gdb::function_view<bool (breakpoint *)>);
/* Breakpoint linked list iterator. */
using breakpoint_iterator = next_iterator<breakpoint>;
/* Breakpoint linked list range. */
using breakpoint_range = next_adapter<breakpoint, breakpoint_iterator>;
/* Return a range to iterate over all breakpoints. */
breakpoint_range all_breakpoints ();
/* Breakpoint linked list range, safe against deletion of the current
breakpoint while iterating. */
using breakpoint_safe_range = basic_safe_range<breakpoint_range>;
/* Return a range to iterate over all breakpoints. This range is safe against
deletion of the current breakpoint while iterating. */
breakpoint_safe_range all_breakpoints_safe ();
/* Breakpoint filter to only keep tracepoints. */
struct tracepoint_filter