- switch (TYPE_CODE (type))
- {
- default:
- fprintf_filtered (stream, "<");
- c_print_type (type, "", stream, show, level);
- fprintf_filtered (stream, ">");
- break;
- case TYPE_CODE_PTR:
- fprintf_filtered (stream, "access ");
- ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show,
- level);
- break;
- case TYPE_CODE_REF:
- fprintf_filtered (stream, "<ref> ");
- ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show,
- level);
- break;
- case TYPE_CODE_ARRAY:
- print_array_type (type, stream, show, level);
- break;
- case TYPE_CODE_INT:
- if (ada_is_fixed_point_type (type))
- print_fixed_point_type (type, stream);
- else if (ada_is_vax_floating_type (type))
- print_vax_floating_point_type (type, stream);
- else
- {
- char* name = ada_type_name (type);
- if (! ada_is_range_type_name (name))
- fprintf_filtered (stream, "<%d-byte integer>", TYPE_LENGTH (type));
- else
- {
- fprintf_filtered (stream, "range ");
- print_range_type_named (name, stream);
- }
- }
- break;
- case TYPE_CODE_RANGE:
- if (ada_is_fixed_point_type (type))
- print_fixed_point_type (type, stream);
- else if (ada_is_vax_floating_type (type))
- print_vax_floating_point_type (type, stream);
- else if (ada_is_modular_type (type))
- fprintf_filtered (stream, "mod %ld", (long) ada_modulus (type));
- else
- {
- fprintf_filtered (stream, "range ");
- print_range (type, stream);
- }
- break;
- case TYPE_CODE_FLT:
- fprintf_filtered (stream, "<%d-byte float>", TYPE_LENGTH (type));
- break;
- case TYPE_CODE_ENUM:
- if (show < 0)
- fprintf_filtered (stream, "(...)");
- else
- print_enum_type (type, stream);
- break;
- case TYPE_CODE_STRUCT:
- if (ada_is_array_descriptor (type))
- print_array_type (type, stream, show, level);
- else if (ada_is_bogus_array_descriptor (type))
- fprintf_filtered (stream, "array (?) of ? (<mal-formed descriptor>)");
- else
- print_record_type (type, stream, show, level);
- break;
- case TYPE_CODE_UNION:
- print_unchecked_union_type (type, stream, show, level);
- break;
- case TYPE_CODE_FUNC:
- print_func_type (type, stream, varstring);
- break;
- }
+ switch (TYPE_CODE (type))
+ {
+ default:
+ fprintf_filtered (stream, "<");
+ c_print_type (type, "", stream, show, level, flags);
+ fprintf_filtered (stream, ">");
+ break;
+ case TYPE_CODE_PTR:
+ case TYPE_CODE_TYPEDEF:
+ fprintf_filtered (stream, "access ");
+ ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level,
+ flags);
+ break;
+ case TYPE_CODE_REF:
+ fprintf_filtered (stream, "<ref> ");
+ ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level,
+ flags);
+ break;
+ case TYPE_CODE_ARRAY:
+ print_array_type (type, stream, show, level, flags);
+ break;
+ case TYPE_CODE_BOOL:
+ fprintf_filtered (stream, "(false, true)");
+ break;
+ case TYPE_CODE_INT:
+ if (ada_is_fixed_point_type (type))
+ print_fixed_point_type (type, stream);
+ else
+ {
+ const char *name = ada_type_name (type);
+
+ if (!ada_is_range_type_name (name))
+ fprintf_filtered (stream, _("<%d-byte integer>"),
+ TYPE_LENGTH (type));
+ else
+ {
+ fprintf_filtered (stream, "range ");
+ print_range_type (type, stream, 1 /* bounds_prefered_p */);
+ }
+ }
+ break;
+ case TYPE_CODE_RANGE:
+ if (ada_is_fixed_point_type (type))
+ print_fixed_point_type (type, stream);
+ else if (ada_is_modular_type (type))
+ fprintf_filtered (stream, "mod %s",
+ int_string (ada_modulus (type), 10, 0, 0, 1));
+ else
+ {
+ fprintf_filtered (stream, "range ");
+ print_range (type, stream, 1 /* bounds_prefered_p */);
+ }
+ break;
+ case TYPE_CODE_FLT:
+ fprintf_filtered (stream, _("<%d-byte float>"), TYPE_LENGTH (type));
+ break;
+ case TYPE_CODE_ENUM:
+ if (show < 0)
+ fprintf_filtered (stream, "(...)");
+ else
+ print_enum_type (type, stream);
+ break;
+ case TYPE_CODE_STRUCT:
+ if (ada_is_array_descriptor_type (type))
+ print_array_type (type, stream, show, level, flags);
+ else if (ada_is_bogus_array_descriptor (type))
+ fprintf_filtered (stream,
+ _("array (?) of ? (<mal-formed descriptor>)"));
+ else
+ print_record_type (type, stream, show, level, flags);
+ break;
+ case TYPE_CODE_UNION:
+ print_unchecked_union_type (type, stream, show, level, flags);
+ break;
+ case TYPE_CODE_FUNC:
+ print_func_type (type, stream, varstring, flags);
+ break;
+ }
+}
+
+/* Implement the la_print_typedef language method for Ada. */
+
+void
+ada_print_typedef (struct type *type, struct symbol *new_symbol,
+ struct ui_file *stream)
+{
+ type = ada_check_typedef (type);
+ ada_print_type (type, "", stream, 0, 0, &type_print_raw_options);
+ fprintf_filtered (stream, "\n");