X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftypeprint.h;h=61dfcb3f1df759413225abc647e1e21147556341;hb=5caa2f0b272d2a6edf56571fd0c59f922f26eb41;hp=0dc32cdeca155126213ad62c6818aebbb215345e;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/typeprint.h b/gdb/typeprint.h index 0dc32cdeca..61dfcb3f1d 100644 --- a/gdb/typeprint.h +++ b/gdb/typeprint.h @@ -1,21 +1,77 @@ /* Language independent support for printing types for GDB, the GNU debugger. - Copyright 1986, 1988, 1989, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright (C) 1986-2014 Free Software Foundation, Inc. -This file is part of GDB. + This file is part of GDB. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ -void -print_type_scalar PARAMS ((struct type *type, LONGEST, GDB_FILE *)); +#ifndef TYPEPRINT_H +#define TYPEPRINT_H + +enum language; +struct ui_file; +struct typedef_hash_table; +struct ext_lang_type_printers; + +struct type_print_options +{ + /* True means that no special printing flags should apply. */ + unsigned int raw : 1; + + /* True means print methods in a class. */ + unsigned int print_methods : 1; + + /* True means print typedefs in a class. */ + unsigned int print_typedefs : 1; + + /* If not NULL, a local typedef hash table used when printing a + type. */ + struct typedef_hash_table *local_typedefs; + + /* If not NULL, a global typedef hash table used when printing a + type. */ + struct typedef_hash_table *global_typedefs; + + /* The list of type printers associated with the global typedef + table. This is intentionally opaque. */ + struct ext_lang_type_printers *global_printers; +}; + +extern const struct type_print_options type_print_raw_options; + +void recursively_update_typedef_hash (struct typedef_hash_table *, + struct type *); + +void add_template_parameters (struct typedef_hash_table *, struct type *); + +struct typedef_hash_table *create_typedef_hash (void); + +void free_typedef_hash (struct typedef_hash_table *); + +struct cleanup *make_cleanup_free_typedef_hash (struct typedef_hash_table *); + +struct typedef_hash_table *copy_typedef_hash (struct typedef_hash_table *); + +const char *find_typedef_in_hash (const struct type_print_options *, + struct type *); + +void print_type_scalar (struct type * type, LONGEST, struct ui_file *); + +void c_type_print_varspec_suffix (struct type *, struct ui_file *, int, + int, int, const struct type_print_options *); + +void c_type_print_args (struct type *, struct ui_file *, int, enum language, + const struct type_print_options *); + +#endif