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