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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [command.h] - Blame information for rev 1767

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

Line No. Rev Author Line
1 578 markom
/* ***DEPRECATED***  The gdblib files must not be calling/using things in any
2
   of the possible command languages.  If necessary, a hook (that may be
3
   present or not) must be used and set to the appropriate routine by any
4
   command language that cares about it.  If you are having to include this
5
   file you are possibly doing things the old way.  This file will disapear.
6
   2000-12-01 fnasser@redhat.com    */
7
 
8
/* Header file for command-reading library command.c.
9
   Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000
10
   Free Software Foundation, Inc.
11
 
12
   This program is free software; you can redistribute it and/or modify
13
   it under the terms of the GNU General Public License as published by
14
   the Free Software Foundation; either version 2 of the License, or
15
   (at your option) any later version.
16
 
17
   This program is distributed in the hope that it will be useful,
18
   but WITHOUT ANY WARRANTY; without even the implied warranty of
19
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
   GNU General Public License for more details.
21
 
22
   You should have received a copy of the GNU General Public License
23
   along with this program; if not, write to the Free Software
24
   Foundation, Inc., 59 Temple Place - Suite 330,
25
   Boston, MA 02111-1307, USA.  */
26
 
27
#if !defined (COMMAND_H)
28
#define COMMAND_H 1
29
 
30
/* Command classes are top-level categories into which commands are broken
31
   down for "help" purposes.
32
   Notes on classes: class_alias is for alias commands which are not
33
   abbreviations of the original command.  class-pseudo is for
34
   commands which are not really commands nor help topics ("stop").  */
35
 
36
enum command_class
37
{
38
  /* Special args to help_list */
39
  class_deprecated, all_classes = -2, all_commands = -1,
40
  /* Classes of commands */
41
  no_class = -1, class_run = 0, class_vars, class_stack,
42
  class_files, class_support, class_info, class_breakpoint, class_trace,
43
  class_alias, class_obscure, class_user, class_maintenance,
44
  class_pseudo, class_tui, class_xdb
45
};
46
 
47
/* Not a set/show command.  Note that some commands which begin with
48
   "set" or "show" might be in this category, if their syntax does
49
   not fall into one of the following categories.  */
50
typedef enum cmd_types
51
  {
52
    not_set_cmd,
53
    set_cmd,
54
    show_cmd
55
  }
56
cmd_types;
57
 
58
/* Reasonable values for an AUTO_BOOLEAN variable. */
59
enum cmd_auto_boolean
60
{
61
  CMD_AUTO_BOOLEAN_TRUE,
62
  CMD_AUTO_BOOLEAN_FALSE,
63
  CMD_AUTO_BOOLEAN_AUTO
64
};
65
 
66
/* Types of "set" or "show" command.  */
67
typedef enum var_types
68
  {
69
    /* "on" or "off".  *VAR is an integer which is nonzero for on,
70
       zero for off.  */
71
    var_boolean,
72
 
73
    /* "on" / "true" / "enable" or "off" / "false" / "disable" or
74
       "auto.  *VAR is an ``enum cmd_auto_boolean''.  NOTE: In general
75
       a custom show command will need to be implemented - one that
76
       for "auto" prints both the "auto" and the current auto-selected
77
       value. */
78
    var_auto_boolean,
79
 
80
    /* Unsigned Integer.  *VAR is an unsigned int.  The user can type 0
81
       to mean "unlimited", which is stored in *VAR as UINT_MAX.  */
82
    var_uinteger,
83
 
84
    /* Like var_uinteger but signed.  *VAR is an int.  The user can type 0
85
       to mean "unlimited", which is stored in *VAR as INT_MAX.  */
86
    var_integer,
87
 
88
    /* String which the user enters with escapes (e.g. the user types \n and
89
       it is a real newline in the stored string).
90
       *VAR is a malloc'd string, or NULL if the string is empty.  */
91
    var_string,
92
    /* String which stores what the user types verbatim.
93
       *VAR is a malloc'd string, or NULL if the string is empty.  */
94
    var_string_noescape,
95
    /* String which stores a filename.
96
       *VAR is a malloc'd string, or NULL if the string is empty.  */
97
    var_filename,
98
    /* ZeroableInteger.  *VAR is an int.  Like Unsigned Integer except
99
       that zero really means zero.  */
100
    var_zinteger,
101
    /* Enumerated type.  Can only have one of the specified values.  *VAR is a
102
       char pointer to the name of the element that we find.  */
103
    var_enum
104
  }
105
var_types;
106
 
107
/* This structure records one command'd definition.  */
108
 
109
 
110
/* This flag is used by the code executing commands to warn the user
111
   the first time a deprecated command is used, see the 'flags' field in
112
   the following struct.
113
*/
114
#define CMD_DEPRECATED            0x1
115
#define DEPRECATED_WARN_USER      0x2
116
#define MALLOCED_REPLACEMENT      0x4
117
 
118
struct cmd_list_element
119
  {
120
    /* Points to next command in this list.  */
121
    struct cmd_list_element *next;
122
 
123
    /* Name of this command.  */
124
    char *name;
125
 
126
    /* Command class; class values are chosen by application program.  */
127
    enum command_class class;
128
 
129
    /* Function definition of this command.
130
       NO_FUNCTION for command class names and for help topics that
131
       are not really commands.  */
132
    union
133
      {
134
        /* If type is not_set_cmd, call it like this:  */
135
        void (*cfunc) (char *args, int from_tty);
136
 
137
        /* If type is cmd_set or show_cmd, first set the variables, and
138
           then call this.  */
139
        void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c);
140
      }
141
    function;
142
#define NO_FUNCTION ((void (*) (char *args, int from_tty)) 0)
143
 
144
    /* Documentation of this command (or help topic).
145
       First line is brief documentation; remaining lines form, with it,
146
       the full documentation.  First line should end with a period.
147
       Entire string should also end with a period, not a newline.  */
148
    char *doc;
149
 
150
    /* flags : a bitfield
151
 
152
       bit 0: (LSB) CMD_DEPRECATED, when 1 indicated that this command
153
       is deprecated. It may be removed from gdb's command set in the
154
       future.
155
 
156
       bit 1: DEPRECATED_WARN_USER, the user needs to be warned that
157
       this is a deprecated command.  The user should only be warned
158
       the first time a command is used.
159
 
160
       bit 2: MALLOCED_REPLACEMENT, when functions are deprecated at
161
       compile time (this is the way it should, in general, be done)
162
       the memory containing the replacement string is statically
163
       allocated.  In some cases it makes sense to deprecate commands
164
       at runtime (the testsuite is one example).  In this case the
165
       memory for replacement is malloc'ed.  When a command is
166
       undeprecated or re-deprecated at runtime we don't want to risk
167
       calling free on statically allocated memory, so we check this
168
       flag.
169
     */
170
    int flags;
171
 
172
    /* if this command is deprecated, this is the replacement name */
173
    char *replacement;
174
 
175
    /* Hook for another command to be executed before this command.  */
176
    struct cmd_list_element *hook_pre;
177
 
178
    /* Hook for another command to be executed after this command.  */
179
    struct cmd_list_element *hook_post;
180
 
181
    /* Flag that specifies if this command is already running it's hook. */
182
    /* Prevents the possibility of hook recursion. */
183
    int hook_in;
184
 
185
    /* Nonzero identifies a prefix command.  For them, the address
186
       of the variable containing the list of subcommands.  */
187
    struct cmd_list_element **prefixlist;
188
 
189
    /* For prefix commands only:
190
       String containing prefix commands to get here: this one
191
       plus any others needed to get to it.  Should end in a space.
192
       It is used before the word "command" in describing the
193
       commands reached through this prefix.  */
194
    char *prefixname;
195
 
196
    /* For prefix commands only:
197
       nonzero means do not get an error if subcommand is not
198
       recognized; call the prefix's own function in that case.  */
199
    char allow_unknown;
200
 
201
    /* Nonzero says this is an abbreviation, and should not
202
       be mentioned in lists of commands.
203
       This allows "br<tab>" to complete to "break", which it
204
       otherwise wouldn't.  */
205
    char abbrev_flag;
206
 
207
    /* Completion routine for this command.  TEXT is the text beyond
208
       what was matched for the command itself (leading whitespace is
209
       skipped).  It stops where we are supposed to stop completing
210
       (rl_point) and is '\0' terminated.
211
 
212
       Return value is a malloc'd vector of pointers to possible completions
213
       terminated with NULL.  If there are no completions, returning a pointer
214
       to a NULL would work but returning NULL itself is also valid.
215
       WORD points in the same buffer as TEXT, and completions should be
216
       returned relative to this position.  For example, suppose TEXT is "foo"
217
       and we want to complete to "foobar".  If WORD is "oo", return
218
       "oobar"; if WORD is "baz/foo", return "baz/foobar".  */
219
    char **(*completer) (char *text, char *word);
220
 
221
    /* Type of "set" or "show" command (or SET_NOT_SET if not "set"
222
       or "show").  */
223
    cmd_types type;
224
 
225
    /* Pointer to variable affected by "set" and "show".  Doesn't matter
226
       if type is not_set.  */
227
    void *var;
228
 
229
    /* What kind of variable is *VAR?  */
230
    var_types var_type;
231
 
232
    /* Pointer to NULL terminated list of enumerated values (like argv).  */
233
    const char **enums;
234
 
235
    /* Pointer to command strings of user-defined commands */
236
    struct command_line *user_commands;
237
 
238
    /* Pointer to command that is hooked by this one, (by hook_pre)
239
       so the hook can be removed when this one is deleted.  */
240
    struct cmd_list_element *hookee_pre;
241
 
242
    /* Pointer to command that is hooked by this one, (by hook_post)
243
       so the hook can be removed when this one is deleted.  */
244
    struct cmd_list_element *hookee_post;
245
 
246
    /* Pointer to command that is aliased by this one, so the
247
       aliased command can be located in case it has been hooked.  */
248
    struct cmd_list_element *cmd_pointer;
249
  };
250
 
251
/* Forward-declarations of the entry-points of command.c.  */
252
 
253
extern struct cmd_list_element *add_cmd (char *, enum command_class,
254
                                         void (*fun) (char *, int), char *,
255
                                         struct cmd_list_element **);
256
 
257
extern struct cmd_list_element *add_alias_cmd (char *, char *,
258
                                               enum command_class, int,
259
                                               struct cmd_list_element **);
260
 
261
extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class,
262
                                                void (*fun) (char *, int),
263
                                                char *,
264
                                                struct cmd_list_element **,
265
                                                char *, int,
266
                                                struct cmd_list_element **);
267
 
268
extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
269
                                                       enum command_class,
270
                                                       void (*fun) (char *,
271
                                                                    int),
272
                                                       char *,
273
                                                       struct cmd_list_element
274
                                                       **, char *, int,
275
                                                       struct cmd_list_element
276
                                                       **);
277
 
278
extern struct cmd_list_element *lookup_cmd (char **,
279
                                            struct cmd_list_element *, char *,
280
                                            int, int);
281
 
282
extern struct cmd_list_element *lookup_cmd_1 (char **,
283
                                              struct cmd_list_element *,
284
                                              struct cmd_list_element **,
285
                                              int);
286
 
287
extern struct cmd_list_element *
288
  deprecate_cmd (struct cmd_list_element *, char * );
289
 
290
extern void
291
  deprecated_cmd_warning (char **);
292
 
293
extern int
294
  lookup_cmd_composition (char *text,
295
                        struct cmd_list_element **alias,
296
                        struct cmd_list_element **prefix_cmd,
297
                        struct cmd_list_element **cmd);
298
 
299
extern struct cmd_list_element *add_com (char *, enum command_class,
300
                                         void (*fun) (char *, int), char *);
301
 
302
extern struct cmd_list_element *add_com_alias (char *, char *,
303
                                               enum command_class, int);
304
 
305
extern struct cmd_list_element *add_info (char *, void (*fun) (char *, int),
306
                                          char *);
307
 
308
extern struct cmd_list_element *add_info_alias (char *, char *, int);
309
 
310
extern char **complete_on_cmdlist (struct cmd_list_element *, char *, char *);
311
 
312
extern char **complete_on_enum (const char *enumlist[], char *, char *);
313
 
314
extern void delete_cmd (char *, struct cmd_list_element **);
315
 
316
extern void help_cmd (char *, struct ui_file *);
317
 
318
extern void help_list (struct cmd_list_element *, char *,
319
                       enum command_class, struct ui_file *);
320
 
321
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
322
                           char *, int, struct ui_file *);
323
 
324
extern struct cmd_list_element *add_set_cmd (char *name, enum
325
                                             command_class class,
326
                                             var_types var_type, void *var,
327
                                             char *doc,
328
                                             struct cmd_list_element **list);
329
 
330
extern struct cmd_list_element *add_set_enum_cmd (char *name,
331
                                                  enum command_class class,
332
                                                  const char *enumlist[],
333
                                                  const char **var,
334
                                                  char *doc,
335
                                                  struct cmd_list_element **list);
336
 
337
extern struct cmd_list_element *add_set_auto_boolean_cmd (char *name,
338
                                                          enum command_class class,
339
                                                          enum cmd_auto_boolean *var,
340
                                                          char *doc,
341
                                                          struct cmd_list_element **list);
342
 
343
extern struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
344
                                                   struct cmd_list_element
345
                                                   **);
346
 
347
/* Do a "set" or "show" command.  ARG is NULL if no argument, or the text
348
   of the argument, and FROM_TTY is nonzero if this command is being entered
349
   directly by the user (i.e. these are just like any other
350
   command).  C is the command list element for the command.  */
351
 
352
extern void do_setshow_command (char *, int, struct cmd_list_element *);
353
 
354
/* Do a "show" command for each thing on a command list.  */
355
 
356
extern void cmd_show_list (struct cmd_list_element *, int, char *);
357
 
358
extern NORETURN void error_no_arg (char *) ATTR_NORETURN;
359
 
360
extern void dont_repeat (void);
361
 
362
/* Used to mark commands that don't do anything.  If we just leave the
363
   function field NULL, the command is interpreted as a help topic, or
364
   as a class of commands.  */
365
 
366
extern void not_just_help_class_command (char *, int);
367
 
368
#endif /* !defined (COMMAND_H) */

powered by: WebSVN 2.1.0

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