diff options
author | Tom Tromey <tom@tromey.com> | 2019-01-15 17:06:38 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-01-17 15:42:00 -0700 |
commit | 7e955d83c4128ec773d84b92487ed1cdfed09938 (patch) | |
tree | 95fd2b230aa1ec340efdf069c98423ae73a6d6bd /gdb/progspace.h | |
parent | 2030c079717475f5b6fad837bb81758891f3b802 (diff) | |
download | binutils-7e955d83c4128ec773d84b92487ed1cdfed09938.zip binutils-7e955d83c4128ec773d84b92487ed1cdfed09938.tar.gz binutils-7e955d83c4128ec773d84b92487ed1cdfed09938.tar.bz2 |
Change all_objfiles_safe adapter to be a method on program_space
This changes the all_objfiles_safe range adapter to be a method on the
program space, and fixes up all the users.
gdb/ChangeLog
2019-01-15 Tom Tromey <tom@tromey.com>
* progspace.h (program_space) <objfiles_safe_range>: New
typedef.
<objfiles_safe>: New method.
* objfiles.h (class all_objfiles_safe): Remove.
* objfiles.c (free_all_objfiles, objfile_purge_solibs): Update.
* jit.c (jit_inferior_exit_hook): Update.
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r-- | gdb/progspace.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gdb/progspace.h b/gdb/progspace.h index abc5397..472baeb 100644 --- a/gdb/progspace.h +++ b/gdb/progspace.h @@ -26,6 +26,8 @@ #include "gdb_bfd.h" #include "gdb_vecs.h" #include "registry.h" +#include "common/next-iterator.h" +#include "common/safe-iterator.h" struct target_ops; struct bfd; @@ -148,6 +150,22 @@ struct program_space return objfiles_range (objfiles_head); } + typedef next_adapter<struct objfile, + basic_safe_iterator<next_iterator<objfile>>> + objfiles_safe_range; + + /* An iterable object that can be used to iterate over all objfiles. + The basic use is in a foreach, like: + + for (objfile *objf : pspace->objfiles_safe ()) { ... } + + This variant uses a basic_safe_iterator so that objfiles can be + deleted during iteration. */ + objfiles_safe_range objfiles_safe () + { + return objfiles_safe_range (objfiles_head); + } + /* Pointer to next in linked list. */ struct program_space *next = NULL; |