mi-parse.h revision 1.3
1/* MI Command Set - MI Command Parser.
2   Copyright (C) 2000-2015 Free Software Foundation, Inc.
3   Contributed by Cygnus Solutions (a Red Hat company).
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
9   the Free Software Foundation; either version 3 of the License, or
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
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20#ifndef MI_PARSE_H
21#define MI_PARSE_H
22
23#include <sys/time.h>
24
25/* MI parser */
26
27/* Timestamps for current command and last asynchronous command.  */
28struct mi_timestamp {
29  struct timeval wallclock;
30  struct timeval utime;
31  struct timeval stime;
32};
33
34enum mi_command_type
35  {
36    MI_COMMAND, CLI_COMMAND
37  };
38
39struct mi_parse
40  {
41    enum mi_command_type op;
42    char *command;
43    char *token;
44    const struct mi_cmd *cmd;
45    struct mi_timestamp *cmd_start;
46    char *args;
47    char **argv;
48    int argc;
49    int all;
50    int thread_group; /* At present, the same as inferior number.  */
51    int thread;
52    int frame;
53
54    /* The language that should be used to evaluate the MI command.
55       Ignored if set to language_unknown.  */
56    enum language language;
57  };
58
59/* Attempts to parse CMD returning a ``struct mi_parse''.  If CMD is
60   invalid, an exception is thrown.  For an MI_COMMAND COMMAND, ARGS
61   and OP are initialized.  Un-initialized fields are zero.  *TOKEN is
62   set to the token, even if an exception is thrown.  It is allocated
63   with xmalloc; it must either be freed with xfree, or assigned to
64   the TOKEN field of the resultant mi_parse object, to be freed by
65   mi_parse_free.  */
66
67extern struct mi_parse *mi_parse (const char *cmd, char **token);
68
69/* Free a command returned by mi_parse_command.  */
70
71extern void mi_parse_free (struct mi_parse *cmd);
72
73/* Parse a string argument into a print_values value.  */
74
75enum print_values mi_parse_print_values (const char *name);
76
77#endif
78