xref: /dflybsd-src/contrib/gdb-7/gdb/varobj.h (revision de8e141f24382815c10a4012d209bbbf7abf1112)
15796c8dcSSimon Schubert /* GDB variable objects API.
2*ef5ccd6cSJohn Marino    Copyright (C) 1999-2013 Free Software Foundation, Inc.
35796c8dcSSimon Schubert 
45796c8dcSSimon Schubert    This program is free software; you can redistribute it and/or modify
55796c8dcSSimon Schubert    it under the terms of the GNU General Public License as published by
65796c8dcSSimon Schubert    the Free Software Foundation; either version 3 of the License, or
75796c8dcSSimon Schubert    (at your option) any later version.
85796c8dcSSimon Schubert 
95796c8dcSSimon Schubert    This program is distributed in the hope that it will be useful,
105796c8dcSSimon Schubert    but WITHOUT ANY WARRANTY; without even the implied warranty of
115796c8dcSSimon Schubert    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
125796c8dcSSimon Schubert    GNU General Public License for more details.
135796c8dcSSimon Schubert 
145796c8dcSSimon Schubert    You should have received a copy of the GNU General Public License
155796c8dcSSimon Schubert    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
165796c8dcSSimon Schubert 
175796c8dcSSimon Schubert #ifndef VAROBJ_H
185796c8dcSSimon Schubert #define VAROBJ_H 1
195796c8dcSSimon Schubert 
205796c8dcSSimon Schubert #include "symtab.h"
215796c8dcSSimon Schubert #include "gdbtypes.h"
225796c8dcSSimon Schubert #include "vec.h"
235796c8dcSSimon Schubert 
245796c8dcSSimon Schubert /* Enumeration for the format types */
255796c8dcSSimon Schubert enum varobj_display_formats
265796c8dcSSimon Schubert   {
275796c8dcSSimon Schubert     FORMAT_NATURAL,		/* What gdb actually calls 'natural' */
285796c8dcSSimon Schubert     FORMAT_BINARY,		/* Binary display                    */
295796c8dcSSimon Schubert     FORMAT_DECIMAL,		/* Decimal display                   */
305796c8dcSSimon Schubert     FORMAT_HEXADECIMAL,		/* Hex display                       */
315796c8dcSSimon Schubert     FORMAT_OCTAL		/* Octal display                     */
325796c8dcSSimon Schubert   };
335796c8dcSSimon Schubert 
345796c8dcSSimon Schubert enum varobj_type
355796c8dcSSimon Schubert   {
36c50c785cSJohn Marino     USE_SPECIFIED_FRAME,        /* Use the frame passed to varobj_create.  */
37c50c785cSJohn Marino     USE_CURRENT_FRAME,          /* Use the current frame.  */
38c50c785cSJohn Marino     USE_SELECTED_FRAME          /* Always reevaluate in selected frame.  */
395796c8dcSSimon Schubert   };
405796c8dcSSimon Schubert 
415796c8dcSSimon Schubert /* Enumerator describing if a variable object is in scope.  */
425796c8dcSSimon Schubert enum varobj_scope_status
435796c8dcSSimon Schubert   {
445796c8dcSSimon Schubert     VAROBJ_IN_SCOPE = 0,        /* Varobj is scope, value available.  */
45c50c785cSJohn Marino     VAROBJ_NOT_IN_SCOPE = 1,    /* Varobj is not in scope, value not
46c50c785cSJohn Marino 				   available, but varobj can become in
47c50c785cSJohn Marino 				   scope later.  */
485796c8dcSSimon Schubert     VAROBJ_INVALID = 2,         /* Varobj no longer has any value, and never
495796c8dcSSimon Schubert 				   will.  */
505796c8dcSSimon Schubert   };
515796c8dcSSimon Schubert 
52c50c785cSJohn Marino /* String representations of gdb's format codes (defined in varobj.c).  */
535796c8dcSSimon Schubert extern char *varobj_format_string[];
545796c8dcSSimon Schubert 
555796c8dcSSimon Schubert /* Languages supported by this variable objects system.  */
565796c8dcSSimon Schubert enum varobj_languages
575796c8dcSSimon Schubert   {
58a45ae5f8SJohn Marino     vlang_unknown = 0, vlang_c, vlang_cplus, vlang_java, vlang_ada, vlang_end
595796c8dcSSimon Schubert   };
605796c8dcSSimon Schubert 
61c50c785cSJohn Marino /* String representations of gdb's known languages (defined in varobj.c).  */
625796c8dcSSimon Schubert extern char *varobj_language_string[];
635796c8dcSSimon Schubert 
64c50c785cSJohn Marino /* Struct thar describes a variable object instance.  */
655796c8dcSSimon Schubert struct varobj;
665796c8dcSSimon Schubert 
675796c8dcSSimon Schubert typedef struct varobj *varobj_p;
685796c8dcSSimon Schubert DEF_VEC_P (varobj_p);
695796c8dcSSimon Schubert 
705796c8dcSSimon Schubert typedef struct varobj_update_result_t
715796c8dcSSimon Schubert {
725796c8dcSSimon Schubert   struct varobj *varobj;
735796c8dcSSimon Schubert   int type_changed;
745796c8dcSSimon Schubert   int children_changed;
755796c8dcSSimon Schubert   int changed;
765796c8dcSSimon Schubert   enum varobj_scope_status status;
775796c8dcSSimon Schubert   /* This variable is used internally by varobj_update to indicate if the
785796c8dcSSimon Schubert      new value of varobj is already computed and installed, or has to
79c50c785cSJohn Marino      be yet installed.  Don't use this outside varobj.c.  */
805796c8dcSSimon Schubert   int value_installed;
815796c8dcSSimon Schubert 
825796c8dcSSimon Schubert   /* This will be non-NULL when new children were added to the varobj.
835796c8dcSSimon Schubert      It lists the new children (which must necessarily come at the end
845796c8dcSSimon Schubert      of the child list) added during an update.  The caller is
855796c8dcSSimon Schubert      responsible for freeing this vector.  */
865796c8dcSSimon Schubert   VEC (varobj_p) *new;
875796c8dcSSimon Schubert } varobj_update_result;
885796c8dcSSimon Schubert 
895796c8dcSSimon Schubert DEF_VEC_O (varobj_update_result);
905796c8dcSSimon Schubert 
915796c8dcSSimon Schubert /* API functions */
925796c8dcSSimon Schubert 
935796c8dcSSimon Schubert extern struct varobj *varobj_create (char *objname,
945796c8dcSSimon Schubert 				     char *expression, CORE_ADDR frame,
955796c8dcSSimon Schubert 				     enum varobj_type type);
965796c8dcSSimon Schubert 
975796c8dcSSimon Schubert extern char *varobj_gen_name (void);
985796c8dcSSimon Schubert 
995796c8dcSSimon Schubert extern struct varobj *varobj_get_handle (char *name);
1005796c8dcSSimon Schubert 
1015796c8dcSSimon Schubert extern char *varobj_get_objname (struct varobj *var);
1025796c8dcSSimon Schubert 
1035796c8dcSSimon Schubert extern char *varobj_get_expression (struct varobj *var);
1045796c8dcSSimon Schubert 
1055796c8dcSSimon Schubert extern int varobj_delete (struct varobj *var, char ***dellist,
1065796c8dcSSimon Schubert 			  int only_children);
1075796c8dcSSimon Schubert 
1085796c8dcSSimon Schubert extern enum varobj_display_formats varobj_set_display_format (
1095796c8dcSSimon Schubert 							 struct varobj *var,
1105796c8dcSSimon Schubert 					enum varobj_display_formats format);
1115796c8dcSSimon Schubert 
1125796c8dcSSimon Schubert extern enum varobj_display_formats varobj_get_display_format (
1135796c8dcSSimon Schubert 							struct varobj *var);
1145796c8dcSSimon Schubert 
1155796c8dcSSimon Schubert extern int varobj_get_thread_id (struct varobj *var);
1165796c8dcSSimon Schubert 
1175796c8dcSSimon Schubert extern void varobj_set_frozen (struct varobj *var, int frozen);
1185796c8dcSSimon Schubert 
1195796c8dcSSimon Schubert extern int varobj_get_frozen (struct varobj *var);
1205796c8dcSSimon Schubert 
1215796c8dcSSimon Schubert extern void varobj_get_child_range (struct varobj *var, int *from, int *to);
1225796c8dcSSimon Schubert 
1235796c8dcSSimon Schubert extern void varobj_set_child_range (struct varobj *var, int from, int to);
1245796c8dcSSimon Schubert 
1255796c8dcSSimon Schubert extern char *varobj_get_display_hint (struct varobj *var);
1265796c8dcSSimon Schubert 
1275796c8dcSSimon Schubert extern int varobj_get_num_children (struct varobj *var);
1285796c8dcSSimon Schubert 
1295796c8dcSSimon Schubert /* Return the list of children of VAR.  The returned vector should not
1305796c8dcSSimon Schubert    be modified in any way.  FROM and TO are in/out parameters
1315796c8dcSSimon Schubert    indicating the range of children to return.  If either *FROM or *TO
1325796c8dcSSimon Schubert    is less than zero on entry, then all children will be returned.  On
1335796c8dcSSimon Schubert    return, *FROM and *TO will be updated to indicate the real range
1345796c8dcSSimon Schubert    that was returned.  The resulting VEC will contain at least the
1355796c8dcSSimon Schubert    children from *FROM to just before *TO; it might contain more
1365796c8dcSSimon Schubert    children, depending on whether any more were available.  */
1375796c8dcSSimon Schubert extern VEC (varobj_p)* varobj_list_children (struct varobj *var,
1385796c8dcSSimon Schubert 					     int *from, int *to);
1395796c8dcSSimon Schubert 
1405796c8dcSSimon Schubert extern char *varobj_get_type (struct varobj *var);
1415796c8dcSSimon Schubert 
1425796c8dcSSimon Schubert extern struct type *varobj_get_gdb_type (struct varobj *var);
1435796c8dcSSimon Schubert 
1445796c8dcSSimon Schubert extern char *varobj_get_path_expr (struct varobj *var);
1455796c8dcSSimon Schubert 
1465796c8dcSSimon Schubert extern enum varobj_languages varobj_get_language (struct varobj *var);
1475796c8dcSSimon Schubert 
1485796c8dcSSimon Schubert extern int varobj_get_attributes (struct varobj *var);
1495796c8dcSSimon Schubert 
1505796c8dcSSimon Schubert extern char *varobj_get_formatted_value (struct varobj *var,
1515796c8dcSSimon Schubert 					 enum varobj_display_formats format);
1525796c8dcSSimon Schubert 
1535796c8dcSSimon Schubert extern char *varobj_get_value (struct varobj *var);
1545796c8dcSSimon Schubert 
1555796c8dcSSimon Schubert extern int varobj_set_value (struct varobj *var, char *expression);
1565796c8dcSSimon Schubert 
1575796c8dcSSimon Schubert extern void all_root_varobjs (void (*func) (struct varobj *var, void *data),
1585796c8dcSSimon Schubert 			      void *data);
1595796c8dcSSimon Schubert 
1605796c8dcSSimon Schubert extern VEC(varobj_update_result) *varobj_update (struct varobj **varp,
1615796c8dcSSimon Schubert 						 int explicit);
1625796c8dcSSimon Schubert 
1635796c8dcSSimon Schubert extern void varobj_invalidate (void);
1645796c8dcSSimon Schubert 
1655796c8dcSSimon Schubert extern int varobj_editable_p (struct varobj *var);
1665796c8dcSSimon Schubert 
1675796c8dcSSimon Schubert extern int varobj_floating_p (struct varobj *var);
1685796c8dcSSimon Schubert 
169c50c785cSJohn Marino extern void varobj_set_visualizer (struct varobj *var,
170c50c785cSJohn Marino 				   const char *visualizer);
1715796c8dcSSimon Schubert 
1725796c8dcSSimon Schubert extern void varobj_enable_pretty_printing (void);
1735796c8dcSSimon Schubert 
1745796c8dcSSimon Schubert extern int varobj_has_more (struct varobj *var, int to);
1755796c8dcSSimon Schubert 
1765796c8dcSSimon Schubert extern int varobj_pretty_printed_p (struct varobj *var);
1775796c8dcSSimon Schubert 
1785796c8dcSSimon Schubert #endif /* VAROBJ_H */
179