Use enum flags for flags passed to openp
[deliverable/binutils-gdb.git] / gdb / typeprint.h
CommitLineData
c906108c 1/* Language independent support for printing types for GDB, the GNU debugger.
e2882c85 2 Copyright (C) 1986-2018 Free Software Foundation, Inc.
c906108c 3
c5aa993b 4 This file is part of GDB.
c906108c 5
c5aa993b
JM
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
a9762ec7 8 the Free Software Foundation; either version 3 of the License, or
c5aa993b 9 (at your option) any later version.
c906108c 10
c5aa993b
JM
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
c906108c 15
c5aa993b 16 You should have received a copy of the GNU General Public License
a9762ec7 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 18
17732724
AC
19#ifndef TYPEPRINT_H
20#define TYPEPRINT_H
21
94af9270 22enum language;
da3331ec 23struct ui_file;
bd69fc68 24struct typedef_hash_table;
6dddc817 25struct ext_lang_type_printers;
da3331ec 26
7c161838
SDJ
27struct print_offset_data
28{
29 /* The offset to be applied to bitpos when PRINT_OFFSETS is true.
30 This is needed for when we are printing nested structs and want
31 to make sure that the printed offset for each field carries over
32 the offset of the outter struct. */
33 unsigned int offset_bitpos = 0;
34
35 /* END_BITPOS is the one-past-the-end bit position of the previous
36 field (where we expect the current field to be if there is no
37 hole). */
38 unsigned int end_bitpos = 0;
39};
40
79d43c61
TT
41struct type_print_options
42{
43 /* True means that no special printing flags should apply. */
44 unsigned int raw : 1;
53342f27
TT
45
46 /* True means print methods in a class. */
47 unsigned int print_methods : 1;
48
49 /* True means print typedefs in a class. */
50 unsigned int print_typedefs : 1;
bd69fc68 51
7c161838
SDJ
52 /* True means to print offsets, a la 'pahole'. */
53 unsigned int print_offsets : 1;
54
883fd55a
KS
55 /* The number of nested type definitions to print. -1 == all. */
56 int print_nested_type_limit;
57
bd69fc68
TT
58 /* If not NULL, a local typedef hash table used when printing a
59 type. */
60 struct typedef_hash_table *local_typedefs;
18a9fc12
TT
61
62 /* If not NULL, a global typedef hash table used when printing a
63 type. */
64 struct typedef_hash_table *global_typedefs;
65
66 /* The list of type printers associated with the global typedef
67 table. This is intentionally opaque. */
6dddc817 68 struct ext_lang_type_printers *global_printers;
79d43c61
TT
69};
70
71extern const struct type_print_options type_print_raw_options;
72
bd69fc68
TT
73void recursively_update_typedef_hash (struct typedef_hash_table *,
74 struct type *);
75
76void add_template_parameters (struct typedef_hash_table *, struct type *);
77
78struct typedef_hash_table *create_typedef_hash (void);
79
80void free_typedef_hash (struct typedef_hash_table *);
81
82struct cleanup *make_cleanup_free_typedef_hash (struct typedef_hash_table *);
83
84struct typedef_hash_table *copy_typedef_hash (struct typedef_hash_table *);
85
86const char *find_typedef_in_hash (const struct type_print_options *,
87 struct type *);
88
d9fcf2fb 89void print_type_scalar (struct type * type, LONGEST, struct ui_file *);
c906108c 90
d9fcf2fb 91void c_type_print_varspec_suffix (struct type *, struct ui_file *, int,
79d43c61
TT
92 int, int, const struct type_print_options *);
93
94void c_type_print_args (struct type *, struct ui_file *, int, enum language,
95 const struct type_print_options *);
94af9270 96
7022349d
PA
97/* Print <unknown return type> to stream STREAM. */
98
99void type_print_unknown_return_type (struct ui_file *stream);
100
46a4882b
PA
101/* Throw an error indicating that the user tried to use a symbol that
102 has unknown type. SYM_PRINT_NAME is the name of the symbol, to be
103 included in the error message. */
104extern void error_unknown_type (const char *sym_print_name);
105
3f2f83dd
KB
106extern void val_print_not_allocated (struct ui_file *stream);
107
108extern void val_print_not_associated (struct ui_file *stream);
109
17732724 110#endif
This page took 2.136642 seconds and 4 git commands to generate.