gdb/
[deliverable/binutils-gdb.git] / gdb / varobj.h
index f43c593741ebdc80bc8054512e94ecbeebd20ee6..4a4dd751c1dc537601fd46db08e69f16e6b926f9 100644 (file)
@@ -1,6 +1,5 @@
 /* GDB variable objects API.
-   Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008, 2009
-   Free Software Foundation, Inc.
+   Copyright (C) 1999-2013 Free Software Foundation, Inc.
 
    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
@@ -34,34 +33,37 @@ enum varobj_display_formats
 
 enum varobj_type
   {
-    USE_SPECIFIED_FRAME,        /* Use the frame passed to varobj_create */
-    USE_CURRENT_FRAME,          /* Use the current frame */
-    USE_SELECTED_FRAME          /* Always reevaluate in selected frame */
+    USE_SPECIFIED_FRAME,        /* Use the frame passed to varobj_create */
+    USE_CURRENT_FRAME,          /* Use the current frame */
+    USE_SELECTED_FRAME          /* Always reevaluate in selected frame */
   };
 
 /* Enumerator describing if a variable object is in scope.  */
 enum varobj_scope_status
   {
     VAROBJ_IN_SCOPE = 0,        /* Varobj is scope, value available.  */
-    VAROBJ_NOT_IN_SCOPE = 1,    /* Varobj is not in scope, value not available, 
-                                  but varobj can become in scope later.  */
+    VAROBJ_NOT_IN_SCOPE = 1,    /* Varobj is not in scope, value not
+                                  available, but varobj can become in
+                                  scope later.  */
     VAROBJ_INVALID = 2,         /* Varobj no longer has any value, and never
                                   will.  */
   };
 
-/* String representations of gdb's format codes (defined in varobj.c) */
+/* String representations of gdb's format codes (defined in varobj.c) */
 extern char *varobj_format_string[];
 
-/* Languages supported by this variable objects system. */
+/* Languages supported by this variable objects system.  This enum is used
+   to index arrays so we make its first enum explicitly zero.  */
 enum varobj_languages
   {
-    vlang_unknown = 0, vlang_c, vlang_cplus, vlang_java, vlang_end
+    vlang_c = 0, vlang_cplus, vlang_java, vlang_ada, vlang_end
   };
 
-/* String representations of gdb's known languages (defined in varobj.c) */
+/* String representations of gdb's known languages (defined in varobj.c) */
 extern char *varobj_language_string[];
 
-/* Struct thar describes a variable object instance */
+/* Struct thar describes a variable object instance.  */
+
 struct varobj;
 
 typedef struct varobj *varobj_p;
@@ -76,7 +78,7 @@ typedef struct varobj_update_result_t
   enum varobj_scope_status status;
   /* This variable is used internally by varobj_update to indicate if the
      new value of varobj is already computed and installed, or has to
-     be yet installed.  Don't use this outside varobj.c */
+     be yet installed.  Don't use this outside varobj.c */
   int value_installed;  
 
   /* This will be non-NULL when new children were added to the varobj.
@@ -88,6 +90,84 @@ typedef struct varobj_update_result_t
 
 DEF_VEC_O (varobj_update_result);
 
+struct varobj_root;
+struct varobj_dynamic;
+
+/* Every variable in the system has a structure of this type defined
+   for it.  This structure holds all information necessary to manipulate
+   a particular object variable.  Members which must be freed are noted.  */
+struct varobj
+{
+  /* Alloc'd name of the variable for this object.  If this variable is a
+     child, then this name will be the child's source name.
+     (bar, not foo.bar).  */
+  /* NOTE: This is the "expression".  */
+  char *name;
+
+  /* Alloc'd expression for this child.  Can be used to create a
+     root variable corresponding to this child.  */
+  char *path_expr;
+
+  /* The alloc'd name for this variable's object.  This is here for
+     convenience when constructing this object's children.  */
+  char *obj_name;
+
+  /* Index of this variable in its parent or -1.  */
+  int index;
+
+  /* The type of this variable.  This can be NULL
+     for artifial variable objects -- currently, the "accessibility" 
+     variable objects in C++.  */
+  struct type *type;
+
+  /* The value of this expression or subexpression.  A NULL value
+     indicates there was an error getting this value.
+     Invariant: if varobj_value_is_changeable_p (this) is non-zero, 
+     the value is either NULL, or not lazy.  */
+  struct value *value;
+
+  /* The number of (immediate) children this variable has.  */
+  int num_children;
+
+  /* If this object is a child, this points to its immediate parent.  */
+  struct varobj *parent;
+
+  /* Children of this object.  */
+  VEC (varobj_p) *children;
+
+  /* Description of the root variable.  Points to root variable for
+     children.  */
+  struct varobj_root *root;
+
+  /* The format of the output for this object.  */
+  enum varobj_display_formats format;
+
+  /* Was this variable updated via a varobj_set_value operation.  */
+  int updated;
+
+  /* Last print value.  */
+  char *print_value;
+
+  /* Is this variable frozen.  Frozen variables are never implicitly
+     updated by -var-update * 
+     or -var-update <direct-or-indirect-parent>.  */
+  int frozen;
+
+  /* Is the value of this variable intentionally not fetched?  It is
+     not fetched if either the variable is frozen, or any parents is
+     frozen.  */
+  int not_fetched;
+
+  /* Sub-range of children which the MI consumer has requested.  If
+     FROM < 0 or TO < 0, means that all children have been
+     requested.  */
+  int from;
+  int to;
+
+  /* Dynamic part of varobj.  */
+  struct varobj_dynamic *dynamic;
+};
+
 /* API functions */
 
 extern struct varobj *varobj_create (char *objname,
@@ -166,8 +246,8 @@ extern int varobj_editable_p (struct varobj *var);
 
 extern int varobj_floating_p (struct varobj *var);
 
-extern void 
-varobj_set_visualizer (struct varobj *var, const char *visualizer);
+extern void varobj_set_visualizer (struct varobj *var,
+                                  const char *visualizer);
 
 extern void varobj_enable_pretty_printing (void);
 
This page took 0.026231 seconds and 4 git commands to generate.