#include <string.h>
#include <errno.h>
-extern int demangle; /* whether to print C++ syms raw or source-form */
-
static void
c_type_print_args PARAMS ((struct type *, GDB_FILE *));
#endif
#ifdef _LANG_chill
case language_chill:
- error ("Missing Chill support in function c_typedef_print."); /*FIXME*/
+ 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.");
/* For demangled function names, we have the arglist as part of the name,
so don't print an additional pair of ()'s */
- demangled_args = varstring[strlen(varstring) - 1] == ')';
+ demangled_args = strchr(varstring, '(') != NULL;
c_type_print_varspec_suffix (type, stream, show, 0, demangled_args);
}
case TYPE_CODE_RANGE:
case TYPE_CODE_STRING:
case TYPE_CODE_BITSTRING:
+ case TYPE_CODE_COMPLEX:
+ case TYPE_CODE_LITERAL_COMPLEX:
+ case TYPE_CODE_LITERAL_STRING:
/* These types need no prefix. They are listed here so that
gcc -Wall will reveal any types that haven't been handled. */
break;
break;
case TYPE_CODE_FUNC:
- c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
- passed_a_ptr, 0);
if (passed_a_ptr)
fprintf_filtered (stream, ")");
if (!demangled_args)
fprintf_filtered (stream, "()");
+ c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
+ passed_a_ptr, 0);
break;
case TYPE_CODE_UNDEF:
case TYPE_CODE_RANGE:
case TYPE_CODE_STRING:
case TYPE_CODE_BITSTRING:
+ case TYPE_CODE_COMPLEX:
+ case TYPE_CODE_LITERAL_COMPLEX:
+ case TYPE_CODE_LITERAL_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;
SHOW positive means print details about the type (e.g. enum values),
and print structure elements passing SHOW - 1 for show.
- SHOW zero means just print the type name or struct tag if there is one.
+ SHOW negative means just print the type name or struct tag if there is one.
If there is no name, print something sensible but concise like
"struct {...}".
- SHOW negative means the same things as SHOW zero. The difference is that
- zero is used for printing structure elements and -1 is used for the
- "whatis" command. But I don't see any need to distinguish.
+ SHOW zero means just print the type name or struct tag if there is one.
+ If there is no name, print something sensible but not as concise like
+ "struct {int x; int y;}".
LEVEL is the number of spaces to indent by.
We increase it for some recursive calls. */
return;
}
+ check_stub_type (type);
+
switch (TYPE_CODE (type))
{
case TYPE_CODE_ARRAY:
fputs_filtered (" ", stream);
}
wrap_here (" ");
- if (show <= 0)
+ if (show < 0)
{
/* If we just printed a tag name, no need to print anything else. */
if (TYPE_TAG_NAME (type) == NULL)
fprintf_filtered (stream, "{...}");
}
- else if (show > 0)
+ else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
{
- check_stub_type (type);
-
cp_type_print_derivation_info (stream, type);
fprintf_filtered (stream, "{\n");
}
wrap_here (" ");
- if (show <= 0)
+ if (show < 0)
{
/* If we just printed a tag name, no need to print anything else. */
if (TYPE_TAG_NAME (type) == NULL)
fprintf_filtered (stream, "{...}");
}
- else if (show > 0)
+ else if (show > 0 || TYPE_TAG_NAME (type) == NULL)
{
fprintf_filtered (stream, "{");
len = TYPE_NFIELDS (type);