OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [cli/] [cli-decode.h] - Blame information for rev 855

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
/* Header file for GDB command decoding library.
2
 
3
   Copyright (c) 2000, 2003, 2007, 2008, 2009, 2010
4
   Free Software Foundation, Inc.
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 3 of the License, or
9
   (at your option) any later version.
10
 
11
   This program is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18
 
19
#if !defined (CLI_DECODE_H)
20
#define CLI_DECODE_H 1
21
 
22
#include "command.h"
23
 
24
struct re_pattern_buffer;
25
 
26
#if 0
27
/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
28
   cmd_types'' can be moved from "command.h" to "cli-decode.h".  */
29
/* Not a set/show command.  Note that some commands which begin with
30
   "set" or "show" might be in this category, if their syntax does
31
   not fall into one of the following categories.  */
32
typedef enum cmd_types
33
  {
34
    not_set_cmd,
35
    set_cmd,
36
    show_cmd
37
  }
38
cmd_types;
39
#endif
40
 
41
/* This structure records one command'd definition.  */
42
 
43
 
44
/* This flag is used by the code executing commands to warn the user
45
   the first time a deprecated command is used, see the 'flags' field in
46
   the following struct.
47
*/
48
#define CMD_DEPRECATED            0x1
49
#define DEPRECATED_WARN_USER      0x2
50
#define MALLOCED_REPLACEMENT      0x4
51
 
52
struct cmd_list_element
53
  {
54
    /* Points to next command in this list.  */
55
    struct cmd_list_element *next;
56
 
57
    /* Name of this command.  */
58
    char *name;
59
 
60
    /* Command class; class values are chosen by application program.  */
61
    enum command_class class;
62
 
63
    /* Function definition of this command.  NULL for command class
64
       names and for help topics that are not really commands.  NOTE:
65
       cagney/2002-02-02: This function signature is evolving.  For
66
       the moment suggest sticking with either set_cmd_cfunc() or
67
       set_cmd_sfunc().  */
68
    void (*func) (struct cmd_list_element *c, char *args, int from_tty);
69
    /* The command's real callback.  At present func() bounces through
70
       to one of the below.  */
71
    union
72
      {
73
        /* If type is not_set_cmd, call it like this: */
74
        cmd_cfunc_ftype *cfunc;
75
        /* If type is set_cmd or show_cmd, first set the variables,
76
           and then call this: */
77
        cmd_sfunc_ftype *sfunc;
78
      }
79
    function;
80
 
81
    /* Local state (context) for this command.  This can be anything.  */
82
    void *context;
83
 
84
    /* Documentation of this command (or help topic).
85
       First line is brief documentation; remaining lines form, with it,
86
       the full documentation.  First line should end with a period.
87
       Entire string should also end with a period, not a newline.  */
88
    char *doc;
89
 
90
    /* For set/show commands.  A method for printing the output to the
91
       specified stream.  */
92
    show_value_ftype *show_value_func;
93
 
94
    /* flags : a bitfield
95
 
96
       bit 0: (LSB) CMD_DEPRECATED, when 1 indicated that this command
97
       is deprecated. It may be removed from gdb's command set in the
98
       future.
99
 
100
       bit 1: DEPRECATED_WARN_USER, the user needs to be warned that
101
       this is a deprecated command.  The user should only be warned
102
       the first time a command is used.
103
 
104
       bit 2: MALLOCED_REPLACEMENT, when functions are deprecated at
105
       compile time (this is the way it should, in general, be done)
106
       the memory containing the replacement string is statically
107
       allocated.  In some cases it makes sense to deprecate commands
108
       at runtime (the testsuite is one example).  In this case the
109
       memory for replacement is malloc'ed.  When a command is
110
       undeprecated or re-deprecated at runtime we don't want to risk
111
       calling free on statically allocated memory, so we check this
112
       flag.
113
     */
114
    int flags;
115
 
116
    /* If this command is deprecated, this is the replacement name.  */
117
    char *replacement;
118
 
119
    /* If this command represents a show command, then this function
120
       is called before the variable's value is examined.  */
121
    void (*pre_show_hook) (struct cmd_list_element *c);
122
 
123
    /* Hook for another command to be executed before this command.  */
124
    struct cmd_list_element *hook_pre;
125
 
126
    /* Hook for another command to be executed after this command.  */
127
    struct cmd_list_element *hook_post;
128
 
129
    /* Flag that specifies if this command is already running its hook.  */
130
    /* Prevents the possibility of hook recursion.  */
131
    int hook_in;
132
 
133
    /* Nonzero identifies a prefix command.  For them, the address
134
       of the variable containing the list of subcommands.  */
135
    struct cmd_list_element **prefixlist;
136
 
137
    /* For prefix commands only:
138
       String containing prefix commands to get here: this one
139
       plus any others needed to get to it.  Should end in a space.
140
       It is used before the word "command" in describing the
141
       commands reached through this prefix.  */
142
    char *prefixname;
143
 
144
    /* For prefix commands only:
145
       nonzero means do not get an error if subcommand is not
146
       recognized; call the prefix's own function in that case.  */
147
    char allow_unknown;
148
 
149
    /* Nonzero says this is an abbreviation, and should not
150
       be mentioned in lists of commands.
151
       This allows "br<tab>" to complete to "break", which it
152
       otherwise wouldn't.  */
153
    char abbrev_flag;
154
 
155
    /* Completion routine for this command.  TEXT is the text beyond
156
       what was matched for the command itself (leading whitespace is
157
       skipped).  It stops where we are supposed to stop completing
158
       (rl_point) and is '\0' terminated.
159
 
160
       Return value is a malloc'd vector of pointers to possible completions
161
       terminated with NULL.  If there are no completions, returning a pointer
162
       to a NULL would work but returning NULL itself is also valid.
163
       WORD points in the same buffer as TEXT, and completions should be
164
       returned relative to this position.  For example, suppose TEXT is "foo"
165
       and we want to complete to "foobar".  If WORD is "oo", return
166
       "oobar"; if WORD is "baz/foo", return "baz/foobar".  */
167
    char **(*completer) (struct cmd_list_element *cmd, char *text, char *word);
168
 
169
    /* Destruction routine for this command.  If non-NULL, this is
170
       called when this command instance is destroyed.  This may be
171
       used to finalize the CONTEXT field, if needed.  */
172
    void (*destroyer) (struct cmd_list_element *self, void *context);
173
 
174
    /* Type of "set" or "show" command (or SET_NOT_SET if not "set"
175
       or "show").  */
176
    cmd_types type;
177
 
178
    /* Pointer to variable affected by "set" and "show".  Doesn't matter
179
       if type is not_set.  */
180
    void *var;
181
 
182
    /* What kind of variable is *VAR?  */
183
    var_types var_type;
184
 
185
    /* Pointer to NULL terminated list of enumerated values (like argv).  */
186
    const char **enums;
187
 
188
    /* Pointer to command strings of user-defined commands */
189
    struct command_line *user_commands;
190
 
191
    /* Pointer to command that is hooked by this one, (by hook_pre)
192
       so the hook can be removed when this one is deleted.  */
193
    struct cmd_list_element *hookee_pre;
194
 
195
    /* Pointer to command that is hooked by this one, (by hook_post)
196
       so the hook can be removed when this one is deleted.  */
197
    struct cmd_list_element *hookee_post;
198
 
199
    /* Pointer to command that is aliased by this one, so the
200
       aliased command can be located in case it has been hooked.  */
201
    struct cmd_list_element *cmd_pointer;
202
 
203
    /* Start of a linked list of all aliases of this command.  */
204
    struct cmd_list_element *aliases;
205
 
206
    /* Link pointer for aliases on an alias list.  */
207
    struct cmd_list_element *alias_chain;
208
  };
209
 
210
/* API to the manipulation of command lists.  */
211
 
212
extern struct cmd_list_element *add_cmd (char *, enum command_class,
213
                                         void (*fun) (char *, int), char *,
214
                                         struct cmd_list_element **);
215
 
216
extern struct cmd_list_element *add_alias_cmd (char *, char *,
217
                                               enum command_class, int,
218
                                               struct cmd_list_element **);
219
 
220
extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class,
221
                                                void (*fun) (char *, int),
222
                                                char *,
223
                                                struct cmd_list_element **,
224
                                                char *, int,
225
                                                struct cmd_list_element **);
226
 
227
extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
228
                                                       enum command_class,
229
                                                       void (*fun) (char *,
230
                                                                    int),
231
                                                       char *,
232
                                                       struct cmd_list_element
233
                                                       **, char *, int,
234
                                                       struct cmd_list_element
235
                                                       **);
236
 
237
/* Set the commands corresponding callback.  */
238
 
239
extern void set_cmd_cfunc (struct cmd_list_element *cmd,
240
                           void (*cfunc) (char *args, int from_tty));
241
 
242
extern void set_cmd_sfunc (struct cmd_list_element *cmd,
243
                           void (*sfunc) (char *args, int from_tty,
244
                                          struct cmd_list_element * c));
245
 
246
extern void set_cmd_completer (struct cmd_list_element *cmd,
247
                               char **(*completer) (struct cmd_list_element *self,
248
                                                    char *text, char *word));
249
 
250
/* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
251
   around in cmd objects to test the value of the commands sfunc().  */
252
extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
253
                         void (*cfunc) (char *args, int from_tty));
254
 
255
/* Access to the command's local context.  */
256
extern void set_cmd_context (struct cmd_list_element *cmd, void *context);
257
extern void *get_cmd_context (struct cmd_list_element *cmd);
258
 
259
extern struct cmd_list_element *lookup_cmd (char **,
260
                                            struct cmd_list_element *, char *,
261
                                            int, int);
262
 
263
extern struct cmd_list_element *lookup_cmd_1 (char **,
264
                                              struct cmd_list_element *,
265
                                              struct cmd_list_element **,
266
                                              int);
267
 
268
extern struct cmd_list_element *
269
  deprecate_cmd (struct cmd_list_element *, char * );
270
 
271
extern void
272
  deprecated_cmd_warning (char **);
273
 
274
extern int
275
  lookup_cmd_composition (char *text,
276
                        struct cmd_list_element **alias,
277
                        struct cmd_list_element **prefix_cmd,
278
                        struct cmd_list_element **cmd);
279
 
280
extern struct cmd_list_element *add_com (char *, enum command_class,
281
                                         void (*fun) (char *, int), char *);
282
 
283
extern struct cmd_list_element *add_com_alias (char *, char *,
284
                                               enum command_class, int);
285
 
286
extern struct cmd_list_element *add_info (char *, void (*fun) (char *, int),
287
                                          char *);
288
 
289
extern struct cmd_list_element *add_info_alias (char *, char *, int);
290
 
291
extern char **complete_on_cmdlist (struct cmd_list_element *, char *, char *);
292
 
293
extern char **complete_on_enum (const char *enumlist[], char *, char *);
294
 
295
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
296
                           char *, int, struct ui_file *);
297
 
298
/* Functions that implement commands about CLI commands. */
299
 
300
extern void help_cmd (char *, struct ui_file *);
301
 
302
extern void help_list (struct cmd_list_element *, char *,
303
                       enum command_class, struct ui_file *);
304
 
305
extern void apropos_cmd (struct ui_file *, struct cmd_list_element *,
306
                         struct re_pattern_buffer *, char *);
307
 
308
/* Used to mark commands that don't do anything.  If we just leave the
309
   function field NULL, the command is interpreted as a help topic, or
310
   as a class of commands.  */
311
 
312
extern void not_just_help_class_command (char *arg, int from_tty);
313
 
314
/* Exported to cli/cli-setshow.c */
315
 
316
extern void print_doc_line (struct ui_file *, char *);
317
 
318
 
319
#endif /* !defined (CLI_DECODE_H) */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.