1/* MI Command Set - MI Command Parser.
2   Copyright 2000 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 2 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, write to the Free Software
19   Foundation, Inc., 59 Temple Place - Suite 330,
20   Boston, MA 02111-1307, USA.  */
21
22#ifndef MI_PARSE_H
23#define MI_PARSE_H
24
25/* MI parser */
26
27enum mi_command_type
28  {
29    MI_COMMAND, CLI_COMMAND
30  };
31
32struct mi_parse
33  {
34    enum mi_command_type op;
35    char *command;
36    char *token;
37    const struct mi_cmd *cmd;
38    char *args;
39    char **argv;
40    int argc;
41  };
42
43/* Attempts to parse CMD returning a ``struct mi_command''.  If CMD is
44   invalid, an error mesage is reported (MI format) and NULL is
45   returned. For a CLI_COMMAND, COMMAND, TOKEN and OP are initialized.
46   For an MI_COMMAND COMMAND, TOKEN, ARGS and OP are
47   initialized. Un-initialized fields are zero. */
48
49extern struct mi_parse *mi_parse (char *cmd);
50
51/* Free a command returned by mi_parse_command. */
52
53extern void mi_parse_free (struct mi_parse *cmd);
54
55#endif
56