OLD | NEW |
1 /* Manages interpreters for GDB, the GNU debugger. | 1 /* Manages interpreters for GDB, the GNU debugger. |
2 | 2 |
3 Copyright (C) 2000, 2002-2003, 2007-2012 Free Software Foundation, | 3 Copyright (C) 2000, 2002-2003, 2007-2012 Free Software Foundation, |
4 Inc. | 4 Inc. |
5 | 5 |
6 Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc. | 6 Written by Jim Ingham <jingham@apple.com> of Apple Computer, Inc. |
7 | 7 |
8 This file is part of GDB. | 8 This file is part of GDB. |
9 | 9 |
10 This program is free software; you can redistribute it and/or modify | 10 This program is free software; you can redistribute it and/or modify |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 typedef void *(interp_init_ftype) (struct interp *self, int top_level); | 39 typedef void *(interp_init_ftype) (struct interp *self, int top_level); |
40 typedef int (interp_resume_ftype) (void *data); | 40 typedef int (interp_resume_ftype) (void *data); |
41 typedef int (interp_suspend_ftype) (void *data); | 41 typedef int (interp_suspend_ftype) (void *data); |
42 typedef int (interp_prompt_p_ftype) (void *data); | 42 typedef int (interp_prompt_p_ftype) (void *data); |
43 typedef struct gdb_exception (interp_exec_ftype) (void *data, | 43 typedef struct gdb_exception (interp_exec_ftype) (void *data, |
44 const char *command); | 44 const char *command); |
45 typedef void (interp_command_loop_ftype) (void *data); | 45 typedef void (interp_command_loop_ftype) (void *data); |
46 typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self); | 46 typedef struct ui_out *(interp_ui_out_ftype) (struct interp *self); |
47 | 47 |
| 48 typedef int (interp_set_logging_ftype) (struct interp *self, int start_log, |
| 49 struct ui_file *out, |
| 50 struct ui_file *logfile); |
| 51 |
48 struct interp_procs | 52 struct interp_procs |
49 { | 53 { |
50 interp_init_ftype *init_proc; | 54 interp_init_ftype *init_proc; |
51 interp_resume_ftype *resume_proc; | 55 interp_resume_ftype *resume_proc; |
52 interp_suspend_ftype *suspend_proc; | 56 interp_suspend_ftype *suspend_proc; |
53 interp_exec_ftype *exec_proc; | 57 interp_exec_ftype *exec_proc; |
54 interp_prompt_p_ftype *prompt_proc_p; | 58 interp_prompt_p_ftype *prompt_proc_p; |
55 | 59 |
56 /* Returns the ui_out currently used to collect results for this | 60 /* Returns the ui_out currently used to collect results for this |
57 interpreter. It can be a formatter for stdout, as is the case | 61 interpreter. It can be a formatter for stdout, as is the case |
58 for the console & mi outputs, or it might be a result | 62 for the console & mi outputs, or it might be a result |
59 formatter. */ | 63 formatter. */ |
60 interp_ui_out_ftype *ui_out_proc; | 64 interp_ui_out_ftype *ui_out_proc; |
61 | 65 |
| 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 |
62 interp_command_loop_ftype *command_loop_proc; | 71 interp_command_loop_ftype *command_loop_proc; |
63 }; | 72 }; |
64 | 73 |
65 extern struct interp *interp_new (const char *name, const struct interp_procs *p
rocs); | 74 extern struct interp *interp_new (const char *name, const struct interp_procs *p
rocs); |
66 extern void interp_add (struct interp *interp); | 75 extern void interp_add (struct interp *interp); |
67 extern int interp_set (struct interp *interp, int top_level); | 76 extern int interp_set (struct interp *interp, int top_level); |
68 extern struct interp *interp_lookup (const char *name); | 77 extern struct interp *interp_lookup (const char *name); |
69 extern struct ui_out *interp_ui_out (struct interp *interp); | 78 extern struct ui_out *interp_ui_out (struct interp *interp); |
70 extern void *interp_data (struct interp *interp); | 79 extern void *interp_data (struct interp *interp); |
71 extern const char *interp_name (struct interp *interp); | 80 extern const char *interp_name (struct interp *interp); |
| 81 extern struct interp *interp_set_temp (const char *name); |
72 | 82 |
73 extern int current_interp_named_p (const char *name); | 83 extern int current_interp_named_p (const char *name); |
74 extern int current_interp_display_prompt_p (void); | 84 extern int current_interp_display_prompt_p (void); |
75 extern void current_interp_command_loop (void); | 85 extern void current_interp_command_loop (void); |
| 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 |
| 94 extern int current_interp_set_logging (int start_log, struct ui_file *out, |
| 95 struct ui_file *logfile); |
| 96 |
76 /* Returns opaque data associated with the top-level interpreter. */ | 97 /* Returns opaque data associated with the top-level interpreter. */ |
77 extern void *top_level_interpreter_data (void); | 98 extern void *top_level_interpreter_data (void); |
78 extern struct interp *top_level_interpreter (void); | 99 extern struct interp *top_level_interpreter (void); |
79 | 100 |
80 /* True if the current interpreter is in async mode, false if in sync | 101 /* True if the current interpreter is in async mode, false if in sync |
81 mode. If in sync mode, running a synchronous execution command | 102 mode. If in sync mode, running a synchronous execution command |
82 (with execute_command, e.g, "next") will not return until the | 103 (with execute_command, e.g, "next") will not return until the |
83 command is finished. If in async mode, then running a synchronous | 104 command is finished. If in async mode, then running a synchronous |
84 command returns right after resuming the target. Waiting for the | 105 command returns right after resuming the target. Waiting for the |
85 command's completion is later done on the top event loop (using | 106 command's completion is later done on the top event loop (using |
86 continuations). */ | 107 continuations). */ |
87 extern int interpreter_async; | 108 extern int interpreter_async; |
88 | 109 |
89 extern void clear_interpreter_hooks (void); | 110 extern void clear_interpreter_hooks (void); |
90 | 111 |
91 /* well-known interpreters */ | 112 /* well-known interpreters */ |
92 #define INTERP_CONSOLE "console" | 113 #define INTERP_CONSOLE "console" |
93 #define INTERP_MI1 "mi1" | 114 #define INTERP_MI1 "mi1" |
94 #define INTERP_MI2 "mi2" | 115 #define INTERP_MI2 "mi2" |
95 #define INTERP_MI3 "mi3" | 116 #define INTERP_MI3 "mi3" |
96 #define INTERP_MI "mi" | 117 #define INTERP_MI "mi" |
97 #define INTERP_TUI "tui" | 118 #define INTERP_TUI "tui" |
98 #define INTERP_INSIGHT "insight" | 119 #define INTERP_INSIGHT "insight" |
99 | 120 |
100 #endif | 121 #endif |
OLD | NEW |