aboutsummaryrefslogtreecommitdiff
path: root/gdb/interps.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-09-12 21:25:22 +0000
committerPedro Alves <palves@redhat.com>2011-09-12 21:25:22 +0000
commit4801a9a3568ed8ffcb4b2fa03d086193bc9ba647 (patch)
tree71e6009f635c3be3e60c7ce31a7630d15c3e6b9d /gdb/interps.h
parentd0afda0369ec76c2a334f010914f8155f9533909 (diff)
downloadgdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.zip
gdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.tar.gz
gdb-4801a9a3568ed8ffcb4b2fa03d086193bc9ba647.tar.bz2
gdb/
2011-09-12 Pedro Alves <pedro@codesourcery.com> Matt Rice <ratmice@gmail.com> PR gdb/13175 * interps.c (struct interp) <interpreter_out>: Delete field. (interp_new): Remove the data and uiout parameters and adjust. (interp_set): Only set the current_uiout from the interpreter's uiout after initializing the interpreter. Adjust call to init_proc. (interp_ui_out): Adjust to call procs->ui_out_proc. (interp_data, interp_name): New. * interps.h (interp_init_ftype): Add `self' parameter. (interp_ui_out_ftype): New typedef. (struct interp_procs) <ui_out_proc>: New method pointer. (interp_new): Remove the data and uiout parameters. (interp_data, interp_name): Declare. * tui/tui-interp.c (tui_init): Adjust prototype. (tui_ui_out): New. (_initialize_tui_interp): Install tui_ui_out. Don't instanciate tui_out here. Adjust call to interp_new. * tui/tui-io.c (tui_initialize_io): Don't set current_uiout here. * cli/cli-interp.c (cli_interpreter_init): Adjust prototype. (cli_ui_out): New. (_initialize_cli_interp): Install it. Adjust call to interp_new. * mi/mi-common.h (struct mi_interp) <uiout>: New field. * mi/mi-interp.c (mi_interpreter_init): Adjust prototype. Initialize mi->uiout depending on the mi_version as extracted from the interpreter's name. (mi_ui_out): New. (_initialize_mi_interp): Install mi_ui_out. Adjust calls to interp_new. Don't allocate the ui_out's of the interpreters here. gdb/testsuite/ 2011-09-12 Matt Rice <ratmice@gmail.com> Pedro Alves <pedro@codesourcery.com> PR gdb/13175 * gdb.base/interp.exp: New tests. * gdb.base/interp.c: New file.
Diffstat (limited to 'gdb/interps.h')
-rw-r--r--gdb/interps.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/gdb/interps.h b/gdb/interps.h
index a000ef7..a63c2f5 100644
--- a/gdb/interps.h
+++ b/gdb/interps.h
@@ -36,13 +36,14 @@ extern struct gdb_exception interp_exec (struct interp *interp,
const char *command);
extern int interp_quiet_p (struct interp *interp);
-typedef void *(interp_init_ftype) (int top_level);
+typedef void *(interp_init_ftype) (struct interp *self, int top_level);
typedef int (interp_resume_ftype) (void *data);
typedef int (interp_suspend_ftype) (void *data);
typedef int (interp_prompt_p_ftype) (void *data);
typedef struct gdb_exception (interp_exec_ftype) (void *data,
const char *command);
typedef void (interp_command_loop_ftype) (void *data);
+typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self);
struct interp_procs
{
@@ -51,16 +52,23 @@ struct interp_procs
interp_suspend_ftype *suspend_proc;
interp_exec_ftype *exec_proc;
interp_prompt_p_ftype *prompt_proc_p;
+
+ /* Returns the ui_out currently used to collect results for this
+ interpreter. It can be a formatter for stdout, as is the case
+ for the console & mi outputs, or it might be a result
+ formatter. */
+ interp_ui_out_ftype *ui_out_proc;
+
interp_command_loop_ftype *command_loop_proc;
};
-extern struct interp *interp_new (const char *name, void *data,
- struct ui_out *uiout,
- const struct interp_procs *procs);
+extern struct interp *interp_new (const char *name, const struct interp_procs *procs);
extern void interp_add (struct interp *interp);
extern int interp_set (struct interp *interp, int top_level);
extern struct interp *interp_lookup (const char *name);
extern struct ui_out *interp_ui_out (struct interp *interp);
+extern void *interp_data (struct interp *interp);
+extern const char *interp_name (struct interp *interp);
extern int current_interp_named_p (const char *name);
extern int current_interp_display_prompt_p (void);