]>
Commit | Line | Data |
---|---|---|
1 | /* Declarations for value printing routines for GDB, the GNU debugger. | |
2 | ||
3 | Copyright (C) 1986, 1988-1989, 1991-1994, 2000, 2005, 2007-2012 Free | |
4 | Software Foundation, Inc. | |
5 | ||
6 | This file is part of GDB. | |
7 | ||
8 | This program is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 3 of the License, or | |
11 | (at your option) any later version. | |
12 | ||
13 | This program is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
20 | ||
21 | #ifndef VALPRINT_H | |
22 | #define VALPRINT_H | |
23 | ||
24 | /* This is used to pass formatting options to various value-printing | |
25 | functions. */ | |
26 | struct value_print_options | |
27 | { | |
28 | /* Pretty-printing control. */ | |
29 | enum val_prettyprint pretty; | |
30 | ||
31 | /* Controls pretty printing of arrays. */ | |
32 | int prettyprint_arrays; | |
33 | ||
34 | /* Controls pretty printing of structures. */ | |
35 | int prettyprint_structs; | |
36 | ||
37 | /* Controls printing of virtual tables. */ | |
38 | int vtblprint; | |
39 | ||
40 | /* Controls printing of nested unions. */ | |
41 | int unionprint; | |
42 | ||
43 | /* Controls printing of addresses. */ | |
44 | int addressprint; | |
45 | ||
46 | /* Controls looking up an object's derived type using what we find | |
47 | in its vtables. */ | |
48 | int objectprint; | |
49 | ||
50 | /* Maximum number of chars to print for a string pointer value or vector | |
51 | contents, or UINT_MAX for no limit. Note that "set print elements 0" | |
52 | stores UINT_MAX in print_max, which displays in a show command as | |
53 | "unlimited". */ | |
54 | unsigned int print_max; | |
55 | ||
56 | /* Print repeat counts if there are more than this many repetitions | |
57 | of an element in an array. */ | |
58 | unsigned int repeat_count_threshold; | |
59 | ||
60 | /* The global output format letter. */ | |
61 | int output_format; | |
62 | ||
63 | /* The current format letter. This is set locally for a given call, | |
64 | e.g. when the user passes a format to "print". */ | |
65 | int format; | |
66 | ||
67 | /* Stop printing at null character? */ | |
68 | int stop_print_at_null; | |
69 | ||
70 | /* True if this value is being printed in an epoch window. */ | |
71 | int inspect_it; | |
72 | ||
73 | /* True if we should print the index of each element when printing | |
74 | an array. */ | |
75 | int print_array_indexes; | |
76 | ||
77 | /* If nonzero, then dereference references, otherwise just print | |
78 | them like pointers. */ | |
79 | int deref_ref; | |
80 | ||
81 | /* If nonzero, print static fields. */ | |
82 | int static_field_print; | |
83 | ||
84 | /* If nonzero, print static fields for Pascal. FIXME: C++ and Java | |
85 | share one flag, why not Pascal too? */ | |
86 | int pascal_static_field_print; | |
87 | ||
88 | /* Controls Python pretty-printing. */ | |
89 | int raw; | |
90 | ||
91 | /* If nonzero, print the value in "summary" form. */ | |
92 | int summary; | |
93 | }; | |
94 | ||
95 | /* The global print options set by the user. In general this should | |
96 | not be directly accessed, except by set/show commands. Ordinary | |
97 | code should call get_user_print_options instead. */ | |
98 | extern struct value_print_options user_print_options; | |
99 | ||
100 | /* Initialize *OPTS to be a copy of the user print options. */ | |
101 | extern void get_user_print_options (struct value_print_options *opts); | |
102 | ||
103 | /* Initialize *OPTS to be a copy of the user print options, but with | |
104 | pretty-printing disabled. */ | |
105 | extern void get_raw_print_options (struct value_print_options *opts); | |
106 | ||
107 | /* Initialize *OPTS to be a copy of the user print options, but using | |
108 | FORMAT as the formatting option. */ | |
109 | extern void get_formatted_print_options (struct value_print_options *opts, | |
110 | char format); | |
111 | ||
112 | extern void maybe_print_array_index (struct type *index_type, LONGEST index, | |
113 | struct ui_file *stream, | |
114 | const struct value_print_options *); | |
115 | ||
116 | extern void val_print_array_elements (struct type *, const gdb_byte *, int, | |
117 | CORE_ADDR, struct ui_file *, int, | |
118 | const struct value *, | |
119 | const struct value_print_options *, | |
120 | unsigned int); | |
121 | ||
122 | extern void val_print_type_code_int (struct type *, const gdb_byte *, | |
123 | struct ui_file *); | |
124 | ||
125 | extern void val_print_type_code_flags (struct type *type, | |
126 | const gdb_byte *valaddr, | |
127 | struct ui_file *stream); | |
128 | ||
129 | extern void val_print_scalar_formatted (struct type *, | |
130 | const gdb_byte *, int, | |
131 | const struct value *, | |
132 | const struct value_print_options *, | |
133 | int, | |
134 | struct ui_file *); | |
135 | ||
136 | extern void print_binary_chars (struct ui_file *, const gdb_byte *, | |
137 | unsigned int, enum bfd_endian); | |
138 | ||
139 | extern void print_octal_chars (struct ui_file *, const gdb_byte *, | |
140 | unsigned int, enum bfd_endian); | |
141 | ||
142 | extern void print_decimal_chars (struct ui_file *, const gdb_byte *, | |
143 | unsigned int, enum bfd_endian); | |
144 | ||
145 | extern void print_hex_chars (struct ui_file *, const gdb_byte *, | |
146 | unsigned int, enum bfd_endian); | |
147 | ||
148 | extern void print_char_chars (struct ui_file *, struct type *, | |
149 | const gdb_byte *, unsigned int, enum bfd_endian); | |
150 | ||
151 | extern void print_function_pointer_address (struct gdbarch *gdbarch, | |
152 | CORE_ADDR address, | |
153 | struct ui_file *stream, | |
154 | int addressprint); | |
155 | ||
156 | int read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit, | |
157 | enum bfd_endian byte_order, gdb_byte **buffer, | |
158 | int *bytes_read); | |
159 | ||
160 | extern void val_print_optimized_out (struct ui_file *stream); | |
161 | ||
162 | extern void val_print_unavailable (struct ui_file *stream); | |
163 | ||
164 | extern void val_print_invalid_address (struct ui_file *stream); | |
165 | ||
166 | extern void generic_emit_char (int c, struct type *type, struct ui_file *stream, | |
167 | int quoter, const char *encoding); | |
168 | ||
169 | extern void generic_printstr (struct ui_file *stream, struct type *type, | |
170 | const gdb_byte *string, unsigned int length, | |
171 | const char *encoding, int force_ellipses, | |
172 | int quote_char, int c_style_terminator, | |
173 | const struct value_print_options *options); | |
174 | ||
175 | #endif |