Really remove file.
[deliverable/binutils-gdb.git] / gdb / ada-typeprint.c
index d53d2900fef1bec032debc2b9cbf1e78feecd1f2..19393541d5c05ee4f9eeb574c24d39e4a7537e70 100644 (file)
@@ -1,5 +1,6 @@
 /* Support for printing Ada types for GDB, the GNU debugger.
-   Copyright 1986, 1988, 1989, 1991, 1997 Free Software Foundation, Inc.
+   Copyright 1986, 1988, 1989, 1991, 1997, 2003 Free Software
+   Foundation, Inc.
 
 This file is part of GDB.
 
@@ -35,43 +36,45 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "ada-lang.h"
 
 #include <ctype.h>
-#include <string.h>
+#include "gdb_string.h"
 #include <errno.h>
 
-static int print_record_field_types (struct type *, struct type *, 
+static int print_record_field_types (struct type *, struct type *,
                                     struct ui_file *, int, int);
 
-static void print_array_type (struct type*, struct ui_file*, int, int);
+static void print_array_type (struct type *, struct ui_file *, int, int);
 
-static void print_choices (struct type*, int, struct ui_file*, struct type*);
+static void print_choices (struct type *, int, struct ui_file *,
+                          struct type *);
 
-static void print_range (struct type*, struct ui_file*);
+static void print_range (struct type *, struct ui_file *);
 
-static void print_range_bound (struct type*, char*, int*, struct ui_file*);
+static void print_range_bound (struct type *, char *, int *,
+                              struct ui_file *);
 
-static void 
-print_dynamic_range_bound (struct type*, const char*, int, 
-                          const char*, struct ui_file*);
-
-static void print_range_type_named (char*, struct ui_file*);
+static void
+print_dynamic_range_bound (struct type *, const char *, int,
+                          const char *, struct ui_file *);
 
+static void print_range_type_named (char *, struct ui_file *);
 \f
 
-static char* name_buffer;
+
+static char *name_buffer;
 static int name_buffer_len;
 
 /* The (demangled) Ada name of TYPE. This value persists until the
    next call. */
 
-static char*
+static char *
 demangled_type_name (struct type *type)
 {
   if (ada_type_name (type) == NULL)
     return NULL;
-  else 
+  else
     {
-      charraw_name = ada_type_name (type);
-      char *s, *q; 
+      char *raw_name = ada_type_name (type);
+      char *s, *q;
 
       if (name_buffer == NULL || name_buffer_len <= strlen (raw_name))
        {
@@ -80,7 +83,7 @@ demangled_type_name (struct type *type)
        }
       strcpy (name_buffer, raw_name);
 
-      s = (char*) strstr (name_buffer, "___");
+      s = (char *) strstr (name_buffer, "___");
       if (s != NULL)
        *s = '\0';
 
@@ -91,18 +94,20 @@ demangled_type_name (struct type *type)
       if (s == name_buffer)
        return name_buffer;
 
-      if (! islower (s[1]))
+      if (!islower (s[1]))
        return NULL;
 
       for (s = q = name_buffer; *s != '\0'; q += 1)
        {
          if (s[0] == '_' && s[1] == '_')
            {
-             *q = '.'; s += 2;
+             *q = '.';
+             s += 2;
            }
          else
            {
-             *q = *s; s += 1;
+             *q = *s;
+             s += 1;
            }
        }
       *q = '\0';
@@ -116,25 +121,26 @@ demangled_type_name (struct type *type)
    NEW is the new name for a type TYPE. */
 
 void
-ada_typedef_print (struct type *type, struct symbol *new, struct ui_file *stream)
+ada_typedef_print (struct type *type, struct symbol *new,
+                  struct ui_file *stream)
 {
-  fprintf_filtered (stream, "type %.*s is ", 
-                   ada_name_prefix_len (SYMBOL_SOURCE_NAME(new)), 
-                   SYMBOL_SOURCE_NAME(new));
+  fprintf_filtered (stream, "type %.*s is ",
+                   ada_name_prefix_len (SYMBOL_PRINT_NAME (new)),
+                   SYMBOL_PRINT_NAME (new));
   type_print (type, "", stream, 1);
 }
 
 /* Print range type TYPE on STREAM. */
 
 static void
-print_range (struct type* type, struct ui_file* stream)
+print_range (struct type *type, struct ui_file *stream)
 {
-  struct typetarget_type;
+  struct type *target_type;
   target_type = TYPE_TARGET_TYPE (type);
   if (target_type == NULL)
     target_type = type;
 
-  switch (TYPE_CODE (target_type)) 
+  switch (TYPE_CODE (target_type))
     {
     case TYPE_CODE_RANGE:
     case TYPE_CODE_INT:
@@ -156,8 +162,8 @@ print_range (struct type* type, struct ui_file* stream)
          Note that if the name is not defined, then we don't print anything.
        */
       fprintf_filtered (stream, "%.*s",
-                        ada_name_prefix_len (TYPE_NAME (type)),
-                        TYPE_NAME (type));
+                       ada_name_prefix_len (TYPE_NAME (type)),
+                       TYPE_NAME (type));
     }
   else
     {
@@ -165,7 +171,7 @@ print_range (struct type* type, struct ui_file* stream)
          and the last element of the type->fields array */
       const LONGEST lower_bound = (LONGEST) TYPE_LOW_BOUND (type);
       const LONGEST upper_bound =
-        (LONGEST) TYPE_FIELD_BITPOS (type, TYPE_NFIELDS (type) -1);
+       (LONGEST) TYPE_FIELD_BITPOS (type, TYPE_NFIELDS (type) - 1);
 
       ada_print_scalar (target_type, lower_bound, stream);
       fprintf_filtered (stream, " .. ");
@@ -177,7 +183,8 @@ print_range (struct type* type, struct ui_file* stream)
    set *N past the bound and its delimiter, if any. */
 
 static void
-print_range_bound (struct type* type, char* bounds, int* n, struct ui_file* stream)
+print_range_bound (struct type *type, char *bounds, int *n,
+                  struct ui_file *stream)
 {
   LONGEST B;
   if (ada_scan_number (bounds, *n, &B, n))
@@ -189,13 +196,13 @@ print_range_bound (struct type* type, char* bounds, int* n, struct ui_file* stre
   else
     {
       int bound_len;
-      charbound = bounds + *n;
-      charpend;
+      char *bound = bounds + *n;
+      char *pend;
 
       pend = strstr (bound, "__");
       if (pend == NULL)
        *n += bound_len = strlen (bound);
-      else 
+      else
        {
          bound_len = pend - bound;
          *n += bound_len + 2;
@@ -209,7 +216,8 @@ print_range_bound (struct type* type, char* bounds, int* n, struct ui_file* stre
    "___U") according to the ___XD conventions. */
 
 static void
-print_dynamic_range_bound (struct type* type, const char* name, int name_len, const char* suffix, struct ui_file* stream)
+print_dynamic_range_bound (struct type *type, const char *name, int name_len,
+                          const char *suffix, struct ui_file *stream)
 {
   static char *name_buf = NULL;
   static size_t name_buf_len = 0;
@@ -230,12 +238,12 @@ print_dynamic_range_bound (struct type* type, const char* name, int name_len, co
 /* Print the range type named NAME. */
 
 static void
-print_range_type_named (char* name, struct ui_file* stream)
+print_range_type_named (char *name, struct ui_file *stream)
 {
   struct type *raw_type = ada_find_any_type (name);
   struct type *base_type;
   LONGEST low, high;
-  charsubtype_info;
+  char *subtype_info;
 
   if (raw_type == NULL)
     base_type = builtin_type_int;
@@ -259,22 +267,24 @@ print_range_type_named (char* name, struct ui_file* stream)
       bounds_str = strchr (subtype_info, '_');
       n = 1;
 
-      if (*subtype_info == 'L') 
+      if (*subtype_info == 'L')
        {
          print_range_bound (raw_type, bounds_str, &n, stream);
          subtype_info += 1;
        }
       else
-       print_dynamic_range_bound (raw_type, name, prefix_len, "___L", stream);
+       print_dynamic_range_bound (raw_type, name, prefix_len, "___L",
+                                  stream);
 
       fprintf_filtered (stream, " .. ");
 
-      if (*subtype_info == 'U') 
+      if (*subtype_info == 'U')
        print_range_bound (raw_type, bounds_str, &n, stream);
       else
-       print_dynamic_range_bound (raw_type, name, prefix_len, "___U", stream);
+       print_dynamic_range_bound (raw_type, name, prefix_len, "___U",
+                                  stream);
     }
-}  
+}
 
 /* Print enumerated type TYPE on STREAM. */
 
@@ -291,7 +301,8 @@ print_enum_type (struct type *type, struct ui_file *stream)
   for (i = 0; i < len; i++)
     {
       QUIT;
-      if (i) fprintf_filtered (stream, ", ");
+      if (i)
+       fprintf_filtered (stream, ", ");
       wrap_here ("    ");
       fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
       if (lastval != TYPE_FIELD_BITPOS (type, i))
@@ -317,7 +328,7 @@ print_fixed_point_type (struct type *type, struct ui_file *stream)
   else
     {
       fprintf_filtered (stream, "delta %g", (double) delta);
-      if (delta != small) 
+      if (delta != small)
        fprintf_filtered (stream, " <'small = %g>", (double) small);
     }
 }
@@ -337,7 +348,8 @@ print_vax_floating_point_type (struct type *type, struct ui_file *stream)
    structure to show (see ada_print_type). */
 
 static void
-print_array_type (struct type *type, struct ui_file *stream, int show, int level)
+print_array_type (struct type *type, struct ui_file *stream, int show,
+                 int level)
 {
   int bitsize;
   int n_indices;
@@ -346,17 +358,17 @@ print_array_type (struct type *type, struct ui_file *stream, int show, int level
   fprintf_filtered (stream, "array (");
 
   n_indices = -1;
-  if (show < 0) 
+  if (show < 0)
     fprintf_filtered (stream, "...");
   else
     {
       if (ada_is_packed_array_type (type))
        type = ada_coerce_to_simple_array_type (type);
-      if (ada_is_simple_array (type)) 
+      if (ada_is_simple_array (type))
        {
-         struct type* range_desc_type = 
+         struct type *range_desc_type =
            ada_find_parallel_type (type, "___XA");
-         struct typearr_type;
+         struct type *arr_type;
 
          bitsize = 0;
          if (range_desc_type == NULL)
@@ -371,24 +383,24 @@ print_array_type (struct type *type, struct ui_file *stream, int show, int level
                    bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
                }
            }
-         else 
+         else
            {
              int k;
-             n_indices = TYPE_NFIELDS (range_desc_type); 
-             for (k = 0, arr_type = type; 
+             n_indices = TYPE_NFIELDS (range_desc_type);
+             for (k = 0, arr_type = type;
                   k < n_indices;
                   k += 1, arr_type = TYPE_TARGET_TYPE (arr_type))
                {
                  if (k > 0)
                    fprintf_filtered (stream, ", ");
-                 print_range_type_named (TYPE_FIELD_NAME (range_desc_type, k),
-                                         stream);
+                 print_range_type_named (TYPE_FIELD_NAME
+                                         (range_desc_type, k), stream);
                  if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0)
                    bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
-               }                 
+               }
            }
        }
-      else 
+      else
        {
          int i, i0;
          for (i = i0 = ada_array_arity (type); i > 0; i -= 1)
@@ -398,8 +410,8 @@ print_array_type (struct type *type, struct ui_file *stream, int show, int level
 
   fprintf_filtered (stream, ") of ");
   wrap_here ("");
-  ada_print_type (ada_array_element_type (type, n_indices), "", stream, 
-                 show == 0 ? 0 : show-1, level+1);
+  ada_print_type (ada_array_element_type (type, n_indices), "", stream,
+                 show == 0 ? 0 : show - 1, level + 1);
   if (bitsize > 0)
     fprintf_filtered (stream, " <packed: %d-bit elements>", bitsize);
 }
@@ -408,18 +420,19 @@ print_array_type (struct type *type, struct ui_file *stream, int show, int level
    STREAM, assuming the VAL_TYPE is the type of the values. */
 
 static void
-print_choices (struct type *type, int field_num, struct ui_file *stream, struct type *val_type)
+print_choices (struct type *type, int field_num, struct ui_file *stream,
+              struct type *val_type)
 {
   int have_output;
   int p;
-  const charname = TYPE_FIELD_NAME (type, field_num);
+  const char *name = TYPE_FIELD_NAME (type, field_num);
 
   have_output = 0;
 
   /* Skip over leading 'V': NOTE soon to be obsolete. */
   if (name[0] == 'V')
     {
-      if (! ada_scan_number (name, 1, NULL, &p))
+      if (!ada_scan_number (name, 1, NULL, &p))
        goto Huh;
     }
   else
@@ -427,25 +440,25 @@ print_choices (struct type *type, int field_num, struct ui_file *stream, struct
 
   while (1)
     {
-      switch (name[p]) 
+      switch (name[p])
        {
        default:
          return;
        case 'S':
        case 'R':
        case 'O':
-         if (have_output) 
+         if (have_output)
            fprintf_filtered (stream, " | ");
          have_output = 1;
          break;
        }
 
-      switch (name[p]) 
+      switch (name[p])
        {
        case 'S':
          {
            LONGEST W;
-           if (! ada_scan_number (name, p + 1, &W, &p))
+           if (!ada_scan_number (name, p + 1, &W, &p))
              goto Huh;
            ada_print_scalar (val_type, W, stream);
            break;
@@ -453,9 +466,8 @@ print_choices (struct type *type, int field_num, struct ui_file *stream, struct
        case 'R':
          {
            LONGEST L, U;
-           if (! ada_scan_number (name, p + 1, &L, &p)
-               || name[p] != 'T'
-               || ! ada_scan_number (name, p + 1, &U, &p))
+           if (!ada_scan_number (name, p + 1, &L, &p)
+               || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
              goto Huh;
            ada_print_scalar (val_type, L, stream);
            fprintf_filtered (stream, " .. ");
@@ -498,7 +510,7 @@ print_variant_clauses (struct type *type, int field_num,
   if (TYPE_CODE (var_type) == TYPE_CODE_PTR)
     {
       var_type = TYPE_TARGET_TYPE (var_type);
-      if (TYPE_FLAGS (var_type) & TYPE_FLAG_STUB) 
+      if (TYPE_FLAGS (var_type) & TYPE_FLAG_STUB)
        {
          var_type = ada_find_parallel_type (var_type, "___XVU");
          if (var_type == NULL)
@@ -506,13 +518,13 @@ print_variant_clauses (struct type *type, int field_num,
        }
     }
 
-  for (i = 0; i < TYPE_NFIELDS (var_type); i += 1) 
+  for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
     {
       fprintf_filtered (stream, "\n%*swhen ", level + 4, "");
       print_choices (var_type, i, stream, discr_type);
       fprintf_filtered (stream, " =>");
-      if (print_record_field_types (TYPE_FIELD_TYPE (var_type, i), 
-                                   outer_type, stream, show, level+4) <= 0)
+      if (print_record_field_types (TYPE_FIELD_TYPE (var_type, i),
+                                   outer_type, stream, show, level + 4) <= 0)
        fprintf_filtered (stream, " null;");
     }
 }
@@ -530,9 +542,10 @@ print_variant_part (struct type *type, int field_num, struct type *outer_type,
                    struct ui_file *stream, int show, int level)
 {
   fprintf_filtered (stream, "\n%*scase %s is", level + 4, "",
-                   ada_variant_discrim_name 
-                     (TYPE_FIELD_TYPE (type, field_num)));
-  print_variant_clauses (type, field_num, outer_type, stream, show, level + 4);
+                   ada_variant_discrim_name
+                   (TYPE_FIELD_TYPE (type, field_num)));
+  print_variant_clauses (type, field_num, outer_type, stream, show,
+                        level + 4);
   fprintf_filtered (stream, "\n%*send case;", level + 4, "");
 }
 
@@ -561,13 +574,12 @@ print_record_field_types (struct type *type, struct type *outer_type,
     {
       QUIT;
 
-      if (ada_is_parent_field (type, i) 
-         || ada_is_ignored_field (type, i))
+      if (ada_is_parent_field (type, i) || ada_is_ignored_field (type, i))
        ;
       else if (ada_is_wrapper_field (type, i))
        flds += print_record_field_types (TYPE_FIELD_TYPE (type, i), type,
                                          stream, show, level);
-      else if (ada_is_variant_part (type, i)) 
+      else if (ada_is_variant_part (type, i))
        {
          print_variant_part (type, i, outer_type, stream, show, level);
          flds = 1;
@@ -591,22 +603,23 @@ print_record_field_types (struct type *type, struct type *outer_type,
    the number of levels of internal structure to show (see ada_print_type). */
 
 static void
-print_record_type (struct type* type0, struct ui_file* stream, int show, int level)
+print_record_type (struct type *type0, struct ui_file *stream, int show,
+                  int level)
 {
-  struct typeparent_type;
-  struct typetype;
-  
+  struct type *parent_type;
+  struct type *type;
+
   type = type0;
   if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
     {
-      struct typetype1 = ada_find_parallel_type (type, "___XVE");
+      struct type *type1 = ada_find_parallel_type (type, "___XVE");
       if (type1 != NULL)
        type = type1;
     }
 
   parent_type = ada_parent_type (type);
-  if (ada_type_name (parent_type) != NULL) 
-    fprintf_filtered (stream, "new %s with ", 
+  if (ada_type_name (parent_type) != NULL)
+    fprintf_filtered (stream, "new %s with ",
                      demangled_type_name (parent_type));
   else if (parent_type == NULL && ada_is_tagged_type (type))
     fprintf_filtered (stream, "tagged ");
@@ -621,15 +634,15 @@ print_record_type (struct type* type0, struct ui_file* stream, int show, int lev
 
       flds = 0;
       if (parent_type != NULL && ada_type_name (parent_type) == NULL)
-       flds += print_record_field_types (parent_type, parent_type, 
+       flds += print_record_field_types (parent_type, parent_type,
                                          stream, show, level);
       flds += print_record_field_types (type, type, stream, show, level);
-      
+
       if (flds > 0)
        fprintf_filtered (stream, "\n%*send record", level, "");
-      else if (flds < 0) 
+      else if (flds < 0)
        fprintf_filtered (stream, " <incomplete type> end record");
-      else 
+      else
        fprintf_filtered (stream, " null; end record");
     }
 }
@@ -639,44 +652,43 @@ print_record_type (struct type* type0, struct ui_file* stream, int show, int lev
    in case the element type itself has nested structure, and SHOW is the
    number of levels of internal structure to show (see ada_print_type). */
 static void
-print_unchecked_union_type (struct type* type, struct ui_file* stream, 
+print_unchecked_union_type (struct type *type, struct ui_file *stream,
                            int show, int level)
 {
   fprintf_filtered (stream, "record (?) is");
 
   if (show < 0)
     fprintf_filtered (stream, " ... end record");
-  else if (TYPE_NFIELDS (type) == 0) 
+  else if (TYPE_NFIELDS (type) == 0)
     fprintf_filtered (stream, " null; end record");
   else
     {
       int i;
 
-      fprintf_filtered (stream, "\n%*scase ? is", 
-                       level+4, "");
+      fprintf_filtered (stream, "\n%*scase ? is", level + 4, "");
 
-      for (i = 0; i < TYPE_NFIELDS (type); i += 1) 
+      for (i = 0; i < TYPE_NFIELDS (type); i += 1)
        {
-         fprintf_filtered (stream, "\n%*swhen ? =>\n%*s", level+8, "",
-                           level+12, "");
+         fprintf_filtered (stream, "\n%*swhen ? =>\n%*s", level + 8, "",
+                           level + 12, "");
          ada_print_type (TYPE_FIELD_TYPE (type, i),
                          TYPE_FIELD_NAME (type, i),
                          stream, show - 1, level + 12);
          fprintf_filtered (stream, ";");
        }
 
-      fprintf_filtered (stream, "\n%*send case;\n%*send record", 
-                       level+4, "", level, "");
+      fprintf_filtered (stream, "\n%*send case;\n%*send record",
+                       level + 4, "", level, "");
     }
 }
-  
+
 
 
 /* Print function or procedure type TYPE on STREAM.  Make it a header
    for function or procedure NAME if NAME is not null. */
 
 static void
-print_func_type (struct type *type, struct ui_file *stream, charname)
+print_func_type (struct type *type, struct ui_file *stream, char *name)
 {
   int i, len = TYPE_NFIELDS (type);
 
@@ -685,10 +697,10 @@ print_func_type (struct type *type, struct ui_file *stream, char* name)
   else
     fprintf_filtered (stream, "function");
 
-  if (name != NULL && name[0] != '\0') 
+  if (name != NULL && name[0] != '\0')
     fprintf_filtered (stream, " %s", name);
 
-  if (len > 0) 
+  if (len > 0)
     {
       fprintf_filtered (stream, " (");
       for (i = 0; i < len; i += 1)
@@ -698,11 +710,11 @@ print_func_type (struct type *type, struct ui_file *stream, char* name)
              fputs_filtered ("; ", stream);
              wrap_here ("    ");
            }
-         fprintf_filtered (stream, "a%d: ", i+1);
+         fprintf_filtered (stream, "a%d: ", i + 1);
          ada_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0);
        }
       fprintf_filtered (stream, ")");
-    }      
+    }
 
   if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
     {
@@ -726,35 +738,34 @@ print_func_type (struct type *type, struct ui_file *stream, char* name)
    LEVEL indicates level of recursion (for nested definitions). */
 
 void
-ada_print_type (struct type* type0, char* varstring, struct ui_file* stream,
+ada_print_type (struct type *type0, char *varstring, struct ui_file *stream,
                int show, int level)
 {
   enum type_code code;
   int demangled_args;
-  struct typetype = ada_completed_type (ada_get_base_type (type0));
-  chartype_name = demangled_type_name (type);
+  struct type *type = ada_completed_type (ada_get_base_type (type0));
+  char *type_name = demangled_type_name (type);
   int is_var_decl = (varstring != NULL && varstring[0] != '\0');
 
   if (type == NULL)
     {
       if (is_var_decl)
        fprintf_filtered (stream, "%.*s: ",
-                         ada_name_prefix_len(varstring),
-                         varstring);
+                         ada_name_prefix_len (varstring), varstring);
       fprintf_filtered (stream, "<null type?>");
       return;
     }
 
   if (show > 0)
-      CHECK_TYPEDEF (type);
+    CHECK_TYPEDEF (type);
 
   if (is_var_decl && TYPE_CODE (type) != TYPE_CODE_FUNC)
-      fprintf_filtered (stream, "%.*s: ", 
-                       ada_name_prefix_len (varstring), varstring);
+    fprintf_filtered (stream, "%.*s: ",
+                     ada_name_prefix_len (varstring), varstring);
 
   if (type_name != NULL && show <= 0)
     {
-      fprintf_filtered (stream, "%.*s", 
+      fprintf_filtered (stream, "%.*s",
                        ada_name_prefix_len (type_name), type_name);
       return;
     }
@@ -764,78 +775,78 @@ ada_print_type (struct type* type0, char* varstring, struct ui_file* stream,
   else if (ada_is_packed_array_type (type))
     print_array_type (type, stream, show, level);
   else
-  switch (TYPE_CODE (type))
-    {
-    default:
-      fprintf_filtered (stream, "<");
-      c_print_type (type, "", stream, show, level);
-      fprintf_filtered (stream, ">");
-      break;
-    case TYPE_CODE_PTR:
-      fprintf_filtered (stream, "access ");
-      ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show,
-                     level);
-      break;
-    case TYPE_CODE_REF:
-      fprintf_filtered (stream, "<ref> ");
-      ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show,
-                     level);
-      break;
-    case TYPE_CODE_ARRAY:
-      print_array_type (type, stream, show, level);
-      break;
-    case TYPE_CODE_INT:
-      if (ada_is_fixed_point_type (type))
-       print_fixed_point_type (type, stream);
-      else if (ada_is_vax_floating_type (type))
-       print_vax_floating_point_type (type, stream);
-      else
-       {
-         char* name = ada_type_name (type);
-         if (! ada_is_range_type_name (name))
-           fprintf_filtered (stream, "<%d-byte integer>", TYPE_LENGTH (type));
-         else
-           {
-             fprintf_filtered (stream, "range ");
-             print_range_type_named (name, stream);
-           }
-       }
-      break;
-    case TYPE_CODE_RANGE:
-      if (ada_is_fixed_point_type (type))
-       print_fixed_point_type (type, stream);
-      else if (ada_is_vax_floating_type (type))
-       print_vax_floating_point_type (type, stream);
-      else if (ada_is_modular_type (type))
-       fprintf_filtered (stream, "mod %ld", (long) ada_modulus (type));
-      else
-       {
-         fprintf_filtered (stream, "range ");
-         print_range (type, stream);
-       }
-      break;
-    case TYPE_CODE_FLT:
-      fprintf_filtered (stream, "<%d-byte float>", TYPE_LENGTH (type));
-      break;
-    case TYPE_CODE_ENUM:
-      if (show < 0)
-       fprintf_filtered (stream, "(...)");
-      else
-       print_enum_type (type, stream);
-      break;
-    case TYPE_CODE_STRUCT:
-      if (ada_is_array_descriptor (type))
+    switch (TYPE_CODE (type))
+      {
+      default:
+       fprintf_filtered (stream, "<");
+       c_print_type (type, "", stream, show, level);
+       fprintf_filtered (stream, ">");
+       break;
+      case TYPE_CODE_PTR:
+       fprintf_filtered (stream, "access ");
+       ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level);
+       break;
+      case TYPE_CODE_REF:
+       fprintf_filtered (stream, "<ref> ");
+       ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level);
+       break;
+      case TYPE_CODE_ARRAY:
        print_array_type (type, stream, show, level);
-      else if (ada_is_bogus_array_descriptor (type))
-       fprintf_filtered (stream, "array (?) of ? (<mal-formed descriptor>)");
-      else
-       print_record_type (type, stream, show, level);
-      break;
-    case TYPE_CODE_UNION:
-      print_unchecked_union_type (type, stream, show, level);
-      break;
-    case TYPE_CODE_FUNC:
-      print_func_type (type, stream, varstring);
-      break;
-    }
+       break;
+      case TYPE_CODE_INT:
+       if (ada_is_fixed_point_type (type))
+         print_fixed_point_type (type, stream);
+       else if (ada_is_vax_floating_type (type))
+         print_vax_floating_point_type (type, stream);
+       else
+         {
+           char *name = ada_type_name (type);
+           if (!ada_is_range_type_name (name))
+             fprintf_filtered (stream, "<%d-byte integer>",
+                               TYPE_LENGTH (type));
+           else
+             {
+               fprintf_filtered (stream, "range ");
+               print_range_type_named (name, stream);
+             }
+         }
+       break;
+      case TYPE_CODE_RANGE:
+       if (ada_is_fixed_point_type (type))
+         print_fixed_point_type (type, stream);
+       else if (ada_is_vax_floating_type (type))
+         print_vax_floating_point_type (type, stream);
+       else if (ada_is_modular_type (type))
+         fprintf_filtered (stream, "mod %ld", (long) ada_modulus (type));
+       else
+         {
+           fprintf_filtered (stream, "range ");
+           print_range (type, stream);
+         }
+       break;
+      case TYPE_CODE_FLT:
+       fprintf_filtered (stream, "<%d-byte float>", TYPE_LENGTH (type));
+       break;
+      case TYPE_CODE_ENUM:
+       if (show < 0)
+         fprintf_filtered (stream, "(...)");
+       else
+         print_enum_type (type, stream);
+       break;
+      case TYPE_CODE_STRUCT:
+       if (ada_is_array_descriptor (type))
+         print_array_type (type, stream, show, level);
+       else if (ada_is_bogus_array_descriptor (type))
+         fprintf_filtered (stream,
+                           "array (?) of ? (<mal-formed descriptor>)");
+       else
+         print_record_type (type, stream, show, level);
+       break;
+      case TYPE_CODE_UNION:
+       print_unchecked_union_type (type, stream, show, level);
+       break;
+      case TYPE_CODE_FUNC:
+       print_func_type (type, stream, varstring);
+       break;
+      }
 }
This page took 0.036186 seconds and 4 git commands to generate.