diff options
author | Pierre Muller <muller@ics.u-strasbg.fr> | 2000-09-04 08:29:25 +0000 |
---|---|---|
committer | Pierre Muller <muller@ics.u-strasbg.fr> | 2000-09-04 08:29:25 +0000 |
commit | cc6f60e1ef2ad93ea4e8cf7c3d9712826530bbd1 (patch) | |
tree | c1ec0f286bac81b8bd947b76aa85993e0e88341d /gdb/typeprint.c | |
parent | 177d956f7dafee9d341922d74b3e4330d17645ca (diff) | |
download | gdb-cc6f60e1ef2ad93ea4e8cf7c3d9712826530bbd1.tar.gz |
2000-09-04 Pierre Muller <muller@ics.u-strasbg.fr>
* c-typeprint.c (c_typedef_print): remove (replaced by typedef_print in
typeprint.c).
* typeprint.c (typedef_print): new function. (old c_typedef_print
function with pascal language support added).
* value.h (c_printdef_print): removed.
(typedef_print): declare.
* symtab.c (print_symbol_info): call to c_typedef_print replaced by
call to typedef_print.
Diffstat (limited to 'gdb/typeprint.c')
-rw-r--r-- | gdb/typeprint.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gdb/typeprint.c b/gdb/typeprint.c index 7645d9b081d..b46f03f1f59 100644 --- a/gdb/typeprint.c +++ b/gdb/typeprint.c @@ -49,6 +49,61 @@ static void whatis_command (char *, int); static void whatis_exp (char *, int); +/* Print a description of a type in the format of a + typedef for the current language. + NEW is the new name for a type TYPE. */ + +void +typedef_print (struct type *type, struct symbol *new, struct ui_file *stream) +{ + CHECK_TYPEDEF (type); + switch (current_language->la_language) + { +#ifdef _LANG_c + case language_c: + case language_cplus: + fprintf_filtered (stream, "typedef "); + type_print (type, "", stream, 0); + if (TYPE_NAME ((SYMBOL_TYPE (new))) == 0 + || !STREQ (TYPE_NAME ((SYMBOL_TYPE (new))), SYMBOL_NAME (new))) + fprintf_filtered (stream, " %s", SYMBOL_SOURCE_NAME (new)); + break; +#endif +#ifdef _LANG_m2 + case language_m2: + fprintf_filtered (stream, "TYPE "); + if (!TYPE_NAME (SYMBOL_TYPE (new)) || + !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new))) + fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new)); + else + fprintf_filtered (stream, "<builtin> = "); + type_print (type, "", stream, 0); + break; +#endif +#ifdef _LANG_pascal + case language_pascal: + fprintf_filtered (stream, "type "); + fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new)); + type_print (type, "", stream, 0); + break; +#endif +#ifdef _LANG_chill + case language_chill: + fprintf_filtered (stream, "SYNMODE "); + if (!TYPE_NAME (SYMBOL_TYPE (new)) || + !STREQ (TYPE_NAME (SYMBOL_TYPE (new)), SYMBOL_NAME (new))) + fprintf_filtered (stream, "%s = ", SYMBOL_SOURCE_NAME (new)); + else + fprintf_filtered (stream, "<builtin> = "); + type_print (type, "", stream, 0); + break; +#endif + default: + error ("Language not supported."); + } + fprintf_filtered (stream, ";\n"); +} + /* Print a description of a type TYPE in the form of a declaration of a variable named VARSTRING. (VARSTRING is demangled if necessary.) Output goes to STREAM (via stdio). |