OLD | NEW |
1 /* Header file for GDB command decoding library. | 1 /* Header file for GDB command decoding library. |
2 | 2 |
3 Copyright (c) 2000, 2003, 2007-2012 Free Software Foundation, Inc. | 3 Copyright (c) 2000, 2003, 2007-2012 Free Software Foundation, Inc. |
4 | 4 |
5 This program is free software; you can redistribute it and/or modify | 5 This program is free software; you can redistribute it and/or modify |
6 it under the terms of the GNU General Public License as published by | 6 it under the terms of the GNU General Public License as published by |
7 the Free Software Foundation; either version 3 of the License, or | 7 the Free Software Foundation; either version 3 of the License, or |
8 (at your option) any later version. | 8 (at your option) any later version. |
9 | 9 |
10 This program is distributed in the hope that it will be useful, | 10 This program is distributed in the hope that it will be useful, |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 GNU General Public License for more details. | 13 GNU General Public License for more details. |
14 | 14 |
15 You should have received a copy of the GNU General Public License | 15 You should have received a copy of the GNU General Public License |
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
17 | 17 |
18 #if !defined (CLI_DECODE_H) | 18 #if !defined (CLI_DECODE_H) |
19 #define CLI_DECODE_H 1 | 19 #define CLI_DECODE_H 1 |
20 | 20 |
| 21 /* This file defines the private interfaces for any code implementing |
| 22 command internals. */ |
| 23 |
| 24 /* Include the public interfaces. */ |
21 #include "command.h" | 25 #include "command.h" |
22 | 26 |
23 struct re_pattern_buffer; | 27 struct re_pattern_buffer; |
24 | 28 |
25 #if 0 | 29 #if 0 |
26 /* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum | 30 /* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum |
27 cmd_types'' can be moved from "command.h" to "cli-decode.h". */ | 31 cmd_types'' can be moved from "command.h" to "cli-decode.h". */ |
28 /* Not a set/show command. Note that some commands which begin with | 32 /* Not a set/show command. Note that some commands which begin with |
29 "set" or "show" might be in this category, if their syntax does | 33 "set" or "show" might be in this category, if their syntax does |
30 not fall into one of the following categories. */ | 34 not fall into one of the following categories. */ |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 (rl_point) and is '\0' terminated. | 161 (rl_point) and is '\0' terminated. |
158 | 162 |
159 Return value is a malloc'd vector of pointers to possible | 163 Return value is a malloc'd vector of pointers to possible |
160 completions terminated with NULL. If there are no completions, | 164 completions terminated with NULL. If there are no completions, |
161 returning a pointer to a NULL would work but returning NULL | 165 returning a pointer to a NULL would work but returning NULL |
162 itself is also valid. WORD points in the same buffer as TEXT, | 166 itself is also valid. WORD points in the same buffer as TEXT, |
163 and completions should be returned relative to this position. | 167 and completions should be returned relative to this position. |
164 For example, suppose TEXT is "foo" and we want to complete to | 168 For example, suppose TEXT is "foo" and we want to complete to |
165 "foobar". If WORD is "oo", return "oobar"; if WORD is | 169 "foobar". If WORD is "oo", return "oobar"; if WORD is |
166 "baz/foo", return "baz/foobar". */ | 170 "baz/foo", return "baz/foobar". */ |
167 char **(*completer) (struct cmd_list_element *cmd, | 171 completer_ftype *completer; |
168 » » » char *text, char *word); | |
169 | 172 |
170 /* Destruction routine for this command. If non-NULL, this is | 173 /* Destruction routine for this command. If non-NULL, this is |
171 called when this command instance is destroyed. This may be | 174 called when this command instance is destroyed. This may be |
172 used to finalize the CONTEXT field, if needed. */ | 175 used to finalize the CONTEXT field, if needed. */ |
173 void (*destroyer) (struct cmd_list_element *self, void *context); | 176 void (*destroyer) (struct cmd_list_element *self, void *context); |
174 | 177 |
175 /* Type of "set" or "show" command (or SET_NOT_SET if not "set" | 178 /* Type of "set" or "show" command (or SET_NOT_SET if not "set" |
176 or "show"). */ | 179 or "show"). */ |
177 cmd_types type; | 180 cmd_types type; |
178 | 181 |
179 /* Pointer to variable affected by "set" and "show". Doesn't | 182 /* Pointer to variable affected by "set" and "show". Doesn't |
180 matter if type is not_set. */ | 183 matter if type is not_set. */ |
181 void *var; | 184 void *var; |
182 | 185 |
183 /* What kind of variable is *VAR? */ | 186 /* What kind of variable is *VAR? */ |
184 var_types var_type; | 187 var_types var_type; |
185 | 188 |
186 /* Pointer to NULL terminated list of enumerated values (like | 189 /* Pointer to NULL terminated list of enumerated values (like |
187 argv). */ | 190 argv). */ |
188 const char **enums; | 191 const char *const *enums; |
189 | 192 |
190 /* Pointer to command strings of user-defined commands */ | 193 /* Pointer to command strings of user-defined commands */ |
191 struct command_line *user_commands; | 194 struct command_line *user_commands; |
192 | 195 |
193 /* Pointer to command that is hooked by this one, (by hook_pre) | 196 /* Pointer to command that is hooked by this one, (by hook_pre) |
194 so the hook can be removed when this one is deleted. */ | 197 so the hook can be removed when this one is deleted. */ |
195 struct cmd_list_element *hookee_pre; | 198 struct cmd_list_element *hookee_pre; |
196 | 199 |
197 /* Pointer to command that is hooked by this one, (by hook_post) | 200 /* Pointer to command that is hooked by this one, (by hook_post) |
198 so the hook can be removed when this one is deleted. */ | 201 so the hook can be removed when this one is deleted. */ |
199 struct cmd_list_element *hookee_post; | 202 struct cmd_list_element *hookee_post; |
200 | 203 |
201 /* Pointer to command that is aliased by this one, so the | 204 /* Pointer to command that is aliased by this one, so the |
202 aliased command can be located in case it has been hooked. */ | 205 aliased command can be located in case it has been hooked. */ |
203 struct cmd_list_element *cmd_pointer; | 206 struct cmd_list_element *cmd_pointer; |
204 | 207 |
205 /* Start of a linked list of all aliases of this command. */ | 208 /* Start of a linked list of all aliases of this command. */ |
206 struct cmd_list_element *aliases; | 209 struct cmd_list_element *aliases; |
207 | 210 |
208 /* Link pointer for aliases on an alias list. */ | 211 /* Link pointer for aliases on an alias list. */ |
209 struct cmd_list_element *alias_chain; | 212 struct cmd_list_element *alias_chain; |
210 }; | 213 }; |
211 | 214 |
212 /* Flag for an ambiguous cmd_list result. */ | |
213 #define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1) | |
214 | |
215 /* API to the manipulation of command lists. */ | |
216 | |
217 extern struct cmd_list_element *add_cmd (char *, enum command_class, | |
218 void (*fun) (char *, int), char *, | |
219 struct cmd_list_element **); | |
220 | |
221 extern struct cmd_list_element *add_alias_cmd (char *, char *, | |
222 enum command_class, int, | |
223 struct cmd_list_element **); | |
224 | |
225 extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class, | |
226 void (*fun) (char *, int), | |
227 char *, | |
228 struct cmd_list_element **, | |
229 char *, int, | |
230 struct cmd_list_element **); | |
231 | |
232 extern struct cmd_list_element *add_abbrev_prefix_cmd (char *, | |
233 enum command_class, | |
234 void (*fun) (char *, | |
235 int), | |
236 char *, | |
237 struct cmd_list_element | |
238 **, char *, int, | |
239 struct cmd_list_element | |
240 **); | |
241 | |
242 /* Set the commands corresponding callback. */ | |
243 | |
244 extern void set_cmd_cfunc (struct cmd_list_element *cmd, | |
245 void (*cfunc) (char *args, int from_tty)); | |
246 | |
247 extern void set_cmd_sfunc (struct cmd_list_element *cmd, | |
248 void (*sfunc) (char *args, int from_tty, | |
249 struct cmd_list_element * c)); | |
250 | |
251 extern void set_cmd_completer (struct cmd_list_element *cmd, | |
252 char **(*completer) (struct cmd_list_element *sel
f, | |
253 char *text, char *word)); | |
254 | |
255 /* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs | |
256 around in cmd objects to test the value of the commands sfunc(). */ | |
257 extern int cmd_cfunc_eq (struct cmd_list_element *cmd, | |
258 void (*cfunc) (char *args, int from_tty)); | |
259 | |
260 /* Access to the command's local context. */ | |
261 extern void set_cmd_context (struct cmd_list_element *cmd, void *context); | |
262 extern void *get_cmd_context (struct cmd_list_element *cmd); | |
263 | |
264 extern struct cmd_list_element *lookup_cmd (char **, | |
265 struct cmd_list_element *, char *, | |
266 int, int); | |
267 | |
268 extern struct cmd_list_element *lookup_cmd_1 (char **, | |
269 struct cmd_list_element *, | |
270 struct cmd_list_element **, | |
271 int); | |
272 | |
273 extern struct cmd_list_element * | |
274 deprecate_cmd (struct cmd_list_element *, char * ); | |
275 | |
276 extern void | |
277 deprecated_cmd_warning (char **); | |
278 | |
279 extern int | |
280 lookup_cmd_composition (char *text, | |
281 struct cmd_list_element **alias, | |
282 struct cmd_list_element **prefix_cmd, | |
283 struct cmd_list_element **cmd); | |
284 | |
285 extern struct cmd_list_element *add_com (char *, enum command_class, | |
286 void (*fun) (char *, int), char *); | |
287 | |
288 extern struct cmd_list_element *add_com_alias (char *, char *, | |
289 enum command_class, int); | |
290 | |
291 extern struct cmd_list_element *add_info (char *, void (*fun) (char *, int), | |
292 char *); | |
293 | |
294 extern struct cmd_list_element *add_info_alias (char *, char *, int); | |
295 | |
296 extern char **complete_on_cmdlist (struct cmd_list_element *, char *, char *); | |
297 | |
298 extern char **complete_on_enum (const char *enumlist[], char *, char *); | |
299 | |
300 extern void help_cmd_list (struct cmd_list_element *, enum command_class, | 215 extern void help_cmd_list (struct cmd_list_element *, enum command_class, |
301 char *, int, struct ui_file *); | 216 char *, int, struct ui_file *); |
302 | 217 |
303 /* Functions that implement commands about CLI commands. */ | 218 /* Functions that implement commands about CLI commands. */ |
304 | 219 |
305 extern void help_cmd (char *, struct ui_file *); | 220 extern void help_cmd (char *, struct ui_file *); |
306 | 221 |
307 extern void help_list (struct cmd_list_element *, char *, | |
308 enum command_class, struct ui_file *); | |
309 | |
310 extern void apropos_cmd (struct ui_file *, struct cmd_list_element *, | 222 extern void apropos_cmd (struct ui_file *, struct cmd_list_element *, |
311 struct re_pattern_buffer *, char *); | 223 struct re_pattern_buffer *, char *); |
312 | 224 |
313 /* Used to mark commands that don't do anything. If we just leave the | 225 /* Used to mark commands that don't do anything. If we just leave the |
314 function field NULL, the command is interpreted as a help topic, or | 226 function field NULL, the command is interpreted as a help topic, or |
315 as a class of commands. */ | 227 as a class of commands. */ |
316 | 228 |
317 extern void not_just_help_class_command (char *arg, int from_tty); | 229 extern void not_just_help_class_command (char *arg, int from_tty); |
318 | 230 |
319 /* Exported to cli/cli-setshow.c */ | 231 /* Exported to cli/cli-setshow.c */ |
320 | 232 |
321 extern void print_doc_line (struct ui_file *, char *); | 233 extern void print_doc_line (struct ui_file *, char *); |
322 | 234 |
323 | 235 |
324 #endif /* !defined (CLI_DECODE_H) */ | 236 #endif /* !defined (CLI_DECODE_H) */ |
OLD | NEW |