static void f77_print_array (struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options) { int ndimensions; int elts = 0; ndimensions = calc_f77_array_dims (type); if (ndimensions > MAX_FORTRAN_DIMS || ndimensions < 0) error (_("Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)"), ndimensions, MAX_FORTRAN_DIMS); /* Since F77 arrays are stored column-major, we set up an offset table to get at the various row's elements. The offset table contains entries for both offset and subarray size. */ f77_create_arrayprint_offset_tbl (type, stream); f77_print_array_1 (1, ndimensions, type, valaddr, address, stream, recurse, val, options, &elts); }
static void f77_print_array_1 (int nss, int ndimensions, struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int recurse, const struct value *val, const struct value_print_options *options, int *elts) { int i; if (nss != ndimensions) { for (i = 0; (i < F77_DIM_SIZE (nss) && (*elts) < options->print_max); i++) { fprintf_filtered (stream, "( "); f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (nss), address + i * F77_DIM_OFFSET (nss), stream, recurse, val, options, elts); fprintf_filtered (stream, ") "); } if (*elts >= options->print_max && i < F77_DIM_SIZE (nss)) fprintf_filtered (stream, "..."); } else { for (i = 0; i < F77_DIM_SIZE (nss) && (*elts) < options->print_max; i++, (*elts)++) { val_print (TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (ndimensions), 0, address + i * F77_DIM_OFFSET (ndimensions), stream, recurse, val, options, current_language); if (i != (F77_DIM_SIZE (nss) - 1)) fprintf_filtered (stream, ", "); if ((*elts == options->print_max - 1) && (i != (F77_DIM_SIZE (nss) - 1))) fprintf_filtered (stream, "..."); } } }
static void f77_print_array_1 (int nss, int ndimensions, struct type *type, const gdb_byte *valaddr, CORE_ADDR address, struct ui_file *stream, int format, int deref_ref, int recurse, enum val_prettyprint pretty, int *elts) { int i; if (nss != ndimensions) { for (i = 0; (i < F77_DIM_SIZE (nss) && (*elts) < print_max); i++) { fprintf_filtered (stream, "( "); f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (nss), address + i * F77_DIM_OFFSET (nss), stream, format, deref_ref, recurse, pretty, elts); fprintf_filtered (stream, ") "); } if (*elts >= print_max && i < F77_DIM_SIZE (nss)) fprintf_filtered (stream, "..."); } else { for (i = 0; i < F77_DIM_SIZE (nss) && (*elts) < print_max; i++, (*elts)++) { val_print (TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (ndimensions), 0, address + i * F77_DIM_OFFSET (ndimensions), stream, format, deref_ref, recurse, pretty); if (i != (F77_DIM_SIZE (nss) - 1)) fprintf_filtered (stream, ", "); if ((*elts == print_max - 1) && (i != (F77_DIM_SIZE (nss) - 1))) fprintf_filtered (stream, "..."); } } }