From: Tom Tromey Date: Fri, 11 Dec 2020 16:33:36 +0000 (-0700) Subject: Change all_root_varobjs to take a function_view X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d8f168ddd08f1d5fde1a193724cdc40d524039a7;p=binutils-gdb.git Change all_root_varobjs to take a function_view This changes all_root_varobjs to take a function_view. This simplifies some of the callers, in particular we can remove a data type that only existed to be passed through. gdb/ChangeLog 2020-12-11 Tom Tromey * varobj.h (all_root_varobjs): Take a function_view. * varobj.c (all_root_varobjs): Take a function_view. (varobj_invalidate_iter): Remove unused parameter. (varobj_invalidate): Update. * mi/mi-cmd-var.c (struct mi_cmd_var_update): Remove. (mi_cmd_var_update_iter): Change parameters. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 360dddea5bf..d724e742f88 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2020-12-11 Tom Tromey + + * varobj.h (all_root_varobjs): Take a function_view. + * varobj.c (all_root_varobjs): Take a function_view. + (varobj_invalidate_iter): Remove unused parameter. + (varobj_invalidate): Update. + * mi/mi-cmd-var.c (struct mi_cmd_var_update): Remove. + (mi_cmd_var_update_iter): Change parameters. + 2020-12-11 Tom Tromey * varobj.c (struct varobj_root) : Remove. diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c index 178eeec8e7d..752d89ad434 100644 --- a/gdb/mi/mi-cmd-var.c +++ b/gdb/mi/mi-cmd-var.c @@ -585,20 +585,12 @@ mi_cmd_var_assign (const char *command, char **argv, int argc) uiout->field_string ("value", val.c_str ()); } -/* Type used for parameters passing to mi_cmd_var_update_iter. */ - -struct mi_cmd_var_update - { - int only_floating; - enum print_values print_values; - }; - /* Helper for mi_cmd_var_update - update each VAR. */ static void -mi_cmd_var_update_iter (struct varobj *var, void *data_pointer) +mi_cmd_var_update_iter (struct varobj *var, bool only_floating, + enum print_values print_values) { - struct mi_cmd_var_update *data = (struct mi_cmd_var_update *) data_pointer; bool thread_stopped; int thread_id = varobj_get_thread_id (var); @@ -617,8 +609,8 @@ mi_cmd_var_update_iter (struct varobj *var, void *data_pointer) } if (thread_stopped - && (!data->only_floating || varobj_floating_p (var))) - varobj_update_one (var, data->print_values, false /* implicit */); + && (!only_floating || varobj_floating_p (var))) + varobj_update_one (var, print_values, false /* implicit */); } void @@ -656,16 +648,14 @@ mi_cmd_var_update (const char *command, char **argv, int argc) if ((*name == '*' || *name == '@') && (*(name + 1) == '\0')) { - struct mi_cmd_var_update data; - - data.only_floating = (*name == '@'); - data.print_values = print_values; - /* varobj_update_one automatically updates all the children of VAROBJ. Therefore update each VAROBJ only once by iterating only the root VAROBJs. */ - all_root_varobjs (mi_cmd_var_update_iter, &data); + all_root_varobjs ([=] (varobj *var) + { + mi_cmd_var_update_iter (var, *name == '0', print_values); + }); } else { diff --git a/gdb/varobj.c b/gdb/varobj.c index 7124e2585ba..e4d640f9d61 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -2357,11 +2357,11 @@ varobj_default_value_is_changeable_p (const struct varobj *var) return r; } -/* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them - with an arbitrary caller supplied DATA pointer. */ +/* Iterate all the existing _root_ VAROBJs and call the FUNC callback + for each one. */ void -all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data) +all_root_varobjs (gdb::function_view func) { /* Iterate "safely" - handle if the callee deletes its passed VAROBJ. */ auto iter = rootlist.begin (); @@ -2369,7 +2369,7 @@ all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data) while (iter != end) { auto self = iter++; - (*func) ((*self)->rootvar, data); + func ((*self)->rootvar); } } @@ -2381,7 +2381,7 @@ all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data) varobj must be either re-evaluated, or marked as invalid here. */ static void -varobj_invalidate_iter (struct varobj *var, void *unused) +varobj_invalidate_iter (struct varobj *var) { /* global and floating var must be re-evaluated. */ if (var->root->floating || var->root->valid_block == NULL) @@ -2412,7 +2412,7 @@ varobj_invalidate_iter (struct varobj *var, void *unused) void varobj_invalidate (void) { - all_root_varobjs (varobj_invalidate_iter, NULL); + all_root_varobjs (varobj_invalidate_iter); } /* A hash function for a varobj. */ diff --git a/gdb/varobj.h b/gdb/varobj.h index 7831e76b973..abf333664af 100644 --- a/gdb/varobj.h +++ b/gdb/varobj.h @@ -309,8 +309,7 @@ extern std::string varobj_get_value (struct varobj *var); extern bool varobj_set_value (struct varobj *var, const char *expression); -extern void all_root_varobjs (void (*func) (struct varobj *var, void *data), - void *data); +extern void all_root_varobjs (gdb::function_view); extern std::vector varobj_update (struct varobj **varp, bool is_explicit);