1 /* Maintenance commands for testing the settings framework. 2 3 Copyright (C) 2019-2024 Free Software Foundation, Inc. 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 21 #include "cli/cli-cmds.h" 22 23 /* Command list for "maint set test-settings". */ 24 static cmd_list_element *maintenance_set_test_settings_list; 25 26 /* Command list for "maint show test-settings". */ 27 static cmd_list_element *maintenance_show_test_settings_list; 28 29 /* Control variables for all the "maintenance set/show test-settings 30 xxx" commands. */ 31 32 static bool maintenance_test_settings_boolean; 33 34 static auto_boolean maintenance_test_settings_auto_boolean = AUTO_BOOLEAN_AUTO; 35 36 static unsigned int maintenance_test_settings_uinteger; 37 38 static int maintenance_test_settings_integer; 39 40 static int maintenance_test_settings_zinteger; 41 42 static unsigned int maintenance_test_settings_zuinteger; 43 44 static int maintenance_test_settings_zuinteger_unlimited; 45 46 static std::string maintenance_test_settings_string; 47 48 static std::string maintenance_test_settings_string_noescape; 49 50 static std::string maintenance_test_settings_optional_filename; 51 52 static std::string maintenance_test_settings_filename; 53 54 /* Enum values for the "maintenance set/show test-settings boolean" 55 commands. */ 56 static const char maintenance_test_settings_xxx[] = "xxx"; 57 static const char maintenance_test_settings_yyy[] = "yyy"; 58 static const char maintenance_test_settings_zzz[] = "zzz"; 59 60 static const char *const maintenance_test_settings_enums[] = { 61 maintenance_test_settings_xxx, 62 maintenance_test_settings_yyy, 63 maintenance_test_settings_zzz, 64 nullptr 65 }; 66 67 static const char *maintenance_test_settings_enum 68 = maintenance_test_settings_xxx; 69 70 /* The "maintenance show test-settings xxx" commands. */ 71 72 static void 73 maintenance_show_test_settings_value_cmd 74 (struct ui_file *file, int from_tty, 75 struct cmd_list_element *c, const char *value) 76 { 77 gdb_printf (file, (("%s\n")), value); 78 } 79 80 81 void _initialize_maint_test_settings (); 82 void 83 _initialize_maint_test_settings () 84 { 85 maintenance_test_settings_filename = "/foo/bar"; 86 87 add_setshow_prefix_cmd ("test-settings", class_maintenance, 88 _("\ 89 Set GDB internal variables used for set/show command infrastructure testing."), 90 _("\ 91 Show GDB internal variables used for set/show command infrastructure testing."), 92 &maintenance_set_test_settings_list, 93 &maintenance_show_test_settings_list, 94 &maintenance_set_cmdlist, &maintenance_show_cmdlist); 95 96 add_setshow_boolean_cmd ("boolean", class_maintenance, 97 &maintenance_test_settings_boolean, _("\ 98 command used for internal testing."), _("\ 99 command used for internal testing."), 100 nullptr, /* help_doc */ 101 nullptr, /* set_cmd */ 102 maintenance_show_test_settings_value_cmd, 103 &maintenance_set_test_settings_list, 104 &maintenance_show_test_settings_list); 105 106 add_setshow_auto_boolean_cmd ("auto-boolean", class_maintenance, 107 &maintenance_test_settings_auto_boolean, _("\ 108 command used for internal testing."), _("\ 109 command used for internal testing."), 110 nullptr, /* help_doc */ 111 nullptr, /* set_cmd */ 112 maintenance_show_test_settings_value_cmd, 113 &maintenance_set_test_settings_list, 114 &maintenance_show_test_settings_list); 115 116 add_setshow_uinteger_cmd ("uinteger", class_maintenance, 117 &maintenance_test_settings_uinteger, _("\ 118 command used for internal testing."), _("\ 119 command used for internal testing."), 120 nullptr, /* help_doc */ 121 nullptr, /* set_cmd */ 122 maintenance_show_test_settings_value_cmd, 123 &maintenance_set_test_settings_list, 124 &maintenance_show_test_settings_list); 125 126 add_setshow_integer_cmd ("integer", class_maintenance, 127 &maintenance_test_settings_integer, _("\ 128 command used for internal testing."), _("\ 129 command used for internal testing."), 130 nullptr, /* help_doc */ 131 nullptr, /* set_cmd */ 132 maintenance_show_test_settings_value_cmd, 133 &maintenance_set_test_settings_list, 134 &maintenance_show_test_settings_list); 135 136 add_setshow_string_cmd ("string", class_maintenance, 137 &maintenance_test_settings_string, _("\ 138 command used for internal testing."), _("\ 139 command used for internal testing."), 140 nullptr, /* help_doc */ 141 nullptr, /* set_cmd */ 142 maintenance_show_test_settings_value_cmd, 143 &maintenance_set_test_settings_list, 144 &maintenance_show_test_settings_list); 145 146 add_setshow_string_noescape_cmd 147 ("string-noescape", class_maintenance, 148 &maintenance_test_settings_string_noescape, _("\ 149 command used for internal testing."), _("\ 150 command used for internal testing."), 151 nullptr, /* help_doc */ 152 nullptr, /* set_cmd */ 153 maintenance_show_test_settings_value_cmd, 154 &maintenance_set_test_settings_list, 155 &maintenance_show_test_settings_list); 156 157 add_setshow_optional_filename_cmd 158 ("optional-filename", class_maintenance, 159 &maintenance_test_settings_optional_filename, _("\ 160 command used for internal testing."), _("\ 161 command used for internal testing."), 162 nullptr, /* help_doc */ 163 nullptr, /* set_cmd */ 164 maintenance_show_test_settings_value_cmd, 165 &maintenance_set_test_settings_list, 166 &maintenance_show_test_settings_list); 167 168 add_setshow_filename_cmd ("filename", class_maintenance, 169 &maintenance_test_settings_filename, _("\ 170 command used for internal testing."), _("\ 171 command used for internal testing."), 172 nullptr, /* help_doc */ 173 nullptr, /* set_cmd */ 174 maintenance_show_test_settings_value_cmd, 175 &maintenance_set_test_settings_list, 176 &maintenance_show_test_settings_list); 177 178 add_setshow_zinteger_cmd ("zinteger", class_maintenance, 179 &maintenance_test_settings_zinteger, _("\ 180 command used for internal testing."), _("\ 181 command used for internal testing."), 182 nullptr, /* help_doc */ 183 nullptr, /* set_cmd */ 184 maintenance_show_test_settings_value_cmd, 185 &maintenance_set_test_settings_list, 186 &maintenance_show_test_settings_list); 187 188 add_setshow_zuinteger_cmd ("zuinteger", class_maintenance, 189 &maintenance_test_settings_zuinteger, _("\ 190 command used for internal testing."), _("\ 191 command used for internal testing."), 192 nullptr, /* help_doc */ 193 nullptr, /* set_cmd */ 194 maintenance_show_test_settings_value_cmd, 195 &maintenance_set_test_settings_list, 196 &maintenance_show_test_settings_list); 197 198 add_setshow_zuinteger_unlimited_cmd 199 ("zuinteger-unlimited", class_maintenance, 200 &maintenance_test_settings_zuinteger_unlimited, _("\ 201 command used for internal testing."), _("\ 202 command used for internal testing."), 203 nullptr, /* help_doc */ 204 nullptr, /* set_cmd */ 205 maintenance_show_test_settings_value_cmd, 206 &maintenance_set_test_settings_list, 207 &maintenance_show_test_settings_list); 208 209 add_setshow_enum_cmd ("enum", class_maintenance, 210 maintenance_test_settings_enums, 211 &maintenance_test_settings_enum, _("\ 212 command used for internal testing."), _("\ 213 command used for internal testing."), 214 nullptr, /* help_doc */ 215 nullptr, /* set_cmd */ 216 maintenance_show_test_settings_value_cmd, 217 &maintenance_set_test_settings_list, 218 &maintenance_show_test_settings_list); 219 } 220