* dwarf2-frame.c (clear_pointer_cleanup): New function.
[deliverable/binutils-gdb.git] / gdb / interps.h
CommitLineData
4a8f6654
AC
1/* Manages interpreters for GDB, the GNU debugger.
2
0b302171
JB
3 Copyright (C) 2000, 2002-2003, 2007-2012 Free Software Foundation,
4 Inc.
4a8f6654
AC
5
6 Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc.
7
8 This file is part of GDB.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
a9762ec7 12 the Free Software Foundation; either version 3 of the License, or
4a8f6654
AC
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
1777feb0 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
4a8f6654
AC
22
23#ifndef INTERPS_H
24#define INTERPS_H
25
c1043fc2
AC
26#include "exceptions.h"
27
4a8f6654
AC
28struct ui_out;
29struct interp;
30
31extern int interp_resume (struct interp *interp);
32extern int interp_suspend (struct interp *interp);
33extern int interp_prompt_p (struct interp *interp);
34extern int interp_exec_p (struct interp *interp);
71fff37b
AC
35extern struct gdb_exception interp_exec (struct interp *interp,
36 const char *command);
4a8f6654
AC
37extern int interp_quiet_p (struct interp *interp);
38
4801a9a3 39typedef void *(interp_init_ftype) (struct interp *self, int top_level);
4a8f6654
AC
40typedef int (interp_resume_ftype) (void *data);
41typedef int (interp_suspend_ftype) (void *data);
42typedef int (interp_prompt_p_ftype) (void *data);
71fff37b
AC
43typedef struct gdb_exception (interp_exec_ftype) (void *data,
44 const char *command);
1cdac4ef 45typedef void (interp_command_loop_ftype) (void *data);
4801a9a3 46typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self);
4a8f6654 47
37ce89eb
SS
48typedef int (interp_set_logging_ftype) (struct interp *self, int start_log,
49 struct ui_file *out,
50 struct ui_file *logfile);
51
4a8f6654
AC
52struct interp_procs
53{
54 interp_init_ftype *init_proc;
55 interp_resume_ftype *resume_proc;
56 interp_suspend_ftype *suspend_proc;
57 interp_exec_ftype *exec_proc;
58 interp_prompt_p_ftype *prompt_proc_p;
4801a9a3
PA
59
60 /* Returns the ui_out currently used to collect results for this
61 interpreter. It can be a formatter for stdout, as is the case
62 for the console & mi outputs, or it might be a result
63 formatter. */
64 interp_ui_out_ftype *ui_out_proc;
65
37ce89eb
SS
66 /* Provides a hook for interpreters to do any additional
67 setup/cleanup that they might need when logging is enabled or
68 disabled. */
69 interp_set_logging_ftype *set_logging_proc;
70
4a8f6654
AC
71 interp_command_loop_ftype *command_loop_proc;
72};
73
4801a9a3 74extern struct interp *interp_new (const char *name, const struct interp_procs *procs);
4a8f6654 75extern void interp_add (struct interp *interp);
683f2885 76extern int interp_set (struct interp *interp, int top_level);
4a8f6654
AC
77extern struct interp *interp_lookup (const char *name);
78extern struct ui_out *interp_ui_out (struct interp *interp);
4801a9a3
PA
79extern void *interp_data (struct interp *interp);
80extern const char *interp_name (struct interp *interp);
c41535fd 81extern struct interp *interp_set_temp (const char *name);
4a8f6654
AC
82
83extern int current_interp_named_p (const char *name);
84extern int current_interp_display_prompt_p (void);
85extern void current_interp_command_loop (void);
37ce89eb
SS
86
87/* Call this function to give the current interpreter an opportunity
88 to do any special handling of streams when logging is enabled or
89 disabled. START_LOG is 1 when logging is starting, 0 when it ends,
90 and OUT is the stream for the log file; it will be NULL when
91 logging is ending. LOGFILE is non-NULL if the output streams
92 are to be tees, with the log file as one of the outputs. */
93
94extern int current_interp_set_logging (int start_log, struct ui_file *out,
95 struct ui_file *logfile);
96
683f2885
VP
97/* Returns opaque data associated with the top-level interpreter. */
98extern void *top_level_interpreter_data (void);
79a68887 99extern struct interp *top_level_interpreter (void);
4a8f6654 100
b4a14fd0
PA
101/* True if the current interpreter is in async mode, false if in sync
102 mode. If in sync mode, running a synchronous execution command
103 (with execute_command, e.g, "next") will not return until the
104 command is finished. If in async mode, then running a synchronous
105 command returns right after resuming the target. Waiting for the
106 command's completion is later done on the top event loop (using
107 continuations). */
108extern int interpreter_async;
109
b9362cc7 110extern void clear_interpreter_hooks (void);
4a8f6654
AC
111
112/* well-known interpreters */
113#define INTERP_CONSOLE "console"
114#define INTERP_MI1 "mi1"
2fcf52f0
AC
115#define INTERP_MI2 "mi2"
116#define INTERP_MI3 "mi3"
4a8f6654 117#define INTERP_MI "mi"
226361c4 118#define INTERP_TUI "tui"
cc4349ed 119#define INTERP_INSIGHT "insight"
4a8f6654
AC
120
121#endif
This page took 0.729869 seconds and 4 git commands to generate.