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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [gdb/] [cli/] [cli-decode.h] - Blame information for rev 1775

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

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