Home | History | Annotate | Line # | Download | only in gdb
      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 ();
     83 void
     84 _initialize_maint_test_settings ()
     85 {
     86   maintenance_test_settings_filename = "/foo/bar";
     87 
     88   add_setshow_prefix_cmd ("test-settings", class_maintenance,
     89 			  _("\
     90 Set GDB internal variables used for set/show command infrastructure testing."),
     91 			  _("\
     92 Show GDB internal variables used for set/show command infrastructure testing."),
     93 			  &maintenance_set_test_settings_list,
     94 			  &maintenance_show_test_settings_list,
     95 			  &maintenance_set_cmdlist, &maintenance_show_cmdlist);
     96 
     97   add_setshow_boolean_cmd ("boolean", class_maintenance,
     98 			   &maintenance_test_settings_boolean, _("\
     99 command used for internal testing."), _("\
    100 command used for internal testing."),
    101 			   nullptr, /* help_doc */
    102 			   nullptr, /* set_cmd */
    103 			   maintenance_show_test_settings_value_cmd,
    104 			   &maintenance_set_test_settings_list,
    105 			   &maintenance_show_test_settings_list);
    106 
    107   add_setshow_auto_boolean_cmd ("auto-boolean", class_maintenance,
    108 				&maintenance_test_settings_auto_boolean, _("\
    109 command used for internal testing."), _("\
    110 command used for internal testing."),
    111 				nullptr, /* help_doc */
    112 				nullptr, /* set_cmd */
    113 				maintenance_show_test_settings_value_cmd,
    114 				&maintenance_set_test_settings_list,
    115 				&maintenance_show_test_settings_list);
    116 
    117   add_setshow_uinteger_cmd ("uinteger", class_maintenance,
    118 			   &maintenance_test_settings_uinteger, _("\
    119 command used for internal testing."), _("\
    120 command used for internal testing."),
    121 			    nullptr, /* help_doc */
    122 			    nullptr, /* set_cmd */
    123 			    maintenance_show_test_settings_value_cmd,
    124 			    &maintenance_set_test_settings_list,
    125 			    &maintenance_show_test_settings_list);
    126 
    127   add_setshow_integer_cmd ("integer", class_maintenance,
    128 			   &maintenance_test_settings_integer, _("\
    129 command used for internal testing."), _("\
    130 command used for internal testing."),
    131 			   nullptr, /* help_doc */
    132 			   nullptr, /* set_cmd */
    133 			   maintenance_show_test_settings_value_cmd,
    134 			   &maintenance_set_test_settings_list,
    135 			   &maintenance_show_test_settings_list);
    136 
    137   add_setshow_string_cmd ("string", class_maintenance,
    138      &maintenance_test_settings_string, _("\
    139 command used for internal testing."), _("\
    140 command used for internal testing."),
    141      nullptr, /* help_doc */
    142      nullptr, /* set_cmd */
    143 			  maintenance_show_test_settings_value_cmd,
    144 			  &maintenance_set_test_settings_list,
    145 			  &maintenance_show_test_settings_list);
    146 
    147   add_setshow_string_noescape_cmd
    148     ("string-noescape", class_maintenance,
    149      &maintenance_test_settings_string_noescape, _("\
    150 command used for internal testing."), _("\
    151 command used for internal testing."),
    152      nullptr, /* help_doc */
    153      nullptr, /* set_cmd */
    154      maintenance_show_test_settings_value_cmd,
    155      &maintenance_set_test_settings_list,
    156      &maintenance_show_test_settings_list);
    157 
    158   add_setshow_optional_filename_cmd
    159     ("optional-filename", class_maintenance,
    160      &maintenance_test_settings_optional_filename, _("\
    161 command used for internal testing."), _("\
    162 command used for internal testing."),
    163      nullptr, /* help_doc */
    164      nullptr, /* set_cmd */
    165      maintenance_show_test_settings_value_cmd,
    166      &maintenance_set_test_settings_list,
    167      &maintenance_show_test_settings_list);
    168 
    169   add_setshow_filename_cmd ("filename", class_maintenance,
    170 			    &maintenance_test_settings_filename, _("\
    171 command used for internal testing."), _("\
    172 command used for internal testing."),
    173 			    nullptr, /* help_doc */
    174 			    nullptr, /* set_cmd */
    175 			    maintenance_show_test_settings_value_cmd,
    176 			    &maintenance_set_test_settings_list,
    177 			    &maintenance_show_test_settings_list);
    178 
    179   add_setshow_zinteger_cmd ("zinteger", class_maintenance,
    180 			    &maintenance_test_settings_zinteger, _("\
    181 command used for internal testing."), _("\
    182 command used for internal testing."),
    183 			    nullptr, /* help_doc */
    184 			    nullptr, /* set_cmd */
    185 			    maintenance_show_test_settings_value_cmd,
    186 			    &maintenance_set_test_settings_list,
    187 			    &maintenance_show_test_settings_list);
    188 
    189   add_setshow_zuinteger_cmd ("zuinteger", class_maintenance,
    190 			     &maintenance_test_settings_zuinteger, _("\
    191 command used for internal testing."), _("\
    192 command used for internal testing."),
    193 			     nullptr, /* help_doc */
    194 			     nullptr, /* set_cmd */
    195 			     maintenance_show_test_settings_value_cmd,
    196 			     &maintenance_set_test_settings_list,
    197 			     &maintenance_show_test_settings_list);
    198 
    199   add_setshow_zuinteger_unlimited_cmd
    200     ("zuinteger-unlimited", class_maintenance,
    201      &maintenance_test_settings_zuinteger_unlimited, _("\
    202 command used for internal testing."), _("\
    203 command used for internal testing."),
    204      nullptr, /* help_doc */
    205      nullptr, /* set_cmd */
    206      maintenance_show_test_settings_value_cmd,
    207      &maintenance_set_test_settings_list,
    208      &maintenance_show_test_settings_list);
    209 
    210   add_setshow_enum_cmd ("enum", class_maintenance,
    211 			maintenance_test_settings_enums,
    212 			&maintenance_test_settings_enum, _("\
    213 command used for internal testing."), _("\
    214 command used for internal testing."),
    215 			nullptr, /* help_doc */
    216 			nullptr, /* set_cmd */
    217 			maintenance_show_test_settings_value_cmd,
    218 			&maintenance_set_test_settings_list,
    219 			&maintenance_show_test_settings_list);
    220 }
    221