aboutsummaryrefslogtreecommitdiff
path: root/gdb/interps.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-06-21 01:11:51 +0100
committerPedro Alves <palves@redhat.com>2016-06-21 01:11:51 +0100
commitb2d86570b316c347384c4ba9bb3933ed5e807fca (patch)
tree28b5d6a9bf5fa7a41e0cfb3de98dd5583732c596 /gdb/interps.h
parent9204d6922cb80f34dd799e57f7f0c74bc86e7027 (diff)
downloadgdb-b2d86570b316c347384c4ba9bb3933ed5e807fca.zip
gdb-b2d86570b316c347384c4ba9bb3933ed5e807fca.tar.gz
gdb-b2d86570b316c347384c4ba9bb3933ed5e807fca.tar.bz2
Simplify starting the command event loop
All interpreter types (CLI/TUI/MI) print the prompt, and then call start_event_loop. Because we'll need an interpreter hook to display the interpreter-specific prompt before going back to the event loop, without actually starting an event loop, this patch moves the start_event_loop call to common code, and replaces the command_loop hook with a pre_command_look hook, that now just prints the prompt. Turns out to be a cleanup on its own right anyway. gdb/ChangeLog: 2016-06-21 Pedro Alves <palves@redhat.com> * cli/cli-interp.c (cli_interpreter_pre_command_loop): New function. (cli_interp_procs): Install it instead of cli_command_loop. * cli/cli-interp.h (cli_interpreter_pre_command_loop): Declare. * event-top.c (cli_command_loop): Delete. * interps.c (interp_new): Remove reference to command_loop_proc. (current_interp_command_loop): Delete. (interp_pre_command_loop): New function. (interp_command_loop_ftype): Delete. * interps.h (interp_pre_command_loop_ftype): New typedef. (struct interp_procs) <command_loop_proc>: Delele field. <pre_command_loop_proc>: New field. (current_interp_command_loop): Delete declaration. (interp_pre_command_loop): New declaration. * main.c (captured_command_loop): Call interp_pre_command_loop instead of current_interp_command_loop and start an event loop. * mi/mi-interp.c (mi_command_loop): Delete. (mi_interpreter_pre_command_loop): New. (mi_interp_procs): Update. * tui/tui-interp.c (tui_interp_procs): Install cli_interpreter_pre_command_loop instead of cli_command_loop.
Diffstat (limited to 'gdb/interps.h')
-rw-r--r--gdb/interps.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/gdb/interps.h b/gdb/interps.h
index eba3387..4ac0845 100644
--- a/gdb/interps.h
+++ b/gdb/interps.h
@@ -46,7 +46,7 @@ typedef int (interp_resume_ftype) (void *data);
typedef int (interp_suspend_ftype) (void *data);
typedef struct gdb_exception (interp_exec_ftype) (void *data,
const char *command);
-typedef void (interp_command_loop_ftype) (void *data);
+typedef void (interp_pre_command_loop_ftype) (struct interp *self);
typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self);
typedef int (interp_set_logging_ftype) (struct interp *self, int start_log,
@@ -73,7 +73,9 @@ struct interp_procs
disabled. */
interp_set_logging_ftype *set_logging_proc;
- interp_command_loop_ftype *command_loop_proc;
+ /* Called before starting an event loop, to give the interpreter a
+ chance to e.g., print a prompt. */
+ interp_pre_command_loop_ftype *pre_command_loop_proc;
/* Returns true if this interpreter supports using the readline
library; false if it uses GDB's own simplified readline
@@ -100,8 +102,6 @@ extern struct interp *interp_set_temp (const char *name);
extern int current_interp_named_p (const char *name);
-extern void current_interp_command_loop (void);
-
/* Call this function to give the current interpreter an opportunity
to do any special handling of streams when logging is enabled or
disabled. START_LOG is 1 when logging is starting, 0 when it ends,
@@ -127,6 +127,10 @@ extern void clear_interpreter_hooks (void);
if it uses GDB's own simplified form of readline. */
extern int interp_supports_command_editing (struct interp *interp);
+/* Called before starting an event loop, to give the interpreter a
+ chance to e.g., print a prompt. */
+extern void interp_pre_command_loop (struct interp *interp);
+
/* well-known interpreters */
#define INTERP_CONSOLE "console"
#define INTERP_MI1 "mi1"