xref: /dragonfly/contrib/gdb-7/gdb/mi/mi-parse.h (revision ce7a3582)
1 /* MI Command Set - MI Command Parser.
2    Copyright (C) 2000, 2007, 2008, 2009, 2010, 2011
3    Free Software Foundation, Inc.
4    Contributed by Cygnus Solutions (a Red Hat company).
5 
6    This file is part of GDB.
7 
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12 
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20 
21 #ifndef MI_PARSE_H
22 #define MI_PARSE_H
23 
24 #include <sys/time.h>
25 
26 /* MI parser */
27 
28 /* Timestamps for current command and last asynchronous command.  */
29 struct mi_timestamp {
30   struct timeval wallclock;
31   struct timeval utime;
32   struct timeval stime;
33 };
34 
35 enum mi_command_type
36   {
37     MI_COMMAND, CLI_COMMAND
38   };
39 
40 struct mi_parse
41   {
42     enum mi_command_type op;
43     char *command;
44     char *token;
45     const struct mi_cmd *cmd;
46     struct mi_timestamp *cmd_start;
47     char *args;
48     char **argv;
49     int argc;
50     int all;
51     int thread_group; /* At present, the same as inferior number.  */
52     int thread;
53     int frame;
54   };
55 
56 /* Attempts to parse CMD returning a ``struct mi_parse''.  If CMD is
57    invalid, an exception is thrown.  For an MI_COMMAND COMMAND, ARGS
58    and OP are initialized.  Un-initialized fields are zero.  *TOKEN is
59    set to the token, even if an exception is thrown.  It is allocated
60    with xmalloc; it must either be freed with xfree, or assigned to
61    the TOKEN field of the resultant mi_parse object, to be freed by
62    mi_parse_free.  */
63 
64 extern struct mi_parse *mi_parse (char *cmd, char **token);
65 
66 /* Free a command returned by mi_parse_command. */
67 
68 extern void mi_parse_free (struct mi_parse *cmd);
69 
70 #endif
71