Commit | Line | Data |
---|---|---|
fb40c209 | 1 | /* MI Command Set - MI Command Parser. |
7b6bb8da JB |
2 | Copyright (C) 2000, 2007, 2008, 2009, 2010, 2011 |
3 | Free Software Foundation, Inc. | |
ab91fdd5 | 4 | Contributed by Cygnus Solutions (a Red Hat company). |
fb40c209 AC |
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 | |
a9762ec7 | 10 | the Free Software Foundation; either version 3 of the License, or |
fb40c209 AC |
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 | |
a9762ec7 | 19 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
fb40c209 AC |
20 | |
21 | #ifndef MI_PARSE_H | |
22 | #define MI_PARSE_H | |
23 | ||
6a089cf2 DJ |
24 | #include <sys/time.h> |
25 | ||
fb40c209 AC |
26 | /* MI parser */ |
27 | ||
d8c83789 NR |
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 | ||
fb40c209 AC |
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; | |
d8c83789 | 46 | struct mi_timestamp *cmd_start; |
fb40c209 AC |
47 | char *args; |
48 | char **argv; | |
49 | int argc; | |
a79b8f6e VP |
50 | int all; |
51 | int thread_group; /* At present, the same as inferior number. */ | |
1e92afda VP |
52 | int thread; |
53 | int frame; | |
fb40c209 AC |
54 | }; |
55 | ||
305aeedc TT |
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. */ | |
fb40c209 | 63 | |
305aeedc | 64 | extern struct mi_parse *mi_parse (char *cmd, char **token); |
fb40c209 AC |
65 | |
66 | /* Free a command returned by mi_parse_command. */ | |
67 | ||
68 | extern void mi_parse_free (struct mi_parse *cmd); | |
69 | ||
70 | #endif |