fprintf_filtered(stream, "typedef ");
type_print(type,"",stream,0);
if(TYPE_NAME ((SYMBOL_TYPE (new))) == 0
- || 0 != strcmp (TYPE_NAME ((SYMBOL_TYPE (new))),
- SYMBOL_NAME (new)))
- fprintf_filtered(stream, " %s", SYMBOL_NAME(new));
+ || !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)) ||
- strcmp (TYPE_NAME(SYMBOL_TYPE(new)),
- SYMBOL_NAME(new)))
- fprintf_filtered(stream, "%s = ", SYMBOL_NAME(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
-/* start-sanitize-chill */
#ifdef _LANG_chill
case language_chill:
error ("Missing Chill support in function c_typedef_print."); /*FIXME*/
#endif
-/* end-sanitize-chill */
default:
error("Language not supported.");
}
int level;
{
register enum type_code code;
- char *demangled = NULL;
int demangled_args;
c_type_print_base (type, stream, show, level);
fputs_filtered (" ", stream);
c_type_print_varspec_prefix (type, stream, show, 0);
- /* See if the name has a C++ demangled equivalent, and if so, print that
- instead. */
-
- if (demangle)
- {
- demangled = cplus_demangle (varstring, DMGL_ANSI | DMGL_PARAMS);
- }
- fputs_filtered ((demangled != NULL) ? demangled : varstring, stream);
+ fputs_filtered (varstring, stream);
/* For demangled function names, we have the arglist as part of the name,
so don't print an additional pair of ()'s */
- demangled_args = (demangled != NULL) && (code == TYPE_CODE_FUNC);
+ demangled_args = varstring[strlen(varstring) - 1] == ')';
c_type_print_varspec_suffix (type, stream, show, 0, demangled_args);
- if (demangled != NULL)
- {
- free (demangled);
- }
}
/* Print the C++ method arguments ARGS to the file STREAM. */
{
int i;
- fputs_demangled (prefix, stream, DMGL_ANSI | DMGL_PARAMS);
- fputs_demangled (varstring, stream, DMGL_ANSI | DMGL_PARAMS);
+ fprintf_symbol_filtered (stream, prefix, language_cplus, DMGL_ANSI);
+ fprintf_symbol_filtered (stream, varstring, language_cplus, DMGL_ANSI);
fputs_filtered (" (", stream);
if (args && args[!staticp] && args[!staticp]->code != TYPE_CODE_VOID)
{
case TYPE_CODE_BOOL:
case TYPE_CODE_SET:
case TYPE_CODE_RANGE:
- case TYPE_CODE_PASCAL_ARRAY:
+ case TYPE_CODE_STRING:
/* These types need no prefix. They are listed here so that
gcc -Wall will reveal any types that haven't been handled. */
break;
case TYPE_CODE_BOOL:
case TYPE_CODE_SET:
case TYPE_CODE_RANGE:
- case TYPE_CODE_PASCAL_ARRAY:
+ case TYPE_CODE_STRING:
/* These types do not need a suffix. They are listed so that
gcc -Wall will report types that may not have been considered. */
break;
break;
case TYPE_CODE_STRUCT:
- fprintf_filtered (stream,
- HAVE_CPLUS_STRUCT (type) ? "class " : "struct ");
+ if (HAVE_CPLUS_STRUCT (type))
+ {
+ /* Always print it as "class foo" even if foo is a typedef'd
+ name, not a tag. */
+ fprintf_filtered (stream, "class ");
+ name = type_name_no_tag (type);
+ if (name != NULL)
+ {
+ fputs_filtered (name, stream);
+ fputs_filtered (" ", stream);
+ wrap_here (" ");
+ }
+ }
+ else
+ {
+ fprintf_filtered (stream, "struct ");
+ name = TYPE_NAME (type);
+ /* If the name does not start with "struct " it means that the
+ type was defined without a tag, so don't print a tag. It is
+ possible that we should have a better way of distinguising
+ tag names from typedef'd names. (e.g. a new tagname field in
+ the struct type). */
+ if (name != NULL && strncmp (name, "struct ", 7) == 0)
+ {
+ fputs_filtered (name + 7, stream);
+ fputs_filtered (" ", stream);
+ }
+ }
goto struct_union;
case TYPE_CODE_UNION:
fprintf_filtered (stream, "union ");
- struct_union:
- if ((name = type_name_no_tag (type)) != NULL)
+ if (HAVE_CPLUS_STRUCT (type))
{
- fputs_filtered (name, stream);
- fputs_filtered (" ", stream);
- wrap_here (" ");
+ /* Always print it as "union foo" even if foo is a typedef'd
+ name, not a tag. */
+ name = type_name_no_tag (type);
+ if (name != NULL)
+ {
+ fputs_filtered (name, stream);
+ fputs_filtered (" ", stream);
+ wrap_here (" ");
+ }
+ }
+ else
+ {
+ name = TYPE_NAME (type);
+ /* If the name does not start with "union " it means that the
+ type was defined without a tag, so don't print a tag. It is
+ possible that we should have a better way of distinguising
+ tag names from typedef'd names. (e.g. a new tagname field in
+ the struct type). */
+ if (name != NULL && strncmp (name, "union ", 6) == 0)
+ {
+ fputs_filtered (name + 6, stream);
+ fputs_filtered (" ", stream);
+ }
}
+ struct_union:
+ wrap_here (" ");
if (show < 0)
fprintf_filtered (stream, "{...}");
else
struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
int j, len2 = TYPE_FN_FIELDLIST_LENGTH (type, i);
char *method_name = TYPE_FN_FIELDLIST_NAME (type, i);
- int is_constructor = name && strcmp(method_name, name) == 0;
+ int is_constructor = name && STREQ(method_name, name);
for (j = 0; j < len2; j++)
{
QUIT;
case TYPE_CODE_ENUM:
fprintf_filtered (stream, "enum ");
- if ((name = type_name_no_tag (type)) != NULL)
+ name = TYPE_NAME (type);
+
+ /* If the name does not start with "enum " it means that the
+ type was defined without a tag, so don't print a tag. It is
+ possible that we should have a better way of distinguising
+ tag names from typedef'd names. (e.g. a new tagname field in
+ the struct type). */
+ if (name != NULL && strncmp (name, "enum ", 5) == 0)
{
- fputs_filtered (name, stream);
+ fputs_filtered (name + 5, stream);
fputs_filtered (" ", stream);
}
+
wrap_here (" ");
if (show < 0)
fprintf_filtered (stream, "{...}");