X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fcommand.h;h=cd798146ae0b77bb382a00c50ecfa1661615092b;hb=29ef4c0699e1b46d41ade00ae07a54f979ea21cc;hp=0049ab6ff9e0dc5da5265d38991604b2d65a6d6f;hpb=1461d3712b921466015ab877b6e08ac27456a6a6;p=binutils-gdb.git diff --git a/gdb/command.h b/gdb/command.h index 0049ab6ff9e..cd798146ae0 100644 --- a/gdb/command.h +++ b/gdb/command.h @@ -1,6 +1,6 @@ /* Header file for command creation. - Copyright (C) 1986-2021 Free Software Foundation, Inc. + Copyright (C) 1986-2022 Free Software Foundation, Inc. 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 @@ -46,7 +46,6 @@ enum command_class Note that help accepts unambiguous abbreviated class names. */ /* Special classes to help_list */ - class_deprecated = -3, all_classes = -2, /* help without */ all_commands = -1, /* all */ @@ -181,15 +180,31 @@ inline bool var_type_uses (var_types t) return t == var_enum; } -/* Function signature for a callback used to get a value from a setting. */ +template struct setting_func_types_1; template -using setting_getter_ftype = const T &(*) (); +struct setting_func_types_1 +{ + using type = T; + using set = void (*) (type); + using get = type (*) (); +}; -/* Function signature for a callback used to set a value to a setting. */ +template +struct setting_func_types_1 +{ + using type = const T &; + using set = void (*) (type); + using get = type (*) (); +}; template -using setting_setter_ftype = void (*) (const T &); +struct setting_func_types +{ + using type = typename setting_func_types_1::value, T>::type; + using set = typename setting_func_types_1::value, T>::set; + using get = typename setting_func_types_1::value, T>::get; +}; /* Generic/type-erased function pointer. */ @@ -225,8 +240,8 @@ struct setting template static erased_args erase_args (var_types var_type, T *var, - setting_setter_ftype set_setting_func, - setting_getter_ftype get_setting_func) + typename setting_func_types::set set_setting_func, + typename setting_func_types::get get_setting_func) { gdb_assert (var_type_uses (var_type)); /* The getter and the setter must be both provided or both omitted. */ @@ -260,8 +275,8 @@ struct setting Type T must match the var type VAR_TYPE (see VAR_TYPE_USES). */ template setting (var_types var_type, - setting_setter_ftype setter, - setting_getter_ftype getter) + typename setting_func_types::set setter, + typename setting_func_types::get getter) : m_var_type (var_type) { gdb_assert (var_type_uses (var_type)); @@ -285,14 +300,14 @@ struct setting The template parameter T is the type of the variable used to store the setting. */ template - const T &get () const + typename setting_func_types::type get () const { gdb_assert (var_type_uses (m_var_type)); if (m_var == nullptr) { gdb_assert (m_getter != nullptr); - auto getter = reinterpret_cast> (m_getter); + auto getter = reinterpret_cast::get> (m_getter); return getter (); } else @@ -322,7 +337,7 @@ struct setting if (m_var == nullptr) { gdb_assert (m_setter != nullptr); - auto setter = reinterpret_cast> (m_setter); + auto setter = reinterpret_cast::set> (m_setter); setter (v); } else @@ -363,7 +378,10 @@ typedef void cmd_simple_func_ftype (const char *args, int from_tty); struct cli_suppress_notification { /* Inferior, thread, frame selected notification suppressed? */ - int user_selected_context; + bool user_selected_context = false; + + /* Normal stop event suppressed? */ + bool normal_stop = false; }; extern struct cli_suppress_notification cli_suppress_notification; @@ -382,6 +400,13 @@ extern bool valid_user_defined_cmd_name_p (const char *name); extern bool valid_cmd_char_p (int c); +/* Return value type for the add_setshow_* functions. */ + +struct set_show_commands +{ + cmd_list_element *set, *show; +}; + /* Const-correct variant of the above. */ extern struct cmd_list_element *add_cmd (const char *, enum command_class, @@ -399,7 +424,7 @@ extern struct cmd_list_element *add_cmd_suppress_notification (const char *name, enum command_class theclass, cmd_simple_func_ftype *fun, const char *doc, struct cmd_list_element **list, - int *suppress_notification); + bool *suppress_notification); extern struct cmd_list_element *add_alias_cmd (const char *, cmd_list_element *, @@ -428,13 +453,24 @@ extern struct cmd_list_element *add_show_prefix_cmd (const char *, enum command_class, const char *, struct cmd_list_element **, int, struct cmd_list_element **); +/* Add matching set and show commands using add_basic_prefix_cmd and + add_show_prefix_cmd. */ + +extern set_show_commands add_setshow_prefix_cmd + (const char *name, command_class theclass, const char *set_doc, + const char *show_doc, + cmd_list_element **set_subcommands_list, + cmd_list_element **show_subcommands_list, + cmd_list_element **set_list, + cmd_list_element **show_list); + extern struct cmd_list_element *add_prefix_cmd_suppress_notification (const char *name, enum command_class theclass, cmd_simple_func_ftype *fun, const char *doc, struct cmd_list_element **subcommands, int allow_unknown, struct cmd_list_element **list, - int *suppress_notification); + bool *suppress_notification); extern struct cmd_list_element *add_abbrev_prefix_cmd (const char *, enum command_class, @@ -582,7 +618,7 @@ extern cmd_list_element *add_com_alias (const char *name, extern struct cmd_list_element *add_com_suppress_notification (const char *name, enum command_class theclass, cmd_simple_func_ftype *fun, const char *doc, - int *supress_notification); + bool *supress_notification); extern struct cmd_list_element *add_info (const char *, cmd_simple_func_ftype *fun, @@ -616,13 +652,6 @@ typedef void (show_value_ftype) (struct ui_file *file, instead print the value out directly. */ extern show_value_ftype deprecated_show_value_hack; -/* Return value type for the add_setshow_* functions. */ - -struct set_show_commands -{ - cmd_list_element *set, *show; -}; - extern set_show_commands add_setshow_enum_cmd (const char *name, command_class theclass, const char *const *enumlist, const char **var, const char *set_doc, const char *show_doc, @@ -633,8 +662,8 @@ extern set_show_commands add_setshow_enum_cmd extern set_show_commands add_setshow_enum_cmd (const char *name, command_class theclass, const char *const *enumlist, const char *set_doc, const char *show_doc, - const char *help_doc, setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + const char *help_doc, setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_auto_boolean_cmd @@ -646,8 +675,8 @@ extern set_show_commands add_setshow_auto_boolean_cmd extern set_show_commands add_setshow_auto_boolean_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); @@ -660,8 +689,8 @@ extern set_show_commands add_setshow_boolean_cmd extern set_show_commands add_setshow_boolean_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_filename_cmd @@ -673,8 +702,8 @@ extern set_show_commands add_setshow_filename_cmd extern set_show_commands add_setshow_filename_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_string_cmd @@ -686,8 +715,8 @@ extern set_show_commands add_setshow_string_cmd extern set_show_commands add_setshow_string_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); @@ -700,8 +729,8 @@ extern set_show_commands add_setshow_string_noescape_cmd extern set_show_commands add_setshow_string_noescape_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_optional_filename_cmd @@ -713,8 +742,8 @@ extern set_show_commands add_setshow_optional_filename_cmd extern set_show_commands add_setshow_optional_filename_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); @@ -727,8 +756,8 @@ extern set_show_commands add_setshow_integer_cmd extern set_show_commands add_setshow_integer_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_uinteger_cmd @@ -740,8 +769,8 @@ extern set_show_commands add_setshow_uinteger_cmd extern set_show_commands add_setshow_uinteger_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_zinteger_cmd @@ -753,8 +782,8 @@ extern set_show_commands add_setshow_zinteger_cmd extern set_show_commands add_setshow_zinteger_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_zuinteger_cmd @@ -766,8 +795,8 @@ extern set_show_commands add_setshow_zuinteger_cmd extern set_show_commands add_setshow_zuinteger_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, - setting_getter_ftype get_func, show_value_ftype *show_func, + setting_func_types::set set_func, + setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list); extern set_show_commands add_setshow_zuinteger_unlimited_cmd @@ -779,7 +808,7 @@ extern set_show_commands add_setshow_zuinteger_unlimited_cmd extern set_show_commands add_setshow_zuinteger_unlimited_cmd (const char *name, command_class theclass, const char *set_doc, const char *show_doc, const char *help_doc, - setting_setter_ftype set_func, setting_getter_ftype get_func, + setting_func_types::set set_func, setting_func_types::get get_func, show_value_ftype *show_func, cmd_list_element **set_list, cmd_list_element **show_list);