1 /* Language independent support for printing types for GDB, the GNU debugger. 2 Copyright (C) 1986-2013 Free Software Foundation, Inc. 3 4 This file is part of GDB. 5 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 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 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. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 18 19 #ifndef TYPEPRINT_H 20 #define TYPEPRINT_H 21 22 enum language; 23 struct ui_file; 24 struct typedef_hash_table; 25 26 struct type_print_options 27 { 28 /* True means that no special printing flags should apply. */ 29 unsigned int raw : 1; 30 31 /* True means print methods in a class. */ 32 unsigned int print_methods : 1; 33 34 /* True means print typedefs in a class. */ 35 unsigned int print_typedefs : 1; 36 37 /* If not NULL, a local typedef hash table used when printing a 38 type. */ 39 struct typedef_hash_table *local_typedefs; 40 41 /* If not NULL, a global typedef hash table used when printing a 42 type. */ 43 struct typedef_hash_table *global_typedefs; 44 45 /* The list of type printers associated with the global typedef 46 table. This is intentionally opaque. */ 47 void *global_printers; 48 }; 49 50 extern const struct type_print_options type_print_raw_options; 51 52 void recursively_update_typedef_hash (struct typedef_hash_table *, 53 struct type *); 54 55 void add_template_parameters (struct typedef_hash_table *, struct type *); 56 57 struct typedef_hash_table *create_typedef_hash (void); 58 59 void free_typedef_hash (struct typedef_hash_table *); 60 61 struct cleanup *make_cleanup_free_typedef_hash (struct typedef_hash_table *); 62 63 struct typedef_hash_table *copy_typedef_hash (struct typedef_hash_table *); 64 65 const char *find_typedef_in_hash (const struct type_print_options *, 66 struct type *); 67 68 void print_type_scalar (struct type * type, LONGEST, struct ui_file *); 69 70 void c_type_print_varspec_suffix (struct type *, struct ui_file *, int, 71 int, int, const struct type_print_options *); 72 73 void c_type_print_args (struct type *, struct ui_file *, int, enum language, 74 const struct type_print_options *); 75 76 #endif 77