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