mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-25 11:16:56 +08:00
gdb/python: use return values of add_setshow functions in add_setshow_generic
In add_setshow_generic, we create set/show commands using add_setshow_* functions, then look up the commands by name to set the context pointer. It would be simpler and more efficient to use the return values of the add_setshow_* functions, do that. gdb/ChangeLog: * python/py-param.c (add_setshow_generic): Use return values of add_setshow functions. Change-Id: I04d50736e1001ddb732d81e088468876df9c88ff
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2021-05-27 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
|
* python/py-param.c (add_setshow_generic): Use return values of
|
||||||
|
add_setshow functions.
|
||||||
|
|
||||||
2021-05-27 Simon Marchi <simon.marchi@polymtl.ca>
|
2021-05-27 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
* mi/mi-main.c (_initialize_mi_main):
|
* mi/mi-main.c (_initialize_mi_main):
|
||||||
|
@ -465,113 +465,112 @@ add_setshow_generic (int parmclass, enum command_class cmdclass,
|
|||||||
struct cmd_list_element **set_list,
|
struct cmd_list_element **set_list,
|
||||||
struct cmd_list_element **show_list)
|
struct cmd_list_element **show_list)
|
||||||
{
|
{
|
||||||
struct cmd_list_element *param = NULL;
|
set_show_commands commands;
|
||||||
const char *tmp_name = NULL;
|
|
||||||
|
|
||||||
switch (parmclass)
|
switch (parmclass)
|
||||||
{
|
{
|
||||||
case var_boolean:
|
case var_boolean:
|
||||||
|
commands = add_setshow_boolean_cmd (cmd_name.get (), cmdclass,
|
||||||
add_setshow_boolean_cmd (cmd_name.get (), cmdclass,
|
&self->value.boolval, set_doc,
|
||||||
&self->value.boolval, set_doc, show_doc,
|
show_doc, help_doc, get_set_value,
|
||||||
help_doc, get_set_value, get_show_value,
|
get_show_value, set_list, show_list);
|
||||||
set_list, show_list);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_auto_boolean:
|
case var_auto_boolean:
|
||||||
add_setshow_auto_boolean_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_auto_boolean_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.autoboolval,
|
&self->value.autoboolval,
|
||||||
set_doc, show_doc, help_doc,
|
set_doc, show_doc, help_doc,
|
||||||
get_set_value, get_show_value,
|
get_set_value, get_show_value,
|
||||||
set_list, show_list);
|
set_list, show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_uinteger:
|
case var_uinteger:
|
||||||
add_setshow_uinteger_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_uinteger_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.uintval, set_doc, show_doc,
|
&self->value.uintval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list);
|
get_show_value, set_list, show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_integer:
|
case var_integer:
|
||||||
add_setshow_integer_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_integer_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.intval, set_doc, show_doc,
|
&self->value.intval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list); break;
|
get_show_value, set_list, show_list);
|
||||||
|
break;
|
||||||
|
|
||||||
case var_string:
|
case var_string:
|
||||||
add_setshow_string_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_string_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.stringval, set_doc, show_doc,
|
&self->value.stringval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list); break;
|
get_show_value, set_list, show_list);
|
||||||
|
break;
|
||||||
|
|
||||||
case var_string_noescape:
|
case var_string_noescape:
|
||||||
add_setshow_string_noescape_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_string_noescape_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.stringval,
|
&self->value.stringval,
|
||||||
set_doc, show_doc, help_doc,
|
set_doc, show_doc, help_doc,
|
||||||
get_set_value, get_show_value,
|
get_set_value, get_show_value,
|
||||||
set_list, show_list);
|
set_list, show_list);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_optional_filename:
|
case var_optional_filename:
|
||||||
add_setshow_optional_filename_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_optional_filename_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.stringval, set_doc,
|
&self->value.stringval,
|
||||||
show_doc, help_doc, get_set_value,
|
set_doc, show_doc, help_doc,
|
||||||
get_show_value, set_list,
|
get_set_value,
|
||||||
show_list);
|
get_show_value, set_list,
|
||||||
|
show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_filename:
|
case var_filename:
|
||||||
add_setshow_filename_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_filename_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.stringval, set_doc, show_doc,
|
&self->value.stringval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list); break;
|
get_show_value, set_list, show_list);
|
||||||
|
break;
|
||||||
|
|
||||||
case var_zinteger:
|
case var_zinteger:
|
||||||
add_setshow_zinteger_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_zinteger_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.intval, set_doc, show_doc,
|
&self->value.intval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list);
|
get_show_value, set_list, show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_zuinteger:
|
case var_zuinteger:
|
||||||
add_setshow_zuinteger_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_zuinteger_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.uintval, set_doc, show_doc,
|
&self->value.uintval, set_doc,
|
||||||
help_doc, get_set_value, get_show_value,
|
show_doc, help_doc, get_set_value,
|
||||||
set_list, show_list);
|
get_show_value, set_list,
|
||||||
|
show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_zuinteger_unlimited:
|
case var_zuinteger_unlimited:
|
||||||
add_setshow_zuinteger_unlimited_cmd (cmd_name.get (), cmdclass,
|
commands = add_setshow_zuinteger_unlimited_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.intval, set_doc,
|
&self->value.intval,
|
||||||
show_doc, help_doc, get_set_value,
|
set_doc, show_doc,
|
||||||
get_show_value,
|
help_doc, get_set_value,
|
||||||
set_list, show_list);
|
get_show_value, set_list,
|
||||||
|
show_list);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case var_enum:
|
case var_enum:
|
||||||
add_setshow_enum_cmd (cmd_name.get (), cmdclass, self->enumeration,
|
commands = add_setshow_enum_cmd (cmd_name.get (), cmdclass,
|
||||||
&self->value.cstringval, set_doc, show_doc,
|
self->enumeration,
|
||||||
help_doc, get_set_value, get_show_value,
|
&self->value.cstringval, set_doc,
|
||||||
set_list, show_list);
|
show_doc, help_doc, get_set_value,
|
||||||
|
get_show_value, set_list, show_list);
|
||||||
/* Initialize the value, just in case. */
|
/* Initialize the value, just in case. */
|
||||||
self->value.cstringval = self->enumeration[0];
|
self->value.cstringval = self->enumeration[0];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
gdb_assert_not_reached ("Unhandled parameter class.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Lookup created parameter, and register Python object against the
|
/* Register Python objects in both commands' context. */
|
||||||
parameter context. Perform this task against both lists. */
|
set_cmd_context (commands.set, self);
|
||||||
tmp_name = cmd_name.get ();
|
set_cmd_context (commands.show, self);
|
||||||
param = lookup_cmd (&tmp_name, *show_list, "", NULL, 0, 1);
|
|
||||||
if (param)
|
|
||||||
set_cmd_context (param, self);
|
|
||||||
|
|
||||||
tmp_name = cmd_name.get ();
|
|
||||||
param = lookup_cmd (&tmp_name, *set_list, "", NULL, 0, 1);
|
|
||||||
if (param)
|
|
||||||
set_cmd_context (param, self);
|
|
||||||
|
|
||||||
/* We (unfortunately) currently leak the command name. */
|
/* We (unfortunately) currently leak the command name. */
|
||||||
cmd_name.release ();
|
cmd_name.release ();
|
||||||
|
Reference in New Issue
Block a user