]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/varobj.h
Update years in copyright notice for the GDB files.
[thirdparty/binutils-gdb.git] / gdb / varobj.h
index e0a5c170fbeb58b43fb95b648e813e1cf3242cb0..05b2c9418c4ebe827097fd6cbc1dbb818f274e95 100644 (file)
@@ -1,6 +1,5 @@
 /* GDB variable objects API.
-   Copyright (C) 1999, 2000, 2001, 2005, 2007, 2008
-   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,37 +33,61 @@ 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 */
   };
 
-/* Error return values for varobj_update function.  */
-enum varobj_update_error
+/* Enumerator describing if a variable object is in scope.  */
+enum varobj_scope_status
   {
-    NOT_IN_SCOPE = -1,          /* varobj not in scope, can not be updated.  */
-    TYPE_CHANGED = -2,          /* varobj type has changed.  */
-    INVALID = -3,               /* varobj is not valid anymore.  */
+    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_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.  */
 enum varobj_languages
   {
-    vlang_unknown = 0, vlang_c, vlang_cplus, vlang_java, vlang_end
+    vlang_unknown = 0, vlang_c, 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;
 DEF_VEC_P (varobj_p);
 
+typedef struct varobj_update_result_t
+{
+  struct varobj *varobj;
+  int type_changed;
+  int children_changed;
+  int changed;
+  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.  */
+  int value_installed;  
+
+  /* This will be non-NULL when new children were added to the varobj.
+     It lists the new children (which must necessarily come at the end
+     of the child list) added during an update.  The caller is
+     responsible for freeing this vector.  */
+  VEC (varobj_p) *new;
+} varobj_update_result;
+
+DEF_VEC_O (varobj_update_result);
+
 /* API functions */
 
 extern struct varobj *varobj_create (char *objname,
@@ -89,15 +112,30 @@ extern enum varobj_display_formats varobj_set_display_format (
 extern enum varobj_display_formats varobj_get_display_format (
                                                        struct varobj *var);
 
+extern int varobj_get_thread_id (struct varobj *var);
+
 extern void varobj_set_frozen (struct varobj *var, int frozen);
 
 extern int varobj_get_frozen (struct varobj *var);
 
+extern void varobj_get_child_range (struct varobj *var, int *from, int *to);
+
+extern void varobj_set_child_range (struct varobj *var, int from, int to);
+
+extern char *varobj_get_display_hint (struct varobj *var);
+
 extern int varobj_get_num_children (struct varobj *var);
 
-/* Return the list of children of VAR.  The returned vector
-   should not be modified in any way.  */
-extern VEC (varobj_p)* varobj_list_children (struct varobj *var);
+/* Return the list of children of VAR.  The returned vector should not
+   be modified in any way.  FROM and TO are in/out parameters
+   indicating the range of children to return.  If either *FROM or *TO
+   is less than zero on entry, then all children will be returned.  On
+   return, *FROM and *TO will be updated to indicate the real range
+   that was returned.  The resulting VEC will contain at least the
+   children from *FROM to just before *TO; it might contain more
+   children, depending on whether any more were available.  */
+extern VEC (varobj_p)* varobj_list_children (struct varobj *var,
+                                            int *from, int *to);
 
 extern char *varobj_get_type (struct varobj *var);
 
@@ -109,17 +147,32 @@ extern enum varobj_languages varobj_get_language (struct varobj *var);
 
 extern int varobj_get_attributes (struct varobj *var);
 
+extern char *varobj_get_formatted_value (struct varobj *var,
+                                        enum varobj_display_formats format);
+
 extern char *varobj_get_value (struct varobj *var);
 
 extern int varobj_set_value (struct varobj *var, char *expression);
 
-extern int varobj_list (struct varobj ***rootlist);
+extern void all_root_varobjs (void (*func) (struct varobj *var, void *data),
+                             void *data);
 
-extern int varobj_update (struct varobj **varp, struct varobj ***changelist,
-                         int explicit);
+extern VEC(varobj_update_result) *varobj_update (struct varobj **varp, 
+                                                int explicit);
 
 extern void varobj_invalidate (void);
 
 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_enable_pretty_printing (void);
+
+extern int varobj_has_more (struct varobj *var, int to);
+
+extern int varobj_pretty_printed_p (struct varobj *var);
+
 #endif /* VAROBJ_H */