test suite fixlet for gdb.trace
[deliverable/binutils-gdb.git] / gdb / varobj.h
CommitLineData
8b93c638 1/* GDB variable objects API.
8acc9f48 2 Copyright (C) 1999-2013 Free Software Foundation, Inc.
8b93c638
JM
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
a9762ec7 6 the Free Software Foundation; either version 3 of the License, or
8b93c638
JM
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
a9762ec7 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
8b93c638
JM
16
17#ifndef VAROBJ_H
18#define VAROBJ_H 1
19
20#include "symtab.h"
21#include "gdbtypes.h"
d56d46f5 22#include "vec.h"
8b93c638
JM
23
24/* Enumeration for the format types */
25enum varobj_display_formats
26 {
27 FORMAT_NATURAL, /* What gdb actually calls 'natural' */
28 FORMAT_BINARY, /* Binary display */
29 FORMAT_DECIMAL, /* Decimal display */
30 FORMAT_HEXADECIMAL, /* Hex display */
31 FORMAT_OCTAL /* Octal display */
32 };
33
73a93a32
JI
34enum varobj_type
35 {
581e13c1
MS
36 USE_SPECIFIED_FRAME, /* Use the frame passed to varobj_create. */
37 USE_CURRENT_FRAME, /* Use the current frame. */
38 USE_SELECTED_FRAME /* Always reevaluate in selected frame. */
73a93a32 39 };
8756216b 40
f7f9ae2c
VP
41/* Enumerator describing if a variable object is in scope. */
42enum varobj_scope_status
8756216b 43 {
f7f9ae2c 44 VAROBJ_IN_SCOPE = 0, /* Varobj is scope, value available. */
3e43a32a
MS
45 VAROBJ_NOT_IN_SCOPE = 1, /* Varobj is not in scope, value not
46 available, but varobj can become in
47 scope later. */
f7f9ae2c
VP
48 VAROBJ_INVALID = 2, /* Varobj no longer has any value, and never
49 will. */
8756216b
DP
50 };
51
581e13c1 52/* String representations of gdb's format codes (defined in varobj.c). */
8b93c638
JM
53extern char *varobj_format_string[];
54
581e13c1 55/* Languages supported by this variable objects system. */
8b93c638
JM
56enum varobj_languages
57 {
40591b7d 58 vlang_unknown = 0, vlang_c, vlang_cplus, vlang_java, vlang_ada, vlang_end
8b93c638
JM
59 };
60
581e13c1 61/* String representations of gdb's known languages (defined in varobj.c). */
8b93c638
JM
62extern char *varobj_language_string[];
63
581e13c1 64/* Struct thar describes a variable object instance. */
8b93c638
JM
65struct varobj;
66
d56d46f5
VP
67typedef struct varobj *varobj_p;
68DEF_VEC_P (varobj_p);
69
f7f9ae2c
VP
70typedef struct varobj_update_result_t
71{
72 struct varobj *varobj;
73 int type_changed;
b6313243 74 int children_changed;
f7f9ae2c
VP
75 int changed;
76 enum varobj_scope_status status;
b6313243
TT
77 /* This variable is used internally by varobj_update to indicate if the
78 new value of varobj is already computed and installed, or has to
581e13c1 79 be yet installed. Don't use this outside varobj.c. */
b6313243 80 int value_installed;
0cc7d26f
TT
81
82 /* This will be non-NULL when new children were added to the varobj.
83 It lists the new children (which must necessarily come at the end
84 of the child list) added during an update. The caller is
85 responsible for freeing this vector. */
86 VEC (varobj_p) *new;
f7f9ae2c
VP
87} varobj_update_result;
88
89DEF_VEC_O (varobj_update_result);
90
8b93c638
JM
91/* API functions */
92
93extern struct varobj *varobj_create (char *objname,
73a93a32
JI
94 char *expression, CORE_ADDR frame,
95 enum varobj_type type);
8b93c638
JM
96
97extern char *varobj_gen_name (void);
98
99extern struct varobj *varobj_get_handle (char *name);
100
101extern char *varobj_get_objname (struct varobj *var);
102
103extern char *varobj_get_expression (struct varobj *var);
104
105extern int varobj_delete (struct varobj *var, char ***dellist,
106 int only_children);
107
108extern enum varobj_display_formats varobj_set_display_format (
109 struct varobj *var,
110 enum varobj_display_formats format);
111
112extern enum varobj_display_formats varobj_get_display_format (
113 struct varobj *var);
114
c5b48eac
VP
115extern int varobj_get_thread_id (struct varobj *var);
116
25d5ea92
VP
117extern void varobj_set_frozen (struct varobj *var, int frozen);
118
119extern int varobj_get_frozen (struct varobj *var);
120
0cc7d26f
TT
121extern void varobj_get_child_range (struct varobj *var, int *from, int *to);
122
123extern void varobj_set_child_range (struct varobj *var, int from, int to);
124
b6313243
TT
125extern char *varobj_get_display_hint (struct varobj *var);
126
8b93c638
JM
127extern int varobj_get_num_children (struct varobj *var);
128
0cc7d26f
TT
129/* Return the list of children of VAR. The returned vector should not
130 be modified in any way. FROM and TO are in/out parameters
131 indicating the range of children to return. If either *FROM or *TO
132 is less than zero on entry, then all children will be returned. On
133 return, *FROM and *TO will be updated to indicate the real range
134 that was returned. The resulting VEC will contain at least the
135 children from *FROM to just before *TO; it might contain more
136 children, depending on whether any more were available. */
137extern VEC (varobj_p)* varobj_list_children (struct varobj *var,
138 int *from, int *to);
8b93c638
JM
139
140extern char *varobj_get_type (struct varobj *var);
141
1ecb4ee0
DJ
142extern struct type *varobj_get_gdb_type (struct varobj *var);
143
02142340
VP
144extern char *varobj_get_path_expr (struct varobj *var);
145
8b93c638
JM
146extern enum varobj_languages varobj_get_language (struct varobj *var);
147
148extern int varobj_get_attributes (struct varobj *var);
149
de051565
MK
150extern char *varobj_get_formatted_value (struct varobj *var,
151 enum varobj_display_formats format);
152
8b93c638
JM
153extern char *varobj_get_value (struct varobj *var);
154
155extern int varobj_set_value (struct varobj *var, char *expression);
156
54333c3b
JK
157extern void all_root_varobjs (void (*func) (struct varobj *var, void *data),
158 void *data);
8b93c638 159
f7f9ae2c
VP
160extern VEC(varobj_update_result) *varobj_update (struct varobj **varp,
161 int explicit);
8b93c638 162
8756216b
DP
163extern void varobj_invalidate (void);
164
c203027e
NR
165extern int varobj_editable_p (struct varobj *var);
166
5a413362
VP
167extern int varobj_floating_p (struct varobj *var);
168
2021ad3a
PM
169extern void varobj_set_visualizer (struct varobj *var,
170 const char *visualizer);
0cc7d26f
TT
171
172extern void varobj_enable_pretty_printing (void);
173
174extern int varobj_has_more (struct varobj *var, int to);
175
176extern int varobj_pretty_printed_p (struct varobj *var);
b6313243 177
8b93c638 178#endif /* VAROBJ_H */
This page took 1.37772 seconds and 4 git commands to generate.