From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15514 invoked by alias); 25 Oct 2003 16:32:31 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 15507 invoked from network); 25 Oct 2003 16:32:30 -0000 Received: from unknown (HELO nick.uklinux.net) (194.247.51.234) by sources.redhat.com with SMTP; 25 Oct 2003 16:32:30 -0000 Received: by nick.uklinux.net (Postfix, from userid 501) id 7231775FDE; Sat, 25 Oct 2003 17:24:52 +0100 (BST) From: Nick Roberts MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16282.41939.525362.867801@nick.uklinux.net> Date: Sat, 25 Oct 2003 16:32:00 -0000 To: gdb-patches@sources.redhat.com Subject: PATCH (gdb/mi) X-SW-Source: 2003-10/txt/msg00765.txt.bz2 Purpose: With variable objects, the value of array elements and structure members must be accessed individually (using the MI command -var-evaluate-expression). This means that a front end can take too long processing a separate MI command for each element/member. This patch adapts the MI command -var-list-children so that all the values can be accessed at once allowing the display of an array or structure to be expanded rapidly (in the style of Insight or Visual Studio). The existing behaviour of -var-list-children is preserved of backward compatibility. Nick 2003-10-25 Nick Roberts * mi-cmd-var.c (mi_cmd_var_list_children): Print the values of the children, if required. *** mi-cmd-var.c.~1.16.~ 2003-02-02 06:24:04.000000000 +0000 --- mi-cmd-var.c 2003-10-25 17:03:39.000000000 +0100 *************** *** 255,265 **** struct varobj **childlist; struct varobj **cc; struct cleanup *cleanup_children; ! int numchild; char *type; ! if (argc != 1) ! error ("mi_cmd_var_list_children: Usage: NAME."); /* Get varobj handle, if a valid var obj name was specified */ var = varobj_get_handle (argv[0]); --- 255,265 ---- struct varobj **childlist; struct varobj **cc; struct cleanup *cleanup_children; ! int numchild, values; char *type; ! if (argc != 1 && argc != 2) ! error ("mi_cmd_var_list_children: Usage: NAME [PRINT_VALUES]"); /* Get varobj handle, if a valid var obj name was specified */ var = varobj_get_handle (argv[0]); *************** *** 268,273 **** --- 268,275 ---- numchild = varobj_list_children (var, &childlist); ui_out_field_int (uiout, "numchild", numchild); + if (argc == 2) values = atoi (argv[1]); + else values = 0; if (numchild <= 0) return MI_CMD_DONE; *************** *** 284,289 **** --- 286,293 ---- ui_out_field_string (uiout, "name", varobj_get_objname (*cc)); ui_out_field_string (uiout, "exp", varobj_get_expression (*cc)); ui_out_field_int (uiout, "numchild", varobj_get_num_children (*cc)); + if (values) + ui_out_field_string (uiout, "value", varobj_get_value (*cc)); type = varobj_get_type (*cc); /* C++ pseudo-variables (public, private, protected) do not have a type */ if (type)