1/* Header file for GDB CLI set and show commands implementation.
2   Copyright (C) 2000-2020 Free Software Foundation, Inc.
3
4   This program is free software; you can redistribute it and/or modify
5   it under the terms of the GNU General Public License as published by
6   the Free Software Foundation; either version 3 of the License, or
7   (at your option) any later version.
8
9   This program is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   GNU General Public License for more details.
13
14   You should have received a copy of the GNU General Public License
15   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
16
17#ifndef CLI_CLI_SETSHOW_H
18#define CLI_CLI_SETSHOW_H
19
20#include <string>
21
22struct cmd_list_element;
23
24/* Parse ARG, an option to a boolean variable.
25   Returns 1 for true, 0 for false, and -1 if invalid.  */
26extern int parse_cli_boolean_value (const char *arg);
27
28/* Same as above, but work with a pointer to pointer.  ARG is advanced
29   past a successfully parsed value.  */
30extern int parse_cli_boolean_value (const char **arg);
31
32/* Parse ARG, an option to a var_uinteger or var_zuinteger variable.
33   Either returns the parsed value on success or throws an error.  If
34   EXPRESSION is true, *ARG is parsed as an expression; otherwise, it
35   is parsed with get_ulongest.  It's not possible to parse the
36   integer as an expression when there may be valid input after the
37   integer, such as when parsing command options.  E.g., "print
38   -elements NUMBER -obj --".  In such case, parsing as an expression
39   would parse "-obj --" as part of the expression as well.  */
40extern unsigned int parse_cli_var_uinteger (var_types var_type,
41					    const char **arg,
42					    bool expression);
43
44/* Like parse_cli_var_uinteger, for var_zuinteger_unlimited.  */
45extern int parse_cli_var_zuinteger_unlimited (const char **arg,
46					      bool expression);
47
48/* Parse ARG, an option to a var_enum variable.  ENUM is a
49   null-terminated array of possible values. Either returns the parsed
50   value on success or throws an error.  ARG is advanced past the
51   parsed value.  */
52const char *parse_cli_var_enum (const char **args,
53				const char *const *enums);
54
55extern void do_set_command (const char *arg, int from_tty,
56			    struct cmd_list_element *c);
57extern void do_show_command (const char *arg, int from_tty,
58			     struct cmd_list_element *c);
59
60/* Get a string version of C's current value.  */
61extern std::string get_setshow_command_value_string (const cmd_list_element *c);
62
63extern void cmd_show_list (struct cmd_list_element *list, int from_tty);
64
65#endif /* CLI_CLI_SETSHOW_H */
66