static int m2_long_set (struct type *type, struct ui_file *stream, int show, int level) { struct type *index_type; struct type *range_type; struct type *of_type; int i; int len = TYPE_NFIELDS (type); LONGEST low; LONGEST high; if (m2_is_long_set (type)) { if (TYPE_TAG_NAME (type) != NULL) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show == 0) return 1; } else if (TYPE_NAME (type) != NULL) { fputs_filtered (TYPE_NAME (type), stream); if (show == 0) return 1; } if (TYPE_TAG_NAME (type) != NULL || TYPE_NAME (type) != NULL) fputs_filtered (" = ", stream); if (get_long_set_bounds (type, &low, &high)) { fprintf_filtered(stream, "SET OF "); i = TYPE_N_BASECLASSES (type); if (m2_is_long_set_of_type (type, &of_type)) m2_print_type (of_type, "", stream, show - 1, level); else { fprintf_filtered(stream, "["); m2_print_bounds (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, i)), stream, show - 1, level, 0); fprintf_filtered(stream, ".."); m2_print_bounds (TYPE_INDEX_TYPE (TYPE_FIELD_TYPE (type, len-1)), stream, show - 1, level, 1); fprintf_filtered(stream, "]"); } } else /* i18n: Do not translate the "SET OF" part! */ fprintf_filtered(stream, _("SET OF <unknown>")); return 1; } return 0; }
static void m2_short_set (struct type *type, struct ui_file *stream, int show, int level) { fprintf_filtered(stream, "SET ["); m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show - 1, level, 0); fprintf_filtered(stream, ".."); m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show - 1, level, 1); fprintf_filtered(stream, "]"); }
static void m2_array (struct type *type, struct ui_file *stream, int show, int level) { fprintf_filtered (stream, "ARRAY ["); if (TYPE_LENGTH (type) >= 0 && TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 && TYPE_ARRAY_UPPER_BOUND_TYPE (type) != BOUND_CANNOT_BE_DETERMINED) { if (TYPE_INDEX_TYPE (type) != 0) { m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 0); fprintf_filtered (stream, ".."); m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1); } else fprintf_filtered (stream, "%d", (TYPE_LENGTH (type) / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))); } fprintf_filtered (stream, "] OF "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level); }
static void m2_array (struct type *type, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { fprintf_filtered (stream, "ARRAY ["); if (TYPE_LENGTH (TYPE_TARGET_TYPE (type)) > 0 && !TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) { if (TYPE_INDEX_TYPE (type) != 0) { m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 0); fprintf_filtered (stream, ".."); m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1); } else fprintf_filtered (stream, "%d", (TYPE_LENGTH (type) / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))); } fprintf_filtered (stream, "] OF "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags); }