binutils-gdb/gdbsupport
Simon Marchi 9be259865c gdb: introduce iterator_range, remove next_adapter
I was always a bit confused by next_adapter, because it kind of mixes
the element type and the iterator type.  In reality, it is not much more
than a class that wraps two iterators (begin and end).  However, it
assumes that:

 - you can construct the begin iterator by passing a pointer to the
   first element of the iterable
 - you can default-construct iterator to make the end iterator

I think that by generalizing it a little bit, we can re-use it at more
places.

Rename it to "iterator_range".  I think it describes a bit better: it's
a range made by wrapping a begin and end iterator.  Move it to its own
file, since it's not related to next_iterator anymore.

iterator_range has two constructors.  The variadic one, where arguments
are forwarded to construct the underlying begin iterator.  The end
iterator is constructed through default construction.  This is a
generalization of what we have today.

There is another constructor which receives already constructed begin
and end iterators, useful if the end iterator can't be obtained by
default-construction.  Or, if you wanted to make a range that does not
end at the end of the container, you could pass any iterator as the
"end".

This generalization allows removing some "range" classes, like
all_inferiors_range.  These classes existed only to pass some arguments
when constructing the begin iterator.  With iterator_range, those same
arguments are passed to the iterator_range constructed and then
forwarded to the constructed begin iterator.

There is a small functional difference in how iterator_range works
compared to next_adapter.  next_adapter stored the pointer it received
as argument and constructeur an iterator in the `begin` method.
iterator_range constructs the begin iterator and stores it as a member.
Its `begin` method returns a copy of that iterator.

With just iterator_range, uses of next_adapter<foo> would be replaced
with:

  using foo_iterator = next_iterator<foo>;
  using foo_range = iterator_range<foo_iterator>;

However, I added a `next_range` wrapper as a direct replacement for
next_adapter<foo>.  IMO, next_range is a slightly better name than
next_adapter.

The rest of the changes are applications of this new class.

gdbsupport/ChangeLog:

	* next-iterator.h (class next_adapter): Remove.
	* iterator-range.h: New.

gdb/ChangeLog:

	* breakpoint.h (bp_locations_range): Remove.
	(bp_location_range): New.
	(struct breakpoint) <locations>: Adjust type.
	(breakpoint_range): Use iterator_range.
	(tracepoint_range): Use iterator_range.
	* breakpoint.c (breakpoint::locations): Adjust return type.
	* gdb_bfd.h (gdb_bfd_section_range): Use iterator_range.
	* gdbthread.h (all_threads_safe): Pass argument to
	all_threads_safe_range.
	* inferior-iter.h (all_inferiors_range): Use iterator_range.
	(all_inferiors_safe_range): Use iterator_range.
	(all_non_exited_inferiors_range): Use iterator_range.
	* inferior.h (all_inferiors, all_non_exited_inferiors): Pass
	inferior_list as argument.
	* objfiles.h (struct objfile) <compunits_range>: Remove.
	<compunits>: Return compunit_symtab_range.
	* progspace.h (unwrapping_objfile_iterator)
	<unwrapping_objfile_iterator>: Take parameter by value.
	(unwrapping_objfile_range): Use iterator_range.
	(struct program_space) <objfiles_range>: Define with "using".
	<objfiles>: Adjust.
	<objfiles_safe_range>: Define with "using".
	<objfiles_safe>: Adjust.
	<solibs>: Return so_list_range, define here.
	* progspace.c (program_space::solibs): Remove.
	* psymtab.h (class psymtab_storage) <partial_symtab_iterator>:
	New.
	<partial_symtab_range>: Use iterator_range.
	* solist.h (so_list_range): New.
	* symtab.h (compunit_symtab_range):
	New.
	(symtab_range): New.
	(compunit_filetabs): Change to a function.
	* thread-iter.h (inf_threads_range,
	inf_non_exited_threads_range, safe_inf_threads_range,
	all_threads_safe_range): Use iterator_range.
	* top.h (ui_range): New.
	(all_uis): Use ui_range.

Change-Id: Ib7a9d2a3547f45f01aa1c6b24536ba159db9b854
2021-07-06 15:02:05 -04:00
..
.dir-locals.el gdb: additional settings for emacs in .dir-locals.el 2021-05-17 20:47:46 +01:00
.gitattributes gdb, gdbserver, gdbsupport: add .gitattributes files 2020-03-05 15:59:22 +01:00
acinclude.m4 gdb: move ptrace.m4 to gdbsupport 2020-10-25 21:08:49 -04:00
aclocal.m4 gdb: use AC_PROG_CC_STDC instead of AM_PROG_CC_STDC 2020-10-31 08:30:57 -04:00
agent.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
agent.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
alt-stack.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
array-view.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
ax.def Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
block-signals.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
break-common.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
btrace-common.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
btrace-common.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
buffer.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
buffer.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
byte-vector.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
ChangeLog scoped_ignore_signal: Use sigprocmask+sigtimedwait instead of signal 2021-06-17 16:22:12 +01:00
check-defines.el Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
cleanups.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
cleanups.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-debug.cc gdb: add remote_debug_printf 2021-01-22 12:43:27 -05:00
common-debug.h gdbsupport: allow passing format string to scoped_debug_start_end 2021-04-24 19:26:41 -04:00
common-defs.h gnulib: update to 776af40e0 2021-02-05 13:35:20 -05:00
common-exceptions.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-exceptions.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-gdbthread.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-inferior.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-inferior.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-regcache.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-regcache.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-types.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
common-utils.cc New memory-tag commands 2021-03-24 14:57:53 -03:00
common-utils.h New memory-tag commands 2021-03-24 14:57:53 -03:00
common.m4 gdbsupport/common.m4: check for sigtimedwait 2021-07-05 09:54:35 -04:00
config.in gdbsupport/common.m4: check for sigtimedwait 2021-07-05 09:54:35 -04:00
configure gdbsupport/common.m4: check for sigtimedwait 2021-07-05 09:54:35 -04:00
configure.ac Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
create-version.sh Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
def-vector.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
default-init-alloc.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
eintr.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
enum-flags.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
environ.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
environ.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
errors.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
errors.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
event-loop.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
event-loop.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
fileio.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
fileio.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
filestuff.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
filestuff.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
filtered-iterator.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
format.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
format.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
forward-scope-exit.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
function-view.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_assert.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_binary_search.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_locale.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_optional.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_proc_service.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_ref_ptr.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_select.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_setjmp.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_signals.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_splay_tree.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_string_view.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_string_view.tcc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_sys_time.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_tilde_expand.cc Improve gdb_tilde_expand logic. 2021-01-23 17:17:38 +00:00
gdb_tilde_expand.h Improve gdb_tilde_expand logic. 2021-01-23 17:17:38 +00:00
gdb_unique_ptr.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_unlinker.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_vecs.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_vecs.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_wait.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb_wait.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb-dlfcn.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb-dlfcn.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb-safe-ctype.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
gdb-sigmask.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
hash_enum.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
host-defs.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
iterator-range.h gdb: introduce iterator_range, remove next_adapter 2021-07-06 15:02:05 -04:00
job-control.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
job-control.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
Makefile.am Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
Makefile.in gdbsupport: re-generate configure & friends 2021-05-08 21:27:49 -04:00
netstuff.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
netstuff.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
new-op.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
next-iterator.h gdb: introduce iterator_range, remove next_adapter 2021-07-06 15:02:05 -04:00
observable.h gdbsupport: allow to specify dependencies between observers 2021-04-27 11:22:32 -04:00
offset-type.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
parallel-for.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
pathstuff.cc gdb: check for empty strings in get_standard_cache_dir/get_standard_config_dir 2021-01-08 13:46:56 -05:00
pathstuff.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
poison.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
preprocessor.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
print-utils.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
print-utils.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
ptid.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
ptid.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
ptrace.m4 Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
README
refcounted-object.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
rsp-low.cc New memory-tag commands 2021-03-24 14:57:53 -03:00
rsp-low.h New memory-tag commands 2021-03-24 14:57:53 -03:00
run-time-clock.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
run-time-clock.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
safe-iterator.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
safe-strerror.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
scope-exit.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
scoped_fd.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
scoped_ignore_signal.h gdb: fall back on sigpending + sigwait if sigtimedwait is not available 2021-07-05 09:54:58 -04:00
scoped_ignore_sigttou.h Don't call sigtimedwait for scoped_ignore_sigttou 2021-06-17 19:39:08 +01:00
scoped_mmap.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
scoped_mmap.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
scoped_restore.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
search.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
search.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
selftest.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
selftest.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
selftest.m4 Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
signals-state-save-restore.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
signals-state-save-restore.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
signals.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
symbol.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
tdesc.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
tdesc.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
thread-pool.cc Use rvalue reference in thread_pool::post_task 2021-04-30 10:04:56 -06:00
thread-pool.h Use rvalue reference in thread_pool::post_task 2021-04-30 10:04:56 -06:00
traits.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
underlying.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
valid-expr.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
version.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
warning.m4 Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
x86-xstate.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
xml-utils.cc Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
xml-utils.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00

This is a helper library that is used by gdb and gdbserver.

To send patches, follow the gdb patch submission instructions in
../gdb/CONTRIBUTE.  For maintainers, see ../gdb/MAINTAINERS.