Move errno.h to common-defs.h
[deliverable/binutils-gdb.git] / gdb / p-typeprint.c
index a00f5b32d9f41da617a54aec63e6abc618141d38..b1e16f02d3d23bf59a5eba124c861e72859b3937 100644 (file)
@@ -1,5 +1,5 @@
 /* Support for printing Pascal types for GDB, the GNU debugger.
-   Copyright (C) 2000-2002, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2014 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "p-lang.h"
 #include "typeprint.h"
 #include "gdb-demangle.h"
-#include "gdb_string.h"
-#include <errno.h>
 #include <ctype.h>
 
 static void pascal_type_print_varspec_suffix (struct type *, struct ui_file *,
-                                             int, int, int);
+                                             int, int, int,
+                                             const struct type_print_options *);
 
 static void pascal_type_print_derivation_info (struct ui_file *,
                                               struct type *);
 
-void pascal_type_print_varspec_prefix (struct type *, struct ui_file *,
-                                      int, int);
 \f
 
 /* LEVEL is the depth to indent lines by.  */
 
 void
 pascal_print_type (struct type *type, const char *varstring,
-                  struct ui_file *stream, int show, int level)
+                  struct ui_file *stream, int show, int level,
+                  const struct type_print_options *flags)
 {
   enum type_code code;
   int demangled_args;
@@ -62,7 +60,7 @@ pascal_print_type (struct type *type, const char *varstring,
   if ((code == TYPE_CODE_FUNC
        || code == TYPE_CODE_METHOD))
     {
-      pascal_type_print_varspec_prefix (type, stream, show, 0);
+      pascal_type_print_varspec_prefix (type, stream, show, 0, flags);
     }
   /* first the name */
   fputs_filtered (varstring, stream);
@@ -77,15 +75,16 @@ pascal_print_type (struct type *type, const char *varstring,
   if (!(code == TYPE_CODE_FUNC
        || code == TYPE_CODE_METHOD))
     {
-      pascal_type_print_varspec_prefix (type, stream, show, 0);
+      pascal_type_print_varspec_prefix (type, stream, show, 0, flags);
     }
 
-  pascal_type_print_base (type, stream, show, level);
+  pascal_type_print_base (type, stream, show, level, flags);
   /* For demangled function names, we have the arglist as part of the name,
      so don't print an additional pair of ()'s.  */
 
   demangled_args = varstring ? strchr (varstring, '(') != NULL : 0;
-  pascal_type_print_varspec_suffix (type, stream, show, 0, demangled_args);
+  pascal_type_print_varspec_suffix (type, stream, show, 0, demangled_args,
+                                   flags);
 
 }
 
@@ -205,7 +204,8 @@ pascal_type_print_method_args (const char *physname, const char *methodname,
 
 void
 pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
-                                 int show, int passed_a_ptr)
+                                 int show, int passed_a_ptr,
+                                 const struct type_print_options *flags)
 {
   if (type == 0)
     return;
@@ -219,7 +219,8 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     {
     case TYPE_CODE_PTR:
       fprintf_filtered (stream, "^");
-      pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+      pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1,
+                                       flags);
       break;                   /* Pointer should be handled normally
                                   in pascal.  */
 
@@ -239,13 +240,14 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
        {
          fprintf_filtered (stream, " ");
          pascal_type_print_base (TYPE_DOMAIN_TYPE (type),
-                                 stream, 0, passed_a_ptr);
+                                 stream, 0, passed_a_ptr, flags);
          fprintf_filtered (stream, "::");
        }
       break;
 
     case TYPE_CODE_REF:
-      pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1);
+      pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1,
+                                       flags);
       fprintf_filtered (stream, "&");
       break;
 
@@ -289,7 +291,6 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types need no prefix.  They are listed here so that
@@ -302,7 +303,8 @@ pascal_type_print_varspec_prefix (struct type *type, struct ui_file *stream,
 }
 
 static void
-pascal_print_func_args (struct type *type, struct ui_file *stream)
+pascal_print_func_args (struct type *type, struct ui_file *stream,
+                       const struct type_print_options *flags)
 {
   int i, len = TYPE_NFIELDS (type);
 
@@ -324,7 +326,7 @@ pascal_print_func_args (struct type *type, struct ui_file *stream)
          } */
       pascal_print_type (TYPE_FIELD_TYPE (type, i), "" /* TYPE_FIELD_NAME
                                                           seems invalid!  */
-                        ,stream, -1, 0);
+                        ,stream, -1, 0, flags);
     }
   if (len)
     {
@@ -339,7 +341,8 @@ pascal_print_func_args (struct type *type, struct ui_file *stream)
 static void
 pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
                                  int show, int passed_a_ptr,
-                                 int demangled_args)
+                                 int demangled_args,
+                                 const struct type_print_options *flags)
 {
   if (type == 0)
     return;
@@ -366,32 +369,34 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
        {
          fprintf_filtered (stream, " : ");
          pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
-                                           stream, 0, 0);
-         pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, 0);
+                                           stream, 0, 0, flags);
+         pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, 0,
+                                 flags);
          pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
-                                           passed_a_ptr, 0);
+                                           passed_a_ptr, 0, flags);
        }
       break;
 
     case TYPE_CODE_PTR:
     case TYPE_CODE_REF:
       pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type),
-                                       stream, 0, 1, 0);
+                                       stream, 0, 1, 0, flags);
       break;
 
     case TYPE_CODE_FUNC:
       if (passed_a_ptr)
        fprintf_filtered (stream, ")");
       if (!demangled_args)
-       pascal_print_func_args (type, stream);
+       pascal_print_func_args (type, stream, flags);
       if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
        {
          fprintf_filtered (stream, " : ");
          pascal_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
-                                           stream, 0, 0);
-         pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, 0);
+                                           stream, 0, 0, flags);
+         pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, 0,
+                                 flags);
          pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
-                                           passed_a_ptr, 0);
+                                           passed_a_ptr, 0, flags);
        }
       break;
 
@@ -408,7 +413,6 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
     case TYPE_CODE_SET:
     case TYPE_CODE_RANGE:
     case TYPE_CODE_STRING:
-    case TYPE_CODE_BITSTRING:
     case TYPE_CODE_COMPLEX:
     case TYPE_CODE_TYPEDEF:
       /* These types do not need a suffix.  They are listed so that
@@ -438,11 +442,11 @@ pascal_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
 
 void
 pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
-                       int level)
+                       int level, const struct type_print_options *flags)
 {
   int i;
   int len;
-  int lastval;
+  LONGEST lastval;
   enum
     {
       s_none, s_public, s_private, s_protected
@@ -484,7 +488,8 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
     case TYPE_CODE_REF:
       /* case TYPE_CODE_FUNC:
          case TYPE_CODE_METHOD: */
-      pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
+      pascal_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level,
+                             flags);
       break;
 
     case TYPE_CODE_ARRAY:
@@ -494,7 +499,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
                                 stream, show, level);
          pascal_type_print_varspec_suffix (TYPE_TARGET_TYPE (type),
                                           stream, 0, 0, 0); */
-      pascal_print_type (TYPE_TARGET_TYPE (type), NULL, stream, 0, 0);
+      pascal_print_type (TYPE_TARGET_TYPE (type), NULL, stream, 0, 0, flags);
       break;
 
     case TYPE_CODE_FUNC:
@@ -603,7 +608,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
                fprintf_filtered (stream, "static ");
              pascal_print_type (TYPE_FIELD_TYPE (type, i),
                                 TYPE_FIELD_NAME (type, i),
-                                stream, show - 1, level + 4);
+                                stream, show - 1, level + 4, flags);
              if (!field_is_static (&TYPE_FIELD (type, i))
                  && TYPE_FIELD_PACKED (type, i))
                {
@@ -789,11 +794,7 @@ pascal_type_print_base (struct type *type, struct ui_file *stream, int show,
     case TYPE_CODE_SET:
       fputs_filtered ("set of ", stream);
       pascal_print_type (TYPE_INDEX_TYPE (type), "", stream,
-                        show - 1, level);
-      break;
-
-    case TYPE_CODE_BITSTRING:
-      fputs_filtered ("BitString", stream);
+                        show - 1, level, flags);
       break;
 
     case TYPE_CODE_STRING:
This page took 0.046056 seconds and 4 git commands to generate.