Commit | Line | Data |
---|---|---|
fb40c209 | 1 | /* MI Command Set - MI Command Parser. |
b811d2c2 | 2 | Copyright (C) 2000-2020 Free Software Foundation, Inc. |
ab91fdd5 | 3 | Contributed by Cygnus Solutions (a Red Hat company). |
fb40c209 AC |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
a9762ec7 | 9 | the Free Software Foundation; either version 3 of the License, or |
fb40c209 AC |
10 | (at your option) any later version. |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
a9762ec7 | 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
fb40c209 | 19 | |
1a5c2598 TT |
20 | #ifndef MI_MI_PARSE_H |
21 | #define MI_MI_PARSE_H | |
fb40c209 | 22 | |
268a13a5 | 23 | #include "gdbsupport/run-time-clock.h" |
dcb07cfa | 24 | #include <chrono> |
66c80d03 | 25 | #include "mi-cmds.h" /* For enum print_values. */ |
6a089cf2 | 26 | |
fb40c209 AC |
27 | /* MI parser */ |
28 | ||
d8c83789 | 29 | /* Timestamps for current command and last asynchronous command. */ |
dcb07cfa PA |
30 | struct mi_timestamp |
31 | { | |
32 | std::chrono::steady_clock::time_point wallclock; | |
33 | user_cpu_time_clock::time_point utime; | |
34 | system_cpu_time_clock::time_point stime; | |
d8c83789 NR |
35 | }; |
36 | ||
fb40c209 AC |
37 | enum mi_command_type |
38 | { | |
39 | MI_COMMAND, CLI_COMMAND | |
40 | }; | |
41 | ||
42 | struct mi_parse | |
43 | { | |
4d89769a TT |
44 | mi_parse (); |
45 | ~mi_parse (); | |
46 | ||
d6541620 | 47 | DISABLE_COPY_AND_ASSIGN (mi_parse); |
4d89769a | 48 | |
fb40c209 AC |
49 | enum mi_command_type op; |
50 | char *command; | |
51 | char *token; | |
52 | const struct mi_cmd *cmd; | |
d8c83789 | 53 | struct mi_timestamp *cmd_start; |
fb40c209 AC |
54 | char *args; |
55 | char **argv; | |
56 | int argc; | |
a79b8f6e VP |
57 | int all; |
58 | int thread_group; /* At present, the same as inferior number. */ | |
1e92afda VP |
59 | int thread; |
60 | int frame; | |
403cb6b1 JB |
61 | |
62 | /* The language that should be used to evaluate the MI command. | |
63 | Ignored if set to language_unknown. */ | |
64 | enum language language; | |
fb40c209 AC |
65 | }; |
66 | ||
305aeedc TT |
67 | /* Attempts to parse CMD returning a ``struct mi_parse''. If CMD is |
68 | invalid, an exception is thrown. For an MI_COMMAND COMMAND, ARGS | |
69 | and OP are initialized. Un-initialized fields are zero. *TOKEN is | |
70 | set to the token, even if an exception is thrown. It is allocated | |
71 | with xmalloc; it must either be freed with xfree, or assigned to | |
72 | the TOKEN field of the resultant mi_parse object, to be freed by | |
73 | mi_parse_free. */ | |
fb40c209 | 74 | |
4d89769a TT |
75 | extern std::unique_ptr<struct mi_parse> mi_parse (const char *cmd, |
76 | char **token); | |
fb40c209 | 77 | |
87967e27 YQ |
78 | /* Parse a string argument into a print_values value. */ |
79 | ||
80 | enum print_values mi_parse_print_values (const char *name); | |
81 | ||
1a5c2598 | 82 | #endif /* MI_MI_PARSE_H */ |