GDB (API)
|
00001 /* Language independent support for printing types for GDB, the GNU debugger. 00002 Copyright (C) 1986-2013 Free Software Foundation, Inc. 00003 00004 This file is part of GDB. 00005 00006 This program is free software; you can redistribute it and/or modify 00007 it under the terms of the GNU General Public License as published by 00008 the Free Software Foundation; either version 3 of the License, or 00009 (at your option) any later version. 00010 00011 This program is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU General Public License for more details. 00015 00016 You should have received a copy of the GNU General Public License 00017 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00018 00019 #ifndef TYPEPRINT_H 00020 #define TYPEPRINT_H 00021 00022 enum language; 00023 struct ui_file; 00024 struct typedef_hash_table; 00025 00026 struct type_print_options 00027 { 00028 /* True means that no special printing flags should apply. */ 00029 unsigned int raw : 1; 00030 00031 /* True means print methods in a class. */ 00032 unsigned int print_methods : 1; 00033 00034 /* True means print typedefs in a class. */ 00035 unsigned int print_typedefs : 1; 00036 00037 /* If not NULL, a local typedef hash table used when printing a 00038 type. */ 00039 struct typedef_hash_table *local_typedefs; 00040 00041 /* If not NULL, a global typedef hash table used when printing a 00042 type. */ 00043 struct typedef_hash_table *global_typedefs; 00044 00045 /* The list of type printers associated with the global typedef 00046 table. This is intentionally opaque. */ 00047 void *global_printers; 00048 }; 00049 00050 extern const struct type_print_options type_print_raw_options; 00051 00052 void recursively_update_typedef_hash (struct typedef_hash_table *, 00053 struct type *); 00054 00055 void add_template_parameters (struct typedef_hash_table *, struct type *); 00056 00057 struct typedef_hash_table *create_typedef_hash (void); 00058 00059 void free_typedef_hash (struct typedef_hash_table *); 00060 00061 struct cleanup *make_cleanup_free_typedef_hash (struct typedef_hash_table *); 00062 00063 struct typedef_hash_table *copy_typedef_hash (struct typedef_hash_table *); 00064 00065 const char *find_typedef_in_hash (const struct type_print_options *, 00066 struct type *); 00067 00068 void print_type_scalar (struct type * type, LONGEST, struct ui_file *); 00069 00070 void c_type_print_varspec_suffix (struct type *, struct ui_file *, int, 00071 int, int, const struct type_print_options *); 00072 00073 void c_type_print_args (struct type *, struct ui_file *, int, enum language, 00074 const struct type_print_options *); 00075 00076 #endif