/* TUI Interpreter definitions for GDB, the GNU debugger.
- Copyright (C) 2003-2017 Free Software Foundation, Inc.
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
This file is part of GDB.
#include "interps.h"
#include "top.h"
#include "event-top.h"
-#include "event-loop.h"
+#include "gdbsupport/event-loop.h"
#include "ui-out.h"
#include "cli-out.h"
#include "tui/tui-data.h"
-#include "readline/readline.h"
#include "tui/tui-win.h"
#include "tui/tui.h"
#include "tui/tui-io.h"
#include "infrun.h"
-#include "observer.h"
+#include "observable.h"
#include "gdbthread.h"
+#include "inferior.h"
+#include "main.h"
-/* Set to 1 when the TUI mode must be activated when we first start
+/* Set to true when the TUI mode must be activated when we first start
gdb. */
-static int tui_start_enabled = 0;
+static bool tui_start_enabled = false;
class tui_interp final : public cli_interp_base
{
static tui_interp *
as_tui_interp (struct interp *interp)
{
- if (strcmp (interp_name (interp), INTERP_TUI) == 0)
- return (tui_interp *) interp;
- return NULL;
+ return dynamic_cast<tui_interp *> (interp);
}
/* Cleanup the tui before exiting. */
static void
tui_on_user_selected_context_changed (user_selected_what selection)
{
- struct thread_info *tp;
-
/* This event is suppressed. */
if (cli_suppress_notification.user_selected_context)
return;
- tp = find_thread_ptid (inferior_ptid);
+ thread_info *tp = inferior_ptid != null_ptid ? inferior_thread () : NULL;
SWITCH_THRU_ALL_UIS ()
{
/* Install exit handler to leave the screen in a good shape. */
atexit (tui_exit);
- tui_initialize_static_data ();
-
tui_initialize_io ();
tui_initialize_win ();
- if (ui_file_isatty (gdb_stdout))
+ if (gdb_stdout->isatty ())
tui_initialize_readline ();
}
return new tui_interp (name);
}
-/* Provide a prototype to silence -Wmissing-prototypes. */
-extern initialize_file_ftype _initialize_tui_interp;
-
+void _initialize_tui_interp ();
void
-_initialize_tui_interp (void)
+_initialize_tui_interp ()
{
interp_factory_register (INTERP_TUI, tui_interp_factory);
if (interpreter_p && strcmp (interpreter_p, INTERP_TUI) == 0)
- tui_start_enabled = 1;
+ tui_start_enabled = true;
if (interpreter_p && strcmp (interpreter_p, INTERP_CONSOLE) == 0)
{
}
/* If changing this, remember to update cli-interp.c as well. */
- observer_attach_normal_stop (tui_on_normal_stop);
- observer_attach_signal_received (tui_on_signal_received);
- observer_attach_end_stepping_range (tui_on_end_stepping_range);
- observer_attach_signal_exited (tui_on_signal_exited);
- observer_attach_exited (tui_on_exited);
- observer_attach_no_history (tui_on_no_history);
- observer_attach_sync_execution_done (tui_on_sync_execution_done);
- observer_attach_command_error (tui_on_command_error);
- observer_attach_user_selected_context_changed
+ gdb::observers::normal_stop.attach (tui_on_normal_stop);
+ gdb::observers::signal_received.attach (tui_on_signal_received);
+ gdb::observers::end_stepping_range.attach (tui_on_end_stepping_range);
+ gdb::observers::signal_exited.attach (tui_on_signal_exited);
+ gdb::observers::exited.attach (tui_on_exited);
+ gdb::observers::no_history.attach (tui_on_no_history);
+ gdb::observers::sync_execution_done.attach (tui_on_sync_execution_done);
+ gdb::observers::command_error.attach (tui_on_command_error);
+ gdb::observers::user_selected_context_changed.attach
(tui_on_user_selected_context_changed);
}