Index: ChangeLog
[deliverable/binutils-gdb.git] / gdb / mi / mi-out.c
index a92ccbeab8e290d98a5c94911091885780120fa4..2aac5289829ae6ed05d6bab5e1b89fc67b104726 100644 (file)
@@ -1,5 +1,7 @@
 /* MI Command Set - output generating routines.
-   Copyright 2000 Free Software Foundation, Inc.
+
+   Copyright 2000, 2002, 2003 Free Software Foundation, Inc.
+
    Contributed by Cygnus Solutions (a Red Hat company).
 
    This file is part of GDB.
 #include "ui-out.h"
 #include "mi-out.h"
 
-/* Convenience macro for allocting typesafe memory. */
-
-#ifndef XMALLOC
-#define XMALLOC(TYPE) (TYPE*) xmalloc (sizeof (TYPE))
-#endif
-
 struct ui_out_data
   {
     int suppress_field_separator;
@@ -36,6 +32,7 @@ struct ui_out_data
     int mi_version;
     struct ui_file *buffer;
   };
+typedef struct ui_out_data mi_out_data;
 
 /* These are the MI output functions */
 
@@ -111,16 +108,8 @@ mi_table_begin (struct ui_out *uiout,
                int nr_rows,
                const char *tblid)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   mi_open (uiout, tblid, ui_out_type_tuple);
-  if (data->mi_version == 0)
-    {
-      if (nr_rows == 0)
-       data->suppress_output = 1;
-      else
-       mi_open (uiout, "hdr", ui_out_type_list);
-      return;
-    }
   mi_field_int (uiout, -1/*fldno*/, -1/*width*/, -1/*alin*/,
                "nr_rows", nr_rows);
   mi_field_int (uiout, -1/*fldno*/, -1/*width*/, -1/*alin*/,
@@ -133,13 +122,11 @@ mi_table_begin (struct ui_out *uiout,
 void
 mi_table_body (struct ui_out *uiout)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   /* close the table header line if there were any headers */
   mi_close (uiout, ui_out_type_list);
-  if (data->mi_version == 0)
-    return;
   mi_open (uiout, "body", ui_out_type_list);
 }
 
@@ -148,13 +135,8 @@ mi_table_body (struct ui_out *uiout)
 void
 mi_table_end (struct ui_out *uiout)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   data->suppress_output = 0;
-  if (data->mi_version == 0)
-    {
-      mi_close (uiout, ui_out_type_tuple);
-      return;
-    }
   mi_close (uiout, ui_out_type_list); /* body */
   mi_close (uiout, ui_out_type_tuple);
 }
@@ -166,14 +148,9 @@ mi_table_header (struct ui_out *uiout, int width, enum ui_align alignment,
                 const char *col_name,
                 const char *colhdr)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
-  if (data->mi_version == 0)
-    {
-      mi_field_string (uiout, 0, width, alignment, 0, colhdr);
-      return;
-    }
   mi_open (uiout, NULL, ui_out_type_tuple);
   mi_field_int (uiout, 0, 0, 0, "width", width);
   mi_field_int (uiout, 0, 0, 0, "alignment", alignment);
@@ -190,7 +167,7 @@ mi_begin (struct ui_out *uiout,
          int level,
          const char *id)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   mi_open (uiout, id, type);
@@ -203,7 +180,7 @@ mi_end (struct ui_out *uiout,
        enum ui_out_type type,
        int level)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   mi_close (uiout, type);
@@ -216,7 +193,7 @@ mi_field_int (struct ui_out *uiout, int fldno, int width,
               enum ui_align alignment, const char *fldname, int value)
 {
   char buffer[20];             /* FIXME: how many chars long a %d can become? */
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
 
@@ -230,7 +207,7 @@ void
 mi_field_skip (struct ui_out *uiout, int fldno, int width,
                enum ui_align alignment, const char *fldname)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   mi_field_string (uiout, fldno, width, alignment, fldname, "");
@@ -247,7 +224,7 @@ mi_field_string (struct ui_out *uiout,
                 const char *fldname,
                 const char *string)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   field_separator (uiout);
@@ -268,7 +245,7 @@ mi_field_fmt (struct ui_out *uiout, int fldno,
              const char *format,
              va_list args)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_output)
     return;
   field_separator (uiout);
@@ -306,7 +283,7 @@ mi_wrap_hint (struct ui_out *uiout, char *identstring)
 void
 mi_flush (struct ui_out *uiout)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   gdb_flush (data->buffer);
 }
 
@@ -320,7 +297,7 @@ static void
 out_field_fmt (struct ui_out *uiout, int fldno, char *fldname,
               char *format,...)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   va_list args;
 
   field_separator (uiout);
@@ -342,7 +319,7 @@ out_field_fmt (struct ui_out *uiout, int fldno, char *fldname,
 static void
 field_separator (struct ui_out *uiout)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   if (data->suppress_field_separator)
     data->suppress_field_separator = 0;
   else
@@ -354,7 +331,7 @@ mi_open (struct ui_out *uiout,
         const char *name,
         enum ui_out_type type)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   field_separator (uiout);
   data->suppress_field_separator = 1;
   if (name)
@@ -365,10 +342,7 @@ mi_open (struct ui_out *uiout,
       fputc_unfiltered ('{', data->buffer);
       break;
     case ui_out_type_list:
-      if (data->mi_version == 0)
-       fputc_unfiltered ('{', data->buffer);
-      else
-       fputc_unfiltered ('[', data->buffer);
+      fputc_unfiltered ('[', data->buffer);
       break;
     default:
       internal_error (__FILE__, __LINE__, "bad switch");
@@ -379,17 +353,14 @@ static void
 mi_close (struct ui_out *uiout,
          enum ui_out_type type)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   switch (type)
     {
     case ui_out_type_tuple:
       fputc_unfiltered ('}', data->buffer);
       break;
     case ui_out_type_list:
-      if (data->mi_version == 0)
-       fputc_unfiltered ('}', data->buffer);
-      else
-       fputc_unfiltered (']', data->buffer);
+      fputc_unfiltered (']', data->buffer);
       break;
     default:
       internal_error (__FILE__, __LINE__, "bad switch");
@@ -402,7 +373,7 @@ mi_close (struct ui_out *uiout,
 void
 mi_out_buffered (struct ui_out *uiout, char *string)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   fprintf_unfiltered (data->buffer, "%s", string);
 }
 
@@ -411,7 +382,7 @@ mi_out_buffered (struct ui_out *uiout, char *string)
 void
 mi_out_rewind (struct ui_out *uiout)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   ui_file_rewind (data->buffer);
 }
 
@@ -427,18 +398,27 @@ void
 mi_out_put (struct ui_out *uiout,
            struct ui_file *stream)
 {
-  struct ui_out_data *data = ui_out_data (uiout);
+  mi_out_data *data = ui_out_data (uiout);
   ui_file_put (data->buffer, do_write, stream);
   ui_file_rewind (data->buffer);
 }
 
+/* Current MI version.  */
+
+int
+mi_version (struct ui_out *uiout)
+{
+  mi_out_data *data = ui_out_data (uiout);
+  return data->mi_version;
+}
+
 /* initalize private members at startup */
 
 struct ui_out *
 mi_out_new (int mi_version)
 {
   int flags = 0;
-  struct ui_out_data *data = XMALLOC (struct ui_out_data);
+  mi_out_data *data = XMALLOC (mi_out_data);
   data->suppress_field_separator = 0;
   data->suppress_output = 0;
   data->mi_version = mi_version;
This page took 0.026913 seconds and 4 git commands to generate.