static void m2_procedure (struct type *type, struct ui_file *stream, int show, int level) { fprintf_filtered (stream, "PROCEDURE "); m2_type_name (type, stream); if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID) { int i, len = TYPE_NFIELDS (type); fprintf_filtered (stream, " ("); for (i = 0; i < len; i++) { if (i > 0) { fputs_filtered (", ", stream); wrap_here (" "); } m2_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0); } if (TYPE_TARGET_TYPE (type) != NULL) { fprintf_filtered (stream, " : "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, 0, 0); } } }
void m2_record_fields (struct type *type, struct ui_file *stream, int show, int level) { /* Print the tag if it exists. */ if (TYPE_TAG_NAME (type) != NULL) { if (strncmp (TYPE_TAG_NAME (type), "$$", 2) != 0) { fputs_filtered (TYPE_TAG_NAME (type), stream); if (show > 0) fprintf_filtered (stream, " = "); } } wrap_here (" "); if (show < 0) { if (TYPE_CODE (type) == DECLARED_TYPE_STRUCT) fprintf_filtered (stream, "RECORD ... END "); else if (TYPE_DECLARED_TYPE (type) == DECLARED_TYPE_UNION) fprintf_filtered (stream, "CASE ... END "); } else if (show > 0) { int i; int len = TYPE_NFIELDS (type); if (TYPE_CODE (type) == TYPE_CODE_STRUCT) fprintf_filtered (stream, "RECORD\n"); else if (TYPE_CODE (type) == TYPE_CODE_UNION) /* i18n: Do not translate "CASE" and "OF" */ fprintf_filtered (stream, _("CASE <variant> OF\n")); for (i = TYPE_N_BASECLASSES (type); i < len; i++) { QUIT; print_spaces_filtered (level + 4, stream); fputs_filtered (TYPE_FIELD_NAME (type, i), stream); fputs_filtered (" : ", stream); m2_print_type (TYPE_FIELD_TYPE (type, i), "", stream, 0, level + 4); if (TYPE_FIELD_PACKED (type, i)) { /* It is a bitfield. This code does not attempt to look at the bitpos and reconstruct filler, unnamed fields. This would lead to misleading results if the compiler does not put out fields for such things (I don't know what it does). */ fprintf_filtered (stream, " : %d", TYPE_FIELD_BITSIZE (type, i)); } fprintf_filtered (stream, ";\n"); } fprintfi_filtered (level, stream, "END "); } }
static void m2_ref (struct type *type, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { fprintf_filtered (stream, "VAR"); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags); }
static void m2_ref (struct type *type, struct ui_file *stream, int show, int level) { fprintf_filtered (stream, "VAR"); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level); }
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_pointer (struct type *type, struct ui_file *stream, int show, int level) { if (TYPE_CONST (type)) fprintf_filtered (stream, "[...] : "); else fprintf_filtered (stream, "POINTER TO "); m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level); }
static void m2_typedef (struct type *type, struct ui_file *stream, int show, int level) { if (TYPE_NAME (type) != NULL) { fputs_filtered (TYPE_NAME (type), stream); fputs_filtered (" = ", stream); } m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level); }
static int m2_unbounded_array (struct type *type, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { if (m2_is_unbounded_array (type)) { if (show > 0) { fputs_filtered ("ARRAY OF ", stream); m2_print_type (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 0)), "", stream, 0, level, flags); } return 1; } return 0; }
void m2_range (struct type *type, struct ui_file *stream, int show, int level) { if (TYPE_HIGH_BOUND (type) == TYPE_LOW_BOUND (type)) m2_print_type (TYPE_DOMAIN_TYPE (type), "", stream, show, level); else { struct type *target = TYPE_TARGET_TYPE (type); fprintf_filtered (stream, "["); print_type_scalar (target, TYPE_LOW_BOUND (type), stream); fprintf_filtered (stream, ".."); print_type_scalar (target, TYPE_HIGH_BOUND (type), stream); 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); }
void m2_range (struct type *type, struct ui_file *stream, int show, int level, const struct type_print_options *flags) { if (TYPE_HIGH_BOUND (type) == TYPE_LOW_BOUND (type)) { /* FIXME: TYPE_TARGET_TYPE used to be TYPE_DOMAIN_TYPE but that was wrong. Not sure if TYPE_TARGET_TYPE is correct though. */ m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags); } else { struct type *target = TYPE_TARGET_TYPE (type); fprintf_filtered (stream, "["); print_type_scalar (target, TYPE_LOW_BOUND (type), stream); fprintf_filtered (stream, ".."); print_type_scalar (target, TYPE_HIGH_BOUND (type), stream); fprintf_filtered (stream, "]"); } }