Change how complex types are printed in C
[deliverable/binutils-gdb.git] / gdb / f-valprint.c
index f927214ae653db6f7896ae3bf52e229982d364e2..36328c796ca3e58ff1b893a581dc081bf13c75e6 100644 (file)
@@ -208,192 +208,6 @@ static const struct generic_val_print_decorations f_decorations =
   "}"
 };
 
-/* See val_print for a description of the various parameters of this
-   function; they are identical.  */
-
-void
-f_val_print (struct type *type, int embedded_offset,
-            CORE_ADDR address, struct ui_file *stream, int recurse,
-            struct value *original_value,
-            const struct value_print_options *options)
-{
-  struct gdbarch *gdbarch = get_type_arch (type);
-  int printed_field = 0; /* Number of fields printed.  */
-  struct type *elttype;
-  CORE_ADDR addr;
-  int index;
-  const gdb_byte *valaddr =value_contents_for_printing (original_value);
-
-  type = check_typedef (type);
-  switch (TYPE_CODE (type))
-    {
-    case TYPE_CODE_STRING:
-      f77_get_dynamic_length_of_aggregate (type);
-      LA_PRINT_STRING (stream, builtin_type (gdbarch)->builtin_char,
-                      valaddr + embedded_offset,
-                      TYPE_LENGTH (type), NULL, 0, options);
-      break;
-
-    case TYPE_CODE_ARRAY:
-      if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_CHAR)
-       {
-         fprintf_filtered (stream, "(");
-         f77_print_array (type, valaddr, embedded_offset,
-                          address, stream, recurse, original_value, options);
-         fprintf_filtered (stream, ")");
-       }
-      else
-       {
-         struct type *ch_type = TYPE_TARGET_TYPE (type);
-
-         f77_get_dynamic_length_of_aggregate (type);
-         LA_PRINT_STRING (stream, ch_type,
-                          valaddr + embedded_offset,
-                          TYPE_LENGTH (type) / TYPE_LENGTH (ch_type),
-                          NULL, 0, options);
-       }
-      break;
-
-    case TYPE_CODE_PTR:
-      if (options->format && options->format != 's')
-       {
-         val_print_scalar_formatted (type, embedded_offset,
-                                     original_value, options, 0, stream);
-         break;
-       }
-      else
-       {
-         int want_space = 0;
-
-         addr = unpack_pointer (type, valaddr + embedded_offset);
-         elttype = check_typedef (TYPE_TARGET_TYPE (type));
-
-         if (TYPE_CODE (elttype) == TYPE_CODE_FUNC)
-           {
-             /* Try to print what function it points to.  */
-             print_function_pointer_address (options, gdbarch, addr, stream);
-             return;
-           }
-
-         if (options->symbol_print)
-           want_space = print_address_demangle (options, gdbarch, addr,
-                                                stream, demangle);
-         else if (options->addressprint && options->format != 's')
-           {
-             fputs_filtered (paddress (gdbarch, addr), stream);
-             want_space = 1;
-           }
-
-         /* For a pointer to char or unsigned char, also print the string
-            pointed to, unless pointer is null.  */
-         if (TYPE_LENGTH (elttype) == 1
-             && TYPE_CODE (elttype) == TYPE_CODE_INT
-             && (options->format == 0 || options->format == 's')
-             && addr != 0)
-           {
-             if (want_space)
-               fputs_filtered (" ", stream);
-             val_print_string (TYPE_TARGET_TYPE (type), NULL, addr, -1,
-                               stream, options);
-           }
-         return;
-       }
-      break;
-
-    case TYPE_CODE_INT:
-      if (options->format || options->output_format)
-       {
-         struct value_print_options opts = *options;
-
-         opts.format = (options->format ? options->format
-                        : options->output_format);
-         val_print_scalar_formatted (type, embedded_offset,
-                                     original_value, &opts, 0, stream);
-       }
-      else
-       val_print_scalar_formatted (type, embedded_offset,
-                                   original_value, options, 0, stream);
-      break;
-
-    case TYPE_CODE_STRUCT:
-    case TYPE_CODE_UNION:
-      /* Starting from the Fortran 90 standard, Fortran supports derived
-         types.  */
-      fprintf_filtered (stream, "( ");
-      for (index = 0; index < TYPE_NFIELDS (type); index++)
-        {
-         struct value *field = value_field
-           ((struct value *)original_value, index);
-
-         struct type *field_type = check_typedef (TYPE_FIELD_TYPE (type, index));
-
-
-         if (TYPE_CODE (field_type) != TYPE_CODE_FUNC)
-           {
-             const char *field_name;
-
-             if (printed_field > 0)
-               fputs_filtered (", ", stream);
-
-             field_name = TYPE_FIELD_NAME (type, index);
-             if (field_name != NULL)
-               {
-                 fputs_styled (field_name, variable_name_style.style (),
-                               stream);
-                 fputs_filtered (" = ", stream);
-               }
-
-             common_val_print (field, stream, recurse + 1,
-                               options, current_language);
-
-             ++printed_field;
-           }
-        }
-      fprintf_filtered (stream, " )");
-      break;     
-
-    case TYPE_CODE_BOOL:
-      if (options->format || options->output_format)
-       {
-         struct value_print_options opts = *options;
-         opts.format = (options->format ? options->format
-                        : options->output_format);
-         val_print_scalar_formatted (type, embedded_offset,
-                                     original_value, &opts, 0, stream);
-       }
-      else
-       {
-         int unit_size = gdbarch_addressable_memory_unit_size (gdbarch);
-         LONGEST val
-           = unpack_long (type, valaddr + embedded_offset * unit_size);
-         /* The Fortran standard doesn't specify how logical types are
-            represented.  Different compilers use different non zero
-            values to represent logical true.  */
-         if (val == 0)
-           fputs_filtered (f_decorations.false_name, stream);
-         else
-           fputs_filtered (f_decorations.true_name, stream);
-       }
-      break;
-
-    case TYPE_CODE_REF:
-    case TYPE_CODE_FUNC:
-    case TYPE_CODE_FLAGS:
-    case TYPE_CODE_FLT:
-    case TYPE_CODE_VOID:
-    case TYPE_CODE_ERROR:
-    case TYPE_CODE_RANGE:
-    case TYPE_CODE_UNDEF:
-    case TYPE_CODE_COMPLEX:
-    case TYPE_CODE_CHAR:
-    default:
-      generic_val_print (type, embedded_offset, address,
-                        stream, recurse, original_value, options,
-                        &f_decorations);
-      break;
-    }
-}
-
 /* See f-lang.h.  */
 
 void
This page took 0.024938 seconds and 4 git commands to generate.