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

@ -898,25 +898,24 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
return 0;
}
/* Append to LIST the breakpoint Python object associated to B.
Return true on success. Return false on failure, with the Python error
indicator set. */
static bool
build_bp_list (struct breakpoint *b, PyObject *list)
{
PyObject *bp = (PyObject *) b->py_bp_object;
int iserr = 0;
/* Not all breakpoints will have a companion Python object.
Only breakpoints that were created via bppy_new, or
breakpoints that were created externally and are tracked by
the Python Scripting API. */
if (bp)
iserr = PyList_Append (list, bp);
if (iserr == -1)
if (bp == nullptr)
return true;
return false;
return PyList_Append (list, bp) == 0;
}
/* Static function to return a tuple holding all breakpoints. */
@ -931,15 +930,11 @@ gdbpy_breakpoints (PyObject *self, PyObject *args)
if (list == NULL)
return NULL;
/* If iterate_over_breakpoints returns non NULL it signals an error
condition. In that case abandon building the list and return
NULL. */
auto callback = [&] (breakpoint *bp)
{
return build_bp_list(bp, list.get ());
};
if (iterate_over_breakpoints (callback) != NULL)
return NULL;
/* If build_bp_list returns false, it signals an error condition. In that
case abandon building the list and return nullptr. */
for (breakpoint *bp : all_breakpoints ())
if (!build_bp_list (bp, list.get ()))
return nullptr;
return PyList_AsTuple (list.get ());
}