Updated copyright notices for most files.
[deliverable/binutils-gdb.git] / gdb / mi / mi-cmd-var.c
index 37c87ff1da3ffa859896dfdd7c5c44b1ea229a3d..2b5cd6d0cc3be6827b1da6b6bf4d6c8b1e4590ef 100644 (file)
@@ -1,6 +1,7 @@
 /* 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).
 
@@ -8,7 +9,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -17,9 +18,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "mi-cmds.h"
@@ -49,6 +48,7 @@ static void
 print_varobj (struct varobj *var, enum print_values print_values,
              int print_expression)
 {
+  struct type *gdb_type;
   char *type;
 
   ui_out_field_string (uiout, "name", varobj_get_objname (var));
@@ -207,7 +207,7 @@ mi_cmd_var_set_format (char *command, char **argv, int argc)
   if (var == NULL)
     error (_("mi_cmd_var_set_format: Variable object not found"));
 
-  formspec = xstrdup (argv[1]);
+  formspec = argv[1];
   if (formspec == NULL)
     error (_("mi_cmd_var_set_format: Must specify the format as: \"natural\", \"binary\", \"decimal\", \"hexadecimal\", or \"octal\""));
 
@@ -327,8 +327,6 @@ Must be: 0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
 static int
 mi_print_value_p (struct type *type, enum print_values print_values)
 {
-  if (type != NULL)
-    type = check_typedef (type);
 
   if (print_values == PRINT_NO_VALUES)
     return 0;
@@ -336,12 +334,18 @@ mi_print_value_p (struct type *type, enum print_values print_values)
   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
@@ -413,6 +417,27 @@ mi_cmd_var_info_type (char *command, char **argv, int argc)
   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)
 {
@@ -491,8 +516,7 @@ mi_cmd_var_assign (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]);
This page took 0.038865 seconds and 4 git commands to generate.