From 2dab0c7ba0d69bcc16cfe58da279ce915ef24348 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 16 May 2020 09:58:45 -0600 Subject: [PATCH] Remove ALL_UIS Continuing my goal of removing the "ALL_*" iterator macros, this removes ALL_UIS, replacing it with an iterator adaptor. gdb/ChangeLog 2020-05-16 Tom Tromey * top.c (quit_force): Update. * infrun.c (handle_no_resumed): Update. * top.h (all_uis): New function. (ALL_UIS): Remove. --- gdb/ChangeLog | 7 +++++++ gdb/infrun.c | 3 +-- gdb/top.c | 3 +-- gdb/top.h | 10 +++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8d6901efe67..def9db59b83 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-05-16 Tom Tromey + + * top.c (quit_force): Update. + * infrun.c (handle_no_resumed): Update. + * top.h (all_uis): New function. + (ALL_UIS): Remove. + 2020-05-16 Simon Marchi * mips-linux-tdep.c (mips_linux_in_dynsym_stub): Fix condition. diff --git a/gdb/infrun.c b/gdb/infrun.c index 601a2acca42..95fc3bfe459 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -5045,10 +5045,9 @@ handle_no_resumed (struct execution_control_state *ecs) { if (target_can_async_p ()) { - struct ui *ui; int any_sync = 0; - ALL_UIS (ui) + for (ui *ui : all_uis ()) { if (ui->prompt_state == PROMPT_BLOCKED) { diff --git a/gdb/top.c b/gdb/top.c index 3589d6b6ce7..c62eb57695c 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -1782,12 +1782,11 @@ quit_force (int *exit_arg, int from_tty) { if (write_history_p && history_filename) { - struct ui *ui; int save = 0; /* History is currently shared between all UIs. If there's any UI with a terminal, save history. */ - ALL_UIS (ui) + for (ui *ui : all_uis ()) { if (input_interactive_p (ui)) { diff --git a/gdb/top.h b/gdb/top.h index e98772a51e6..fd992977155 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -22,6 +22,7 @@ #include "gdbsupport/buffer.h" #include "gdbsupport/event-loop.h" +#include "gdbsupport/next-iterator.h" #include "value.h" struct tl_interp_info; @@ -206,9 +207,12 @@ public: #define SWITCH_THRU_ALL_UIS() \ for (switch_thru_all_uis stau_state; !stau_state.done (); stau_state.next ()) -/* Traverse over all UIs. */ -#define ALL_UIS(UI) \ - for (UI = ui_list; UI; UI = UI->next) \ +/* An adapter that can be used to traverse over all UIs. */ +static inline +next_adapter all_uis () +{ + return next_adapter (ui_list); +} /* Register the UI's input file descriptor in the event loop. */ extern void ui_register_input_event_handler (struct ui *ui); -- 2.30.2