This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH:gdb/mi] Update a specified list of variable objects
- From: nickrob at snap dot net dot nz (Nick Roberts)
- To: gdb-patches at sourceware dot org
- Date: Tue, 22 Sep 2009 00:08:55 +1200
- Subject: [PATCH:gdb/mi] Update a specified list of variable objects
Since -var-list-children currently creates variable objects of all children
and this may be a large number, I would like to be able to restrict
-var-update to just update those variable objects whose expressions are
visible in the front end. This could be done by updating them individually
but that might result in many round trips. I would therefore like to commit
the following patch which allows a list of variable objects to be specified in
the argument to -var-update:
-var-update [PRINT_VALUES] NAME1 NAME2 ...
--
Nick http://www.inet.net.nz/~nickrob
2009-09-22 Nick Roberts <nickrob@snap.net.nz>
* mi/mi-cmd-var.c (mi_cmd_var_update): Accept a list of
variable objects to update.
*** mi-cmd-var.c.~1.61.~ 2009-09-16 18:30:24.000000000 +1200
--- mi-cmd-var.c 2009-09-17 14:54:15.000000000 +1200
*************** mi_cmd_var_update (char *command, char *
*** 660,678 ****
struct cleanup *cleanup;
char *name;
enum print_values print_values;
! if (argc != 1 && argc != 2)
! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME."));
! if (argc == 1)
! name = argv[0];
! else
! name = (argv[1]);
! if (argc == 2)
! print_values = mi_parse_values_option (argv[0]);
! else
! print_values = PRINT_NO_VALUES;
if (mi_version (uiout) <= 1)
cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
--- 660,705 ----
struct cleanup *cleanup;
char *name;
enum print_values print_values;
+ int optind = 0;
+ char *optarg;
! enum opt
! {
! NO_VALUES, SIMPLE_VALUES, ALL_VALUES
! };
! static struct mi_opt opts[] =
! {
! { "-no-values", NO_VALUES, 0 },
! { "-simple-values", SIMPLE_VALUES, 0 },
! { "-all-values", ALL_VALUES, 0 },
! { 0, 0, 0 }
! };
! while (1)
! {
! int opt = mi_getopt ("mi_cmd_var_update",
! argc, argv, opts, &optind, &optarg);
! if (opt < 0)
! break;
! switch ((enum opt) opt)
! {
! case NO_VALUES:
! print_values = PRINT_NO_VALUES;
! break;
! case SIMPLE_VALUES:
! print_values = PRINT_SIMPLE_VALUES;
! break;
! case ALL_VALUES:
! print_values = PRINT_ALL_VALUES;
! break;
! }
! }
!
! if (optind >= argc)
! error (_("mi_cmd_var_update: Usage: [PRINT_VALUES] NAME1 NAME2 ..."));
!
! name = argv[optind];
if (mi_version (uiout) <= 1)
cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist");
*************** mi_cmd_var_update (char *command, char *
*** 697,706 ****
}
else
{
! /* Get varobj handle, if a valid var obj name was specified */
! struct varobj *var = varobj_get_handle (name);
!
! varobj_update_one (var, print_values, 1 /* explicit */);
}
do_cleanups (cleanup);
--- 724,737 ----
}
else
{
! int index = optind;
! while (argv[index]) {
! /* Get varobj handle, if a valid var obj name was specified */
! struct varobj *var = varobj_get_handle (argv[index]);
!
! varobj_update_one (var, print_values, 1 /* explicit */);
! index++;
! }
}
do_cleanups (cleanup);