2006-07-29 Vladimir Prus <vladimir@codesourcery.com>
* mi/mi-cmd-var.c (print_varobj): New function. (mi_cmd_var_create): Use the above. (mi_cmd_var_list_children): Likewise.
This commit is contained in:
parent
6a58c676a9
commit
a217f3f543
2 changed files with 36 additions and 21 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2006-07-29 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
|
* mi/mi-cmd-var.c (print_varobj): New function.
|
||||||
|
(mi_cmd_var_create): Use the above.
|
||||||
|
(mi_cmd_var_list_children): Likewise.
|
||||||
|
|
||||||
2006-07-29 Vladimir Prus <vladimir@codesourcery.com>
|
2006-07-29 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
* MAINTAINERS (Write After Approval): Add myself.
|
* MAINTAINERS (Write After Approval): Add myself.
|
||||||
|
|
|
@ -39,6 +39,33 @@ extern int varobjdebug; /* defined in varobj.c */
|
||||||
static int varobj_update_one (struct varobj *var,
|
static int varobj_update_one (struct varobj *var,
|
||||||
enum print_values print_values);
|
enum print_values print_values);
|
||||||
|
|
||||||
|
static int mi_print_value_p (struct type *type, enum print_values print_values);
|
||||||
|
|
||||||
|
/* Print variable object VAR. The PRINT_VALUES parameter controls
|
||||||
|
if the value should be printed. The PRINT_EXPRESSION parameter
|
||||||
|
controls if the expression should be printed. */
|
||||||
|
static void
|
||||||
|
print_varobj (struct varobj *var, enum print_values print_values,
|
||||||
|
int print_expression)
|
||||||
|
{
|
||||||
|
char *type;
|
||||||
|
|
||||||
|
ui_out_field_string (uiout, "name", varobj_get_objname (var));
|
||||||
|
if (print_expression)
|
||||||
|
ui_out_field_string (uiout, "exp", varobj_get_expression (var));
|
||||||
|
ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
|
||||||
|
|
||||||
|
if (mi_print_value_p (varobj_get_gdb_type (var), print_values))
|
||||||
|
ui_out_field_string (uiout, "value", varobj_get_value (var));
|
||||||
|
|
||||||
|
type = varobj_get_type (var);
|
||||||
|
if (type != NULL)
|
||||||
|
{
|
||||||
|
ui_out_field_string (uiout, "type", type);
|
||||||
|
xfree (type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* VAROBJ operations */
|
/* VAROBJ operations */
|
||||||
|
|
||||||
enum mi_cmd_result
|
enum mi_cmd_result
|
||||||
|
@ -49,7 +76,6 @@ mi_cmd_var_create (char *command, char **argv, int argc)
|
||||||
char *name;
|
char *name;
|
||||||
char *frame;
|
char *frame;
|
||||||
char *expr;
|
char *expr;
|
||||||
char *type;
|
|
||||||
struct cleanup *old_cleanups;
|
struct cleanup *old_cleanups;
|
||||||
enum varobj_type var_type;
|
enum varobj_type var_type;
|
||||||
|
|
||||||
|
@ -99,16 +125,7 @@ mi_cmd_var_create (char *command, char **argv, int argc)
|
||||||
if (var == NULL)
|
if (var == NULL)
|
||||||
error (_("mi_cmd_var_create: unable to create variable object"));
|
error (_("mi_cmd_var_create: unable to create variable object"));
|
||||||
|
|
||||||
ui_out_field_string (uiout, "name", name);
|
print_varobj (var, PRINT_NO_VALUES, 0 /* don't print expression */);
|
||||||
ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
|
|
||||||
type = varobj_get_type (var);
|
|
||||||
if (type == NULL)
|
|
||||||
ui_out_field_string (uiout, "type", "");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ui_out_field_string (uiout, "type", type);
|
|
||||||
xfree (type);
|
|
||||||
}
|
|
||||||
|
|
||||||
do_cleanups (old_cleanups);
|
do_cleanups (old_cleanups);
|
||||||
return MI_CMD_DONE;
|
return MI_CMD_DONE;
|
||||||
|
@ -337,17 +354,9 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
|
||||||
{
|
{
|
||||||
struct cleanup *cleanup_child;
|
struct cleanup *cleanup_child;
|
||||||
cleanup_child = make_cleanup_ui_out_tuple_begin_end (uiout, "child");
|
cleanup_child = make_cleanup_ui_out_tuple_begin_end (uiout, "child");
|
||||||
ui_out_field_string (uiout, "name", varobj_get_objname (*cc));
|
print_varobj (*cc, print_values, 1 /* print expression */);
|
||||||
ui_out_field_string (uiout, "exp", varobj_get_expression (*cc));
|
|
||||||
ui_out_field_int (uiout, "numchild", varobj_get_num_children (*cc));
|
|
||||||
if (mi_print_value_p (varobj_get_gdb_type (*cc), print_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)
|
|
||||||
ui_out_field_string (uiout, "type", type);
|
|
||||||
do_cleanups (cleanup_child);
|
|
||||||
cc++;
|
cc++;
|
||||||
|
do_cleanups (cleanup_child);
|
||||||
}
|
}
|
||||||
do_cleanups (cleanup_children);
|
do_cleanups (cleanup_children);
|
||||||
xfree (childlist);
|
xfree (childlist);
|
||||||
|
|
Loading…
Add table
Reference in a new issue