/* MI Command Set - varobj commands.
- Copyright (C) 2000, 2002, 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2004, 2005, 2007, 2008
+ Free Software Foundation, Inc.
Contributed by Cygnus Solutions (a Red Hat company).
ui_out_field_string (uiout, "exp", varobj_get_expression (var));
ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
- gdb_type = varobj_get_gdb_type (var);
- if (gdb_type && mi_print_value_p (gdb_type, print_values))
+ 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);
static int
mi_print_value_p (struct type *type, enum print_values print_values)
{
- type = check_typedef (type);
if (print_values == PRINT_NO_VALUES)
return 0;
if (print_values == PRINT_ALL_VALUES)
return 1;
- /* For PRINT_SIMPLE_VALUES, only print the value if it has a type
- and that type is not a compound type. */
+ if (type == NULL)
+ return 1;
+ else
+ {
+ type = check_typedef (type);
- return (TYPE_CODE (type) != TYPE_CODE_ARRAY
- && TYPE_CODE (type) != TYPE_CODE_STRUCT
- && TYPE_CODE (type) != TYPE_CODE_UNION);
+ /* For PRINT_SIMPLE_VALUES, only print the value if it has a type
+ and that type is not a compound type. */
+ return (TYPE_CODE (type) != TYPE_CODE_ARRAY
+ && TYPE_CODE (type) != TYPE_CODE_STRUCT
+ && TYPE_CODE (type) != TYPE_CODE_UNION);
+ }
}
enum mi_cmd_result
return MI_CMD_DONE;
}
+enum mi_cmd_result
+mi_cmd_var_info_path_expression (char *command, char **argv, int argc)
+{
+ struct varobj *var;
+ char *path_expr;
+
+ if (argc != 1)
+ error (_("Usage: NAME."));
+
+ /* Get varobj handle, if a valid var obj name was specified. */
+ var = varobj_get_handle (argv[0]);
+ if (var == NULL)
+ error (_("Variable object not found"));
+
+ path_expr = varobj_get_path_expr (var);
+
+ ui_out_field_string (uiout, "path_expr", path_expr);
+
+ return MI_CMD_DONE;
+}
+
enum mi_cmd_result
mi_cmd_var_info_expression (char *command, char **argv, int argc)
{
if (var == NULL)
error (_("mi_cmd_var_assign: Variable object not found"));
- /* FIXME: define masks for attributes */
- if (!(varobj_get_attributes (var) & 0x00000001))
+ if (!varobj_editable_p (var))
error (_("mi_cmd_var_assign: Variable object is not editable"));
expression = xstrdup (argv[1]);