void f_type_print_varspec_prefix(struct type *type, struct ui_file *stream, int show, int passed_a_ptr) { if (type == 0) return; if (TYPE_NAME(type) && show <= 0) return; QUIT; switch (TYPE_CODE(type)) { case TYPE_CODE_PTR: f_type_print_varspec_prefix(TYPE_TARGET_TYPE(type), stream, 0, 1); break; case TYPE_CODE_FUNC: f_type_print_varspec_prefix(TYPE_TARGET_TYPE(type), stream, 0, 0); if (passed_a_ptr) fprintf_filtered(stream, "("); break; case TYPE_CODE_ARRAY: f_type_print_varspec_prefix(TYPE_TARGET_TYPE(type), stream, 0, 0); break; case TYPE_CODE_UNDEF: case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: case TYPE_CODE_ENUM: case TYPE_CODE_INT: case TYPE_CODE_FLT: case TYPE_CODE_VOID: case TYPE_CODE_ERROR: case TYPE_CODE_CHAR: case TYPE_CODE_BOOL: case TYPE_CODE_SET: case TYPE_CODE_RANGE: case TYPE_CODE_STRING: case TYPE_CODE_BITSTRING: case TYPE_CODE_METHOD: case TYPE_CODE_MEMBER: case TYPE_CODE_REF: case TYPE_CODE_COMPLEX: case TYPE_CODE_TYPEDEF: /* These types need no prefix. They are listed here so that gcc -Wall will reveal any types that have NOT been handled. */ break; default: break; } }
void f_print_type (struct type *type, const char *varstring, struct ui_file *stream, int show, int level) { enum type_code code; int demangled_args; f_type_print_base (type, stream, show, level); code = TYPE_CODE (type); if ((varstring != NULL && *varstring != '\0') /* Need a space if going to print stars or brackets; but not if we will print just a type name. */ || ((show > 0 || TYPE_NAME (type) == 0) && (code == TYPE_CODE_PTR || code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD || code == TYPE_CODE_ARRAY || code == TYPE_CODE_REF))) fputs_filtered (" ", stream); f_type_print_varspec_prefix (type, stream, show, 0); if (varstring != NULL) { 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 = varstring[strlen (varstring) - 1] == ')'; f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0); } }