summaryrefslogtreecommitdiff
path: root/gdb/typeprint.c
diff options
context:
space:
mode:
authorPierre Muller <muller@ics.u-strasbg.fr>2000-09-04 08:29:25 +0000
committerPierre Muller <muller@ics.u-strasbg.fr>2000-09-04 08:29:25 +0000
commitcc6f60e1ef2ad93ea4e8cf7c3d9712826530bbd1 (patch)
treec1ec0f286bac81b8bd947b76aa85993e0e88341d /gdb/typeprint.c
parent177d956f7dafee9d341922d74b3e4330d17645ca (diff)
downloadgdb-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.c55
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).