|  | /* Maintenance commands for testing the settings framework. | 
|  |  | 
|  | Copyright (C) 2019-2023 Free Software Foundation, Inc. | 
|  |  | 
|  | This file is part of GDB. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 3 of the License, or | 
|  | (at your option) any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | GNU General Public License for more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  |  | 
|  | #include "defs.h" | 
|  | #include "gdbcmd.h" | 
|  |  | 
|  | /* Command list for "maint set test-settings".  */ | 
|  | static cmd_list_element *maintenance_set_test_settings_list; | 
|  |  | 
|  | /* Command list for "maint show test-settings".  */ | 
|  | static cmd_list_element *maintenance_show_test_settings_list; | 
|  |  | 
|  | /* Control variables for all the "maintenance set/show test-settings | 
|  | xxx" commands.  */ | 
|  |  | 
|  | static bool maintenance_test_settings_boolean; | 
|  |  | 
|  | static auto_boolean maintenance_test_settings_auto_boolean = AUTO_BOOLEAN_AUTO; | 
|  |  | 
|  | static unsigned int maintenance_test_settings_uinteger; | 
|  |  | 
|  | static int maintenance_test_settings_integer; | 
|  |  | 
|  | static int maintenance_test_settings_zinteger; | 
|  |  | 
|  | static unsigned int maintenance_test_settings_zuinteger; | 
|  |  | 
|  | static int maintenance_test_settings_zuinteger_unlimited; | 
|  |  | 
|  | static std::string maintenance_test_settings_string; | 
|  |  | 
|  | static std::string maintenance_test_settings_string_noescape; | 
|  |  | 
|  | static std::string maintenance_test_settings_optional_filename; | 
|  |  | 
|  | static std::string maintenance_test_settings_filename; | 
|  |  | 
|  | /* Enum values for the "maintenance set/show test-settings boolean" | 
|  | commands.  */ | 
|  | static const char maintenance_test_settings_xxx[] = "xxx"; | 
|  | static const char maintenance_test_settings_yyy[] = "yyy"; | 
|  | static const char maintenance_test_settings_zzz[] = "zzz"; | 
|  |  | 
|  | static const char *const maintenance_test_settings_enums[] = { | 
|  | maintenance_test_settings_xxx, | 
|  | maintenance_test_settings_yyy, | 
|  | maintenance_test_settings_zzz, | 
|  | nullptr | 
|  | }; | 
|  |  | 
|  | static const char *maintenance_test_settings_enum | 
|  | = maintenance_test_settings_xxx; | 
|  |  | 
|  | /* The "maintenance show test-settings xxx" commands.  */ | 
|  |  | 
|  | static void | 
|  | maintenance_show_test_settings_value_cmd | 
|  | (struct ui_file *file, int from_tty, | 
|  | struct cmd_list_element *c, const char *value) | 
|  | { | 
|  | gdb_printf (file, (("%s\n")), value); | 
|  | } | 
|  |  | 
|  |  | 
|  | void _initialize_maint_test_settings (); | 
|  | void | 
|  | _initialize_maint_test_settings () | 
|  | { | 
|  | maintenance_test_settings_filename = "/foo/bar"; | 
|  |  | 
|  | add_setshow_prefix_cmd ("test-settings", class_maintenance, | 
|  | _("\ | 
|  | Set GDB internal variables used for set/show command infrastructure testing."), | 
|  | _("\ | 
|  | Show GDB internal variables used for set/show command infrastructure testing."), | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list, | 
|  | &maintenance_set_cmdlist, &maintenance_show_cmdlist); | 
|  |  | 
|  | add_setshow_boolean_cmd ("boolean", class_maintenance, | 
|  | &maintenance_test_settings_boolean, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_auto_boolean_cmd ("auto-boolean", class_maintenance, | 
|  | &maintenance_test_settings_auto_boolean, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_uinteger_cmd ("uinteger", class_maintenance, | 
|  | &maintenance_test_settings_uinteger, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_integer_cmd ("integer", class_maintenance, | 
|  | &maintenance_test_settings_integer, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_string_cmd ("string", class_maintenance, | 
|  | &maintenance_test_settings_string, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_string_noescape_cmd | 
|  | ("string-noescape", class_maintenance, | 
|  | &maintenance_test_settings_string_noescape, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_optional_filename_cmd | 
|  | ("optional-filename", class_maintenance, | 
|  | &maintenance_test_settings_optional_filename, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_filename_cmd ("filename", class_maintenance, | 
|  | &maintenance_test_settings_filename, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_zinteger_cmd ("zinteger", class_maintenance, | 
|  | &maintenance_test_settings_zinteger, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_zuinteger_cmd ("zuinteger", class_maintenance, | 
|  | &maintenance_test_settings_zuinteger, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_zuinteger_unlimited_cmd | 
|  | ("zuinteger-unlimited", class_maintenance, | 
|  | &maintenance_test_settings_zuinteger_unlimited, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  |  | 
|  | add_setshow_enum_cmd ("enum", class_maintenance, | 
|  | maintenance_test_settings_enums, | 
|  | &maintenance_test_settings_enum, _("\ | 
|  | command used for internal testing."), _("\ | 
|  | command used for internal testing."), | 
|  | nullptr, /* help_doc */ | 
|  | nullptr, /* set_cmd */ | 
|  | maintenance_show_test_settings_value_cmd, | 
|  | &maintenance_set_test_settings_list, | 
|  | &maintenance_show_test_settings_list); | 
|  | } |