* gdb.texinfo (Packets): Fix typos "alligned".
[deliverable/binutils-gdb.git] / gdb / ch-typeprint.c
index 8474cce212b84bab2df692f7282ab9692e2189c4..32590f81ecfe1a379c3d6015ea13d9dee19b03e2 100644 (file)
-/* Support for printing Chill types for GDB, the GNU debugger.
-   Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
-
-#include "defs.h"
-#include "obstack.h"
-#include "bfd.h"               /* Binary File Description */
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "expression.h"
-#include "value.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "command.h"
-#include "gdbcmd.h"
-#include "language.h"
-#include "demangle.h"
-#include "ch-lang.h"
-#include "typeprint.h"
-
-#include <string.h>
-#include <errno.h>
-
-static void
-chill_type_print_base PARAMS ((struct type *, GDB_FILE *, int, int));
-
-void
-chill_print_type (type, varstring, stream, show, level)
-     struct type *type;
-     char *varstring;
-     GDB_FILE *stream;
-     int show;
-     int level;
-{
-  if (varstring != NULL && *varstring != '\0')
-    {
-      fputs_filtered (varstring, stream);
-      fputs_filtered (" ", stream);
-    }
-  chill_type_print_base (type, stream, show, level);
-}
-
-/* Print the name of the type (or the ultimate pointer target,
-   function value or array element).
-
-   SHOW nonzero means don't print this type as just its name;
-   show its real definition even if it has a name.
-   SHOW zero means print just typename or tag if there is one
-   SHOW negative means abbreviate structure elements.
-   SHOW is decremented for printing of structure elements.
-
-   LEVEL is the depth to indent by.
-   We increase it for some recursive calls.  */
-
-static void
-chill_type_print_base (type, stream, show, level)
-     struct type *type;
-     GDB_FILE *stream;
-     int show;
-     int level;
-{
-  register int len;
-  register int i;
-  struct type *index_type;
-  struct type *range_type;
-  LONGEST low_bound;
-  LONGEST high_bound;
-
-  QUIT;
-
-  wrap_here ("    ");
-  if (type == NULL)
-    {
-      fputs_filtered ("<type unknown>", stream);
-      return;
-    }
-
-  /* When SHOW is zero or less, and there is a valid type name, then always
-     just print the type name directly from the type. */
-
-  if ((show <= 0) && (TYPE_NAME (type) != NULL))
-    {
-      fputs_filtered (TYPE_NAME (type), stream);
-      return;
-    }
-
-  check_stub_type (type);
-
-  switch (TYPE_CODE (type))
-    {
-      case TYPE_CODE_PTR:
-       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
-         {
-           fprintf_filtered (stream,
-                             TYPE_NAME (type) ? TYPE_NAME (type) : "PTR");
-           break;
-         }
-       fprintf_filtered (stream, "REF ");
-       chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
-       break;
-
-      case TYPE_CODE_BOOL:
-       /* FIXME: we should probably just print the TYPE_NAME, in case
-          anyone ever fixes the compiler to give us the real names
-          in the presence of the chill equivalent of typedef (assuming
-          there is one).  */
-       fprintf_filtered (stream,
-                         TYPE_NAME (type) ? TYPE_NAME (type) : "BOOL");
-       break;
-
-      case TYPE_CODE_ARRAY:
-       range_type = TYPE_FIELD_TYPE (type, 0);
-       index_type = TYPE_TARGET_TYPE (range_type);
-       low_bound = TYPE_FIELD_BITPOS (range_type, 0);
-       high_bound = TYPE_FIELD_BITPOS (range_type, 1);
-        fputs_filtered ("ARRAY (", stream);
-       print_type_scalar (index_type, low_bound, stream);
-       fputs_filtered (":", stream);
-       print_type_scalar (index_type, high_bound, stream);
-       fputs_filtered (") ", stream);
-       chill_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level);
-       break;
-
-      case TYPE_CODE_BITSTRING:
-        fprintf_filtered (stream, "BOOLS (%d)",
-                         TYPE_FIELD_BITPOS (TYPE_FIELD_TYPE(type,0), 1) + 1);
-       break;
-
-      case TYPE_CODE_SET:
-        fputs_filtered ("POWERSET ", stream);
-       chill_print_type (TYPE_INDEX_TYPE (type), "", stream,
-                         show - 1, level);
-       break;
-
-      case TYPE_CODE_STRING:
-       range_type = TYPE_FIELD_TYPE (type, 0);
-       index_type = TYPE_TARGET_TYPE (range_type);
-       high_bound = TYPE_FIELD_BITPOS (range_type, 1);
-        fputs_filtered ("CHARS (", stream);
-       print_type_scalar (index_type, high_bound + 1, stream);
-       fputs_filtered (")", stream);
-       break;
-
-      case TYPE_CODE_MEMBER:
-       fprintf_filtered (stream, "MEMBER ");
-        chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
-       break;
-      case TYPE_CODE_REF:
-       fprintf_filtered (stream, "/*LOC*/ ");
-        chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
-       break;
-      case TYPE_CODE_FUNC:
-       fprintf_filtered (stream, "PROC (?)");
-       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
-         {
-           fputs_filtered (" RETURNS (", stream);
-           chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
-           fputs_filtered (")", stream);
-         }
-       break;
-
-      case TYPE_CODE_STRUCT:
-       if (chill_varying_type (type))
-         {
-           chill_type_print_base (TYPE_FIELD_TYPE (type, 1),
-                                  stream, show, level);
-           fputs_filtered (" VARYING", stream);
-         }
-       else
-         {
-           fprintf_filtered (stream, "STRUCT ");
-
-           fprintf_filtered (stream, "(\n");
-           if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0))
-             {
-               if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
-                 {
-                   fprintfi_filtered (level + 4, stream, "<incomplete type>\n");
-                 }
-               else
-                 {
-                   fprintfi_filtered (level + 4, stream, "<no data fields>\n");
-                 }
-             }
-           else
-             {
-               len = TYPE_NFIELDS (type);
-               for (i = TYPE_N_BASECLASSES (type); i < len; i++)
-                 {
-                   struct type *field_type = TYPE_FIELD_TYPE (type, i);
-                   QUIT;
-                   print_spaces_filtered (level + 4, stream);
-                   if (TYPE_CODE (field_type) == TYPE_CODE_UNION)
-                     { int j; /* variant number */
-                       fputs_filtered ("CASE OF\n", stream);
-                       for (j = 0; j < TYPE_NFIELDS (field_type); j++)
-                         { int k; /* variant field index */
-                           struct type *variant_type
-                             = TYPE_FIELD_TYPE (field_type, j);
-                           int var_len = TYPE_NFIELDS (variant_type);
-                           print_spaces_filtered (level + 4, stream);
-                           if (strcmp (TYPE_FIELD_NAME (field_type, j),
-                                       "else") == 0)
-                             fputs_filtered ("ELSE\n", stream);
-                           else
-                             fputs_filtered (":\n", stream);
-                           if (TYPE_CODE (variant_type) != TYPE_CODE_STRUCT)
-                             error ("variant record confusion");
-                           for (k = 0; k < var_len; k++)
-                             {
-                               print_spaces_filtered (level + 8, stream);
-                               chill_print_type (TYPE_FIELD_TYPE (variant_type, k),
-                                                 TYPE_FIELD_NAME (variant_type, k),
-                                                 stream, show - 1, level + 8);
-                               if (k < (var_len - 1))
-                                 fputs_filtered (",", stream);
-                               fputs_filtered ("\n", stream);
-                             }
-                         }
-                       fputs_filtered ("ESAC\n", stream);
-                     }
-                   else
-                     chill_print_type (field_type,
-                                       TYPE_FIELD_NAME (type, i),
-                                       stream, show - 1, level + 4);
-                   if (i < (len - 1))
-                     {
-                       fputs_filtered (",", stream);
-                     }
-                   fputs_filtered ("\n", stream);
-                 }
-             }
-           fprintfi_filtered (level, stream, ")");
-         }
-       break;
-
-      case TYPE_CODE_RANGE:
-       if (TYPE_DUMMY_RANGE (type) > 0)
-         chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
-       else
-         {
-           struct type *target = TYPE_TARGET_TYPE (type);
-           if (target && TYPE_NAME (target))
-             fputs_filtered (TYPE_NAME (target), stream);
-           else
-             fputs_filtered ("RANGE", stream);
-           if (target == NULL)
-             target = builtin_type_long;
-           fputs_filtered (" (", stream);
-           print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
-           fputs_filtered (":", stream);
-           print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
-           fputs_filtered (")", stream);
-         }
-       break;
-
-      case TYPE_CODE_ENUM:
-       {
-         register int lastval = 0;
-         fprintf_filtered (stream, "SET (");
-         len = TYPE_NFIELDS (type);
-         for (i = 0; i < len; i++)
-           {
-             QUIT;
-             if (i) fprintf_filtered (stream, ", ");
-             wrap_here ("    ");
-             fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
-             if (lastval != TYPE_FIELD_BITPOS (type, i))
-               {
-                 fprintf_filtered (stream, " = %d", TYPE_FIELD_BITPOS (type, i));
-                 lastval = TYPE_FIELD_BITPOS (type, i);
-               }
-             lastval++;
-           }
-         fprintf_filtered (stream, ")");
-       }
-       break;
-
-      case TYPE_CODE_VOID:
-      case TYPE_CODE_UNDEF:
-      case TYPE_CODE_ERROR:
-      case TYPE_CODE_UNION:
-      case TYPE_CODE_METHOD:
-       error ("missing language support in chill_type_print_base");
-       break;
-
-      default:
-
-       /* Handle types not explicitly handled by the other cases,
-          such as fundamental types.  For these, just print whatever
-          the type name is, as recorded in the type itself.  If there
-          is no type name, then complain. */
-
-       if (TYPE_NAME (type) != NULL)
-         {
-           fputs_filtered (TYPE_NAME (type), stream);
-         }
-       else
-         {
-           error ("Unrecognized type code (%d) in symbol table.",
-                  TYPE_CODE (type));
-         }
-       break;
-      }
-}
+// OBSOLETE /* Support for printing Chill types for GDB, the GNU debugger.
+// OBSOLETE    Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 2000
+// OBSOLETE    Free Software Foundation, Inc.
+// OBSOLETE 
+// OBSOLETE    This file is part of GDB.
+// OBSOLETE 
+// OBSOLETE    This program is free software; you can redistribute it and/or modify
+// OBSOLETE    it under the terms of the GNU General Public License as published by
+// OBSOLETE    the Free Software Foundation; either version 2 of the License, or
+// OBSOLETE    (at your option) any later version.
+// OBSOLETE 
+// OBSOLETE    This program is distributed in the hope that it will be useful,
+// OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of
+// OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// OBSOLETE    GNU General Public License for more details.
+// OBSOLETE 
+// OBSOLETE    You should have received a copy of the GNU General Public License
+// OBSOLETE    along with this program; if not, write to the Free Software
+// OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330,
+// OBSOLETE    Boston, MA 02111-1307, USA.  */
+// OBSOLETE 
+// OBSOLETE #include "defs.h"
+// OBSOLETE #include "gdb_obstack.h"
+// OBSOLETE #include "bfd.h"           /* Binary File Description */
+// OBSOLETE #include "symtab.h"
+// OBSOLETE #include "gdbtypes.h"
+// OBSOLETE #include "expression.h"
+// OBSOLETE #include "value.h"
+// OBSOLETE #include "gdbcore.h"
+// OBSOLETE #include "target.h"
+// OBSOLETE #include "language.h"
+// OBSOLETE #include "ch-lang.h"
+// OBSOLETE #include "typeprint.h"
+// OBSOLETE 
+// OBSOLETE #include "gdb_string.h"
+// OBSOLETE #include <errno.h>
+// OBSOLETE 
+// OBSOLETE static void chill_type_print_base (struct type *, struct ui_file *, int, int);
+// OBSOLETE 
+// OBSOLETE void
+// OBSOLETE chill_print_type (struct type *type, char *varstring, struct ui_file *stream,
+// OBSOLETE              int show, int level)
+// OBSOLETE {
+// OBSOLETE   if (varstring != NULL && *varstring != '\0')
+// OBSOLETE     {
+// OBSOLETE       fputs_filtered (varstring, stream);
+// OBSOLETE       fputs_filtered (" ", stream);
+// OBSOLETE     }
+// OBSOLETE   chill_type_print_base (type, stream, show, level);
+// OBSOLETE }
+// OBSOLETE 
+// OBSOLETE /* Print the name of the type (or the ultimate pointer target,
+// OBSOLETE    function value or array element).
+// OBSOLETE 
+// OBSOLETE    SHOW nonzero means don't print this type as just its name;
+// OBSOLETE    show its real definition even if it has a name.
+// OBSOLETE    SHOW zero means print just typename or tag if there is one
+// OBSOLETE    SHOW negative means abbreviate structure elements.
+// OBSOLETE    SHOW is decremented for printing of structure elements.
+// OBSOLETE 
+// OBSOLETE    LEVEL is the depth to indent by.
+// OBSOLETE    We increase it for some recursive calls.  */
+// OBSOLETE 
+// OBSOLETE static void
+// OBSOLETE chill_type_print_base (struct type *type, struct ui_file *stream, int show,
+// OBSOLETE                   int level)
+// OBSOLETE {
+// OBSOLETE   register int len;
+// OBSOLETE   register int i;
+// OBSOLETE   struct type *index_type;
+// OBSOLETE   struct type *range_type;
+// OBSOLETE   LONGEST low_bound;
+// OBSOLETE   LONGEST high_bound;
+// OBSOLETE 
+// OBSOLETE   QUIT;
+// OBSOLETE 
+// OBSOLETE   wrap_here ("    ");
+// OBSOLETE   if (type == NULL)
+// OBSOLETE     {
+// OBSOLETE       fputs_filtered ("<type unknown>", stream);
+// OBSOLETE       return;
+// OBSOLETE     }
+// OBSOLETE 
+// OBSOLETE   /* When SHOW is zero or less, and there is a valid type name, then always
+// OBSOLETE      just print the type name directly from the type. */
+// OBSOLETE 
+// OBSOLETE   if ((show <= 0) && (TYPE_NAME (type) != NULL))
+// OBSOLETE     {
+// OBSOLETE       fputs_filtered (TYPE_NAME (type), stream);
+// OBSOLETE       return;
+// OBSOLETE     }
+// OBSOLETE 
+// OBSOLETE   if (TYPE_CODE (type) != TYPE_CODE_TYPEDEF)
+// OBSOLETE     CHECK_TYPEDEF (type);
+// OBSOLETE 
+// OBSOLETE   switch (TYPE_CODE (type))
+// OBSOLETE     {
+// OBSOLETE     case TYPE_CODE_TYPEDEF:
+// OBSOLETE       chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
+// OBSOLETE       break;
+// OBSOLETE     case TYPE_CODE_PTR:
+// OBSOLETE       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_VOID)
+// OBSOLETE    {
+// OBSOLETE      fprintf_filtered (stream,
+// OBSOLETE                        TYPE_NAME (type) ? TYPE_NAME (type) : "PTR");
+// OBSOLETE      break;
+// OBSOLETE    }
+// OBSOLETE       fprintf_filtered (stream, "REF ");
+// OBSOLETE       chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_BOOL:
+// OBSOLETE       /* FIXME: we should probably just print the TYPE_NAME, in case
+// OBSOLETE          anyone ever fixes the compiler to give us the real names
+// OBSOLETE          in the presence of the chill equivalent of typedef (assuming
+// OBSOLETE          there is one).  */
+// OBSOLETE       fprintf_filtered (stream,
+// OBSOLETE                    TYPE_NAME (type) ? TYPE_NAME (type) : "BOOL");
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_ARRAY:
+// OBSOLETE       fputs_filtered ("ARRAY (", stream);
+// OBSOLETE       range_type = TYPE_FIELD_TYPE (type, 0);
+// OBSOLETE       if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
+// OBSOLETE    chill_print_type (range_type, "", stream, 0, level);
+// OBSOLETE       else
+// OBSOLETE    {
+// OBSOLETE      index_type = TYPE_TARGET_TYPE (range_type);
+// OBSOLETE      low_bound = TYPE_FIELD_BITPOS (range_type, 0);
+// OBSOLETE      high_bound = TYPE_FIELD_BITPOS (range_type, 1);
+// OBSOLETE      print_type_scalar (index_type, low_bound, stream);
+// OBSOLETE      fputs_filtered (":", stream);
+// OBSOLETE      print_type_scalar (index_type, high_bound, stream);
+// OBSOLETE    }
+// OBSOLETE       fputs_filtered (") ", stream);
+// OBSOLETE       chill_print_type (TYPE_TARGET_TYPE (type), "", stream, 0, level);
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_BITSTRING:
+// OBSOLETE       fprintf_filtered (stream, "BOOLS (%d)",
+// OBSOLETE                  TYPE_FIELD_BITPOS (TYPE_FIELD_TYPE (type, 0), 1) + 1);
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_SET:
+// OBSOLETE       fputs_filtered ("POWERSET ", stream);
+// OBSOLETE       chill_print_type (TYPE_INDEX_TYPE (type), "", stream,
+// OBSOLETE                    show - 1, level);
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_STRING:
+// OBSOLETE       range_type = TYPE_FIELD_TYPE (type, 0);
+// OBSOLETE       index_type = TYPE_TARGET_TYPE (range_type);
+// OBSOLETE       high_bound = TYPE_FIELD_BITPOS (range_type, 1);
+// OBSOLETE       fputs_filtered ("CHARS (", stream);
+// OBSOLETE       print_type_scalar (index_type, high_bound + 1, stream);
+// OBSOLETE       fputs_filtered (")", stream);
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_MEMBER:
+// OBSOLETE       fprintf_filtered (stream, "MEMBER ");
+// OBSOLETE       chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
+// OBSOLETE       break;
+// OBSOLETE     case TYPE_CODE_REF:
+// OBSOLETE       fprintf_filtered (stream, "/*LOC*/ ");
+// OBSOLETE       chill_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
+// OBSOLETE       break;
+// OBSOLETE     case TYPE_CODE_FUNC:
+// OBSOLETE       fprintf_filtered (stream, "PROC (");
+// OBSOLETE       len = TYPE_NFIELDS (type);
+// OBSOLETE       for (i = 0; i < len; i++)
+// OBSOLETE    {
+// OBSOLETE      struct type *param_type = TYPE_FIELD_TYPE (type, i);
+// OBSOLETE      if (i > 0)
+// OBSOLETE        {
+// OBSOLETE          fputs_filtered (", ", stream);
+// OBSOLETE          wrap_here ("    ");
+// OBSOLETE        }
+// OBSOLETE      if (TYPE_CODE (param_type) == TYPE_CODE_REF)
+// OBSOLETE        {
+// OBSOLETE          chill_type_print_base (TYPE_TARGET_TYPE (param_type),
+// OBSOLETE                                 stream, 0, level);
+// OBSOLETE          fputs_filtered (" LOC", stream);
+// OBSOLETE        }
+// OBSOLETE      else
+// OBSOLETE        chill_type_print_base (param_type, stream, show, level);
+// OBSOLETE    }
+// OBSOLETE       fprintf_filtered (stream, ")");
+// OBSOLETE       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+// OBSOLETE    {
+// OBSOLETE      fputs_filtered (" RETURNS (", stream);
+// OBSOLETE      chill_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
+// OBSOLETE      fputs_filtered (")", stream);
+// OBSOLETE    }
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_STRUCT:
+// OBSOLETE       if (chill_varying_type (type))
+// OBSOLETE    {
+// OBSOLETE      chill_type_print_base (TYPE_FIELD_TYPE (type, 1),
+// OBSOLETE                             stream, 0, level);
+// OBSOLETE      fputs_filtered (" VARYING", stream);
+// OBSOLETE    }
+// OBSOLETE       else
+// OBSOLETE    {
+// OBSOLETE      fprintf_filtered (stream, "STRUCT ");
+// OBSOLETE 
+// OBSOLETE      fprintf_filtered (stream, "(\n");
+// OBSOLETE      if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0))
+// OBSOLETE        {
+// OBSOLETE          if (TYPE_STUB (type))
+// OBSOLETE            {
+// OBSOLETE              fprintfi_filtered (level + 4, stream, "<incomplete type>\n");
+// OBSOLETE            }
+// OBSOLETE          else
+// OBSOLETE            {
+// OBSOLETE              fprintfi_filtered (level + 4, stream, "<no data fields>\n");
+// OBSOLETE            }
+// OBSOLETE        }
+// OBSOLETE      else
+// OBSOLETE        {
+// OBSOLETE          len = TYPE_NFIELDS (type);
+// OBSOLETE          for (i = TYPE_N_BASECLASSES (type); i < len; i++)
+// OBSOLETE            {
+// OBSOLETE              struct type *field_type = TYPE_FIELD_TYPE (type, i);
+// OBSOLETE              QUIT;
+// OBSOLETE              print_spaces_filtered (level + 4, stream);
+// OBSOLETE              if (TYPE_CODE (field_type) == TYPE_CODE_UNION)
+// OBSOLETE                {
+// OBSOLETE                  int j;    /* variant number */
+// OBSOLETE                  fputs_filtered ("CASE OF\n", stream);
+// OBSOLETE                  for (j = 0; j < TYPE_NFIELDS (field_type); j++)
+// OBSOLETE                    {
+// OBSOLETE                      int k;        /* variant field index */
+// OBSOLETE                      struct type *variant_type
+// OBSOLETE                      = TYPE_FIELD_TYPE (field_type, j);
+// OBSOLETE                      int var_len = TYPE_NFIELDS (variant_type);
+// OBSOLETE                      print_spaces_filtered (level + 4, stream);
+// OBSOLETE                      if (strcmp (TYPE_FIELD_NAME (field_type, j),
+// OBSOLETE                                  "else") == 0)
+// OBSOLETE                        fputs_filtered ("ELSE\n", stream);
+// OBSOLETE                      else
+// OBSOLETE                        fputs_filtered (":\n", stream);
+// OBSOLETE                      if (TYPE_CODE (variant_type) != TYPE_CODE_STRUCT)
+// OBSOLETE                        error ("variant record confusion");
+// OBSOLETE                      for (k = 0; k < var_len; k++)
+// OBSOLETE                        {
+// OBSOLETE                          print_spaces_filtered (level + 8, stream);
+// OBSOLETE                          chill_print_type (TYPE_FIELD_TYPE (variant_type, k),
+// OBSOLETE                                      TYPE_FIELD_NAME (variant_type, k),
+// OBSOLETE                                            stream, show - 1, level + 8);
+// OBSOLETE                          if (k < (var_len - 1))
+// OBSOLETE                            fputs_filtered (",", stream);
+// OBSOLETE                          fputs_filtered ("\n", stream);
+// OBSOLETE                        }
+// OBSOLETE                    }
+// OBSOLETE                  print_spaces_filtered (level + 4, stream);
+// OBSOLETE                  fputs_filtered ("ESAC", stream);
+// OBSOLETE                }
+// OBSOLETE              else
+// OBSOLETE                chill_print_type (field_type,
+// OBSOLETE                                  TYPE_FIELD_NAME (type, i),
+// OBSOLETE                                  stream, show - 1, level + 4);
+// OBSOLETE              if (i < (len - 1))
+// OBSOLETE                {
+// OBSOLETE                  fputs_filtered (",", stream);
+// OBSOLETE                }
+// OBSOLETE              fputs_filtered ("\n", stream);
+// OBSOLETE            }
+// OBSOLETE        }
+// OBSOLETE      fprintfi_filtered (level, stream, ")");
+// OBSOLETE    }
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_RANGE:
+// OBSOLETE       {
+// OBSOLETE    struct type *target = TYPE_TARGET_TYPE (type);
+// OBSOLETE    if (target && TYPE_NAME (target))
+// OBSOLETE      fputs_filtered (TYPE_NAME (target), stream);
+// OBSOLETE    else
+// OBSOLETE      fputs_filtered ("RANGE", stream);
+// OBSOLETE    if (target == NULL)
+// OBSOLETE      target = builtin_type_long;
+// OBSOLETE    fputs_filtered (" (", stream);
+// OBSOLETE    print_type_scalar (target, TYPE_LOW_BOUND (type), stream);
+// OBSOLETE    fputs_filtered (":", stream);
+// OBSOLETE    print_type_scalar (target, TYPE_HIGH_BOUND (type), stream);
+// OBSOLETE    fputs_filtered (")", stream);
+// OBSOLETE       }
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_ENUM:
+// OBSOLETE       {
+// OBSOLETE    register int lastval = 0;
+// OBSOLETE    fprintf_filtered (stream, "SET (");
+// OBSOLETE    len = TYPE_NFIELDS (type);
+// OBSOLETE    for (i = 0; i < len; i++)
+// OBSOLETE      {
+// OBSOLETE        QUIT;
+// OBSOLETE        if (i)
+// OBSOLETE          fprintf_filtered (stream, ", ");
+// OBSOLETE        wrap_here ("    ");
+// OBSOLETE        fputs_filtered (TYPE_FIELD_NAME (type, i), stream);
+// OBSOLETE        if (lastval != TYPE_FIELD_BITPOS (type, i))
+// OBSOLETE          {
+// OBSOLETE            fprintf_filtered (stream, " = %d", TYPE_FIELD_BITPOS (type, i));
+// OBSOLETE            lastval = TYPE_FIELD_BITPOS (type, i);
+// OBSOLETE          }
+// OBSOLETE        lastval++;
+// OBSOLETE      }
+// OBSOLETE    fprintf_filtered (stream, ")");
+// OBSOLETE       }
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     case TYPE_CODE_VOID:
+// OBSOLETE     case TYPE_CODE_UNDEF:
+// OBSOLETE     case TYPE_CODE_ERROR:
+// OBSOLETE     case TYPE_CODE_UNION:
+// OBSOLETE     case TYPE_CODE_METHOD:
+// OBSOLETE       error ("missing language support in chill_type_print_base");
+// OBSOLETE       break;
+// OBSOLETE 
+// OBSOLETE     default:
+// OBSOLETE 
+// OBSOLETE       /* Handle types not explicitly handled by the other cases,
+// OBSOLETE          such as fundamental types.  For these, just print whatever
+// OBSOLETE          the type name is, as recorded in the type itself.  If there
+// OBSOLETE          is no type name, then complain. */
+// OBSOLETE 
+// OBSOLETE       if (TYPE_NAME (type) != NULL)
+// OBSOLETE    {
+// OBSOLETE      fputs_filtered (TYPE_NAME (type), stream);
+// OBSOLETE    }
+// OBSOLETE       else
+// OBSOLETE    {
+// OBSOLETE      error ("Unrecognized type code (%d) in symbol table.",
+// OBSOLETE             TYPE_CODE (type));
+// OBSOLETE    }
+// OBSOLETE       break;
+// OBSOLETE     }
+// OBSOLETE }
This page took 0.033001 seconds and 4 git commands to generate.