This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[patch/mi] replace list_begin/end with begin/end


Hello,

The attatched patch (... yep) replaces the ui_out_list_{begin,end}() 
interface with a more general ui_out_{begin,end}() interface.  It 
doesn't change any of the implementations (namely MI) and doesn't modify 
any of the output.  That is for a later patch.

	Andrew
2001-05-08  Andrew Cagney  <ac131313@redhat.com>

	* cli-out.c (cli_begin, cli_end): Replace cli_list_begin and
	cli_list_end.
	(cli_ui_out_impl): Update.

	* ui-out.c (default_begin, default_end): Replace
	default_list_begin and default_list_end.
	(default_ui_out_impl): Update.
	(uo_begin, uo_end): Replace ou_list_begin and uo_list_end.
	(ui_out_begin, ui_out_end): Replace ui_out_list_begin and
	ui_out_list_end.
	(ui_out_list_begin, ui_out_list_end): New.  Compatibility
	functions.
	(struct ui_out_level): Add field type.
	(push_level, pop_level): Update.  Add type parameter.

	* ui-out.h (enum ui_out_type): Declare.
	(ui_out_begin, ui_out_end): Declare.
	(ui_out_begin_ftype, ui_out_end_ftype): Replace list_begin_ftype
	and list_end_ftype.
	(struct ui_out_impl): Update.

2001-05-08  Andrew Cagney  <ac131313@redhat.com>

	* mi-out.c (mi_begin, mi_end): Replace mi_list_begin and
	mi_list_end.
	(mi_ui_out_impl): Update.

Index: cli-out.c
===================================================================
RCS file: /cvs/src/src/gdb/cli-out.c,v
retrieving revision 1.6
diff -p -r1.6 cli-out.c
*** cli-out.c	2001/03/06 08:21:06	1.6
--- cli-out.c	2001/05/09 00:36:21
*************** static void cli_table_body (struct ui_ou
*** 43,50 ****
  static void cli_table_end (struct ui_out *uiout);
  static void cli_table_header (struct ui_out *uiout, int width,
  			      enum ui_align alig, char *colhdr);
! static void cli_list_begin (struct ui_out *uiout, int list_flag, char *lstid);
! static void cli_list_end (struct ui_out *uiout, int list_flag);
  static void cli_field_int (struct ui_out *uiout, int fldno, int width,
  			   enum ui_align alig, char *fldname, int value);
  static void cli_field_skip (struct ui_out *uiout, int fldno, int width,
--- 43,51 ----
  static void cli_table_end (struct ui_out *uiout);
  static void cli_table_header (struct ui_out *uiout, int width,
  			      enum ui_align alig, char *colhdr);
! static void cli_begin (struct ui_out *uiout, enum ui_out_type type,
! 		       int level, const char *lstid);
! static void cli_end (struct ui_out *uiout, enum ui_out_type type, int level);
  static void cli_field_int (struct ui_out *uiout, int fldno, int width,
  			   enum ui_align alig, char *fldname, int value);
  static void cli_field_skip (struct ui_out *uiout, int fldno, int width,
*************** static struct ui_out_impl cli_ui_out_imp
*** 73,80 ****
    cli_table_body,
    cli_table_end,
    cli_table_header,
!   cli_list_begin,
!   cli_list_end,
    cli_field_int,
    cli_field_skip,
    cli_field_string,
--- 74,81 ----
    cli_table_body,
    cli_table_end,
    cli_table_header,
!   cli_begin,
!   cli_end,
    cli_field_int,
    cli_field_skip,
    cli_field_string,
*************** cli_table_header (struct ui_out *uiout, 
*** 134,147 ****
  /* Mark beginning of a list */
  
  void
! cli_list_begin (struct ui_out *uiout, int list_flag, char *lstid)
  {
  }
  
  /* Mark end of a list */
  
  void
! cli_list_end (struct ui_out *uiout, int list_flag)
  {
  }
  
--- 135,153 ----
  /* Mark beginning of a list */
  
  void
! cli_begin (struct ui_out *uiout,
! 	   enum ui_out_type type,
! 	   int level,
! 	   const char *id)
  {
  }
  
  /* Mark end of a list */
  
  void
! cli_end (struct ui_out *uiout,
! 	 enum ui_out_type type,
! 	 int level)
  {
  }
  
Index: ui-out.c
===================================================================
RCS file: /cvs/src/src/gdb/ui-out.c,v
retrieving revision 1.9
diff -p -r1.9 ui-out.c
*** ui-out.c	2001/05/09 00:23:23	1.9
--- ui-out.c	2001/05/09 00:36:21
*************** struct ui_out_level
*** 53,58 ****
--- 53,60 ----
    {
      /* Count each field; the first element is for non-list fields */
      int field_count;
+     /* The type of this level. */
+     enum ui_out_type type;
    };
  
  /* The ui_out structure */
*************** current_level (struct ui_out *uiout)
*** 103,126 ****
  /* Create a new level, of TYPE.  Return the new level's index. */
  static int
  push_level (struct ui_out *uiout,
  	    const char *id)
  {
    struct ui_out_level *current;
    /* We had better not overflow the buffer. */
    uiout->level++;
!   gdb_assert (uiout->level > 0 && uiout->level < MAX_UI_OUT_LEVELS);
    current = current_level (uiout);
    current->field_count = 0;
    return uiout->level;
  }
  
  /* Discard the current level, return the discarded level's index.
     TYPE is the type of the level being discarded. */
  static int
! pop_level (struct ui_out *uiout)
  {
    /* We had better not underflow the buffer. */
    gdb_assert (uiout->level > 0 && uiout->level < MAX_UI_OUT_LEVELS);
    uiout->level--;
    return uiout->level + 1;
  }
--- 105,132 ----
  /* Create a new level, of TYPE.  Return the new level's index. */
  static int
  push_level (struct ui_out *uiout,
+ 	    enum ui_out_type type,
  	    const char *id)
  {
    struct ui_out_level *current;
    /* We had better not overflow the buffer. */
    uiout->level++;
!   gdb_assert (uiout->level >= 0 && uiout->level < MAX_UI_OUT_LEVELS);
    current = current_level (uiout);
    current->field_count = 0;
+   current->type = type;
    return uiout->level;
  }
  
  /* Discard the current level, return the discarded level's index.
     TYPE is the type of the level being discarded. */
  static int
! pop_level (struct ui_out *uiout,
! 	   enum ui_out_type type)
  {
    /* We had better not underflow the buffer. */
    gdb_assert (uiout->level > 0 && uiout->level < MAX_UI_OUT_LEVELS);
+   gdb_assert (current_level (uiout)->type == type);
    uiout->level--;
    return uiout->level + 1;
  }
*************** static void default_table_body (struct u
*** 134,142 ****
  static void default_table_end (struct ui_out *uiout);
  static void default_table_header (struct ui_out *uiout, int width,
  				  enum ui_align alig, char *colhdr);
! static void default_list_begin (struct ui_out *uiout, int level,
! 				char *lstid);
! static void default_list_end (struct ui_out *uiout, int level);
  static void default_field_int (struct ui_out *uiout, int fldno, int width,
  			       enum ui_align alig, char *fldname, int value);
  static void default_field_skip (struct ui_out *uiout, int fldno, int width,
--- 140,151 ----
  static void default_table_end (struct ui_out *uiout);
  static void default_table_header (struct ui_out *uiout, int width,
  				  enum ui_align alig, char *colhdr);
! static void default_begin (struct ui_out *uiout,
! 			   enum ui_out_type type,
! 			   int level, const char *id);
! static void default_end (struct ui_out *uiout,
! 			 enum ui_out_type type,
! 			 int level);
  static void default_field_int (struct ui_out *uiout, int fldno, int width,
  			       enum ui_align alig, char *fldname, int value);
  static void default_field_skip (struct ui_out *uiout, int fldno, int width,
*************** struct ui_out_impl default_ui_out_impl =
*** 162,169 ****
    default_table_body,
    default_table_end,
    default_table_header,
!   default_list_begin,
!   default_list_end,
    default_field_int,
    default_field_skip,
    default_field_string,
--- 171,178 ----
    default_table_body,
    default_table_end,
    default_table_header,
!   default_begin,
!   default_end,
    default_field_int,
    default_field_skip,
    default_field_string,
*************** static void uo_table_body (struct ui_out
*** 196,203 ****
  static void uo_table_end (struct ui_out *uiout);
  static void uo_table_header (struct ui_out *uiout, int width,
  			     enum ui_align align, char *colhdr);
! static void uo_list_begin (struct ui_out *uiout, int level, char *lstid);
! static void uo_list_end (struct ui_out *uiout, int level);
  static void uo_field_int (struct ui_out *uiout, int fldno, int width,
  			  enum ui_align align, char *fldname, int value);
  static void uo_field_skip (struct ui_out *uiout, int fldno, int width,
--- 205,216 ----
  static void uo_table_end (struct ui_out *uiout);
  static void uo_table_header (struct ui_out *uiout, int width,
  			     enum ui_align align, char *colhdr);
! static void uo_begin (struct ui_out *uiout,
! 		      enum ui_out_type type,
! 		      int level, const char *id);
! static void uo_end (struct ui_out *uiout,
! 		    enum ui_out_type type,
! 		    int level);
  static void uo_field_int (struct ui_out *uiout, int fldno, int width,
  			  enum ui_align align, char *fldname, int value);
  static void uo_field_skip (struct ui_out *uiout, int fldno, int width,
*************** and before table_body.");
*** 303,326 ****
  }
  
  void
! ui_out_list_begin (struct ui_out *uiout, char *lstid)
  {
    int new_level;
    if (uiout->table_flag && !uiout->body_flag)
      internal_error (__FILE__, __LINE__,
  		    "table header or table_body expected; lists must be \
  specified after table_body.");
!   new_level = push_level (uiout, lstid);
    if (uiout->table_flag && (new_level == 1))
      uiout->headercurr = uiout->headerfirst;
!   uo_list_begin (uiout, new_level, lstid);
  }
  
  void
  ui_out_list_end (struct ui_out *uiout)
  {
!   int old_level = pop_level (uiout);
!   uo_list_end (uiout, old_level);
  }
  
  static void
--- 316,356 ----
  }
  
  void
! ui_out_begin (struct ui_out *uiout,
! 	      enum ui_out_type type,
! 	      const char *id)
  {
    int new_level;
    if (uiout->table_flag && !uiout->body_flag)
      internal_error (__FILE__, __LINE__,
  		    "table header or table_body expected; lists must be \
  specified after table_body.");
!   new_level = push_level (uiout, type, id);
    if (uiout->table_flag && (new_level == 1))
      uiout->headercurr = uiout->headerfirst;
!   uo_begin (uiout, type, new_level, id);
! }
! 
! void
! ui_out_list_begin (struct ui_out *uiout,
! 		   char *id)
! {
!   ui_out_begin (uiout, ui_out_type_list, id);
! }
! 
! void
! ui_out_end (struct ui_out *uiout,
! 	    enum ui_out_type type)
! {
!   int old_level = pop_level (uiout, type);
!   uo_end (uiout, type, old_level);
  }
  
  void
  ui_out_list_end (struct ui_out *uiout)
  {
!   ui_out_end (uiout, ui_out_type_list);
  }
  
  static void
*************** default_table_header (struct ui_out *uio
*** 629,640 ****
  }
  
  static void
! default_list_begin (struct ui_out *uiout, int level, char *lstid)
  {
  }
  
  static void
! default_list_end (struct ui_out *uiout, int level)
  {
  }
  
--- 659,675 ----
  }
  
  static void
! default_begin (struct ui_out *uiout,
! 	       enum ui_out_type type,
! 	       int level,
! 	       const char *id)
  {
  }
  
  static void
! default_end (struct ui_out *uiout,
! 	     enum ui_out_type type,
! 	     int level)
  {
  }
  
*************** uo_table_header (struct ui_out *uiout, i
*** 728,746 ****
  }
  
  void
! uo_list_begin (struct ui_out *uiout, int level, char *lstid)
  {
!   if (!uiout->impl->list_begin)
      return;
!   uiout->impl->list_begin (uiout, level, lstid);
  }
  
  void
! uo_list_end (struct ui_out *uiout, int level)
  {
!   if (!uiout->impl->list_end)
      return;
!   uiout->impl->list_end (uiout, level);
  }
  
  void
--- 763,786 ----
  }
  
  void
! uo_begin (struct ui_out *uiout,
! 	  enum ui_out_type type,
! 	  int level,
! 	  const char *id)
  {
!   if (uiout->impl->begin == NULL)
      return;
!   uiout->impl->begin (uiout, type, level, id);
  }
  
  void
! uo_end (struct ui_out *uiout,
! 	enum ui_out_type type,
! 	int level)
  {
!   if (uiout->impl->end == NULL)
      return;
!   uiout->impl->end (uiout, type, level);
  }
  
  void
Index: ui-out.h
===================================================================
RCS file: /cvs/src/src/gdb/ui-out.h,v
retrieving revision 1.6
diff -p -r1.6 ui-out.h
*** ui-out.h	2001/05/09 00:23:23	1.6
--- ui-out.h	2001/05/09 00:36:21
*************** struct ui_stream
*** 65,70 ****
--- 65,89 ----
  
  /* Prototypes for ui-out API. */
  
+ /* A result is a recursive data structure consisting of lists and
+    tupples. */
+ 
+ enum ui_out_type
+   {
+     ui_out_type_tupple,
+     ui_out_type_list
+   };
+ 
+ extern void ui_out_begin (struct ui_out *uiout,
+ 			  enum ui_out_type level_type,
+ 			  const char *id);
+ 
+ extern void ui_out_end (struct ui_out *uiout, enum ui_out_type type);
+ 
+ /* A table can be considered a special tupple/list combination with
+    the implied structure: ``table = { hdr = { header, ... } , body = [ {
+    field, ... }, ... ] }'' */
+ 
  extern void ui_out_table_begin (struct ui_out *uiout, int nbrofcols,
  				char *tblid);
  
*************** extern void ui_out_table_body (struct ui
*** 75,80 ****
--- 94,102 ----
  
  extern void ui_out_table_end (struct ui_out *uiout);
  
+ /* Compatibility wrappers, new code should use ui_out_begin() and
+    ui_out_end(). */
+ 
  extern void ui_out_list_begin (struct ui_out *uiout, char *lstid);
  
  extern void ui_out_list_end (struct ui_out *uiout);
*************** typedef void (table_header_ftype) (struc
*** 164,172 ****
  				   enum ui_align align, char *colhdr);
  /* Note: level 0 is the top-level so LEVEL is always greater than
     zero. */
! typedef void (list_begin_ftype) (struct ui_out * uiout,
! 				 int level, char *lstid);
! typedef void (list_end_ftype) (struct ui_out * uiout, int level);
  typedef void (field_int_ftype) (struct ui_out * uiout, int fldno, int width,
  			     enum ui_align align, char *fldname, int value);
  typedef void (field_skip_ftype) (struct ui_out * uiout, int fldno, int width,
--- 186,197 ----
  				   enum ui_align align, char *colhdr);
  /* Note: level 0 is the top-level so LEVEL is always greater than
     zero. */
! typedef void (ui_out_begin_ftype) (struct ui_out *uiout,
! 				   enum ui_out_type type,
! 				   int level, const char *id);
! typedef void (ui_out_end_ftype) (struct ui_out *uiout,
! 				 enum ui_out_type type,
! 				 int level);
  typedef void (field_int_ftype) (struct ui_out * uiout, int fldno, int width,
  			     enum ui_align align, char *fldname, int value);
  typedef void (field_skip_ftype) (struct ui_out * uiout, int fldno, int width,
*************** struct ui_out_impl
*** 195,202 ****
      table_body_ftype *table_body;
      table_end_ftype *table_end;
      table_header_ftype *table_header;
!     list_begin_ftype *list_begin;
!     list_end_ftype *list_end;
      field_int_ftype *field_int;
      field_skip_ftype *field_skip;
      field_string_ftype *field_string;
--- 220,227 ----
      table_body_ftype *table_body;
      table_end_ftype *table_end;
      table_header_ftype *table_header;
!     ui_out_begin_ftype *begin;
!     ui_out_end_ftype *end;
      field_int_ftype *field_int;
      field_skip_ftype *field_skip;
      field_string_ftype *field_string;
Index: mi/mi-out.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-out.c,v
retrieving revision 1.6
diff -p -r1.6 mi-out.c
*** mi-out.c	2001/03/06 08:21:45	1.6
--- mi-out.c	2001/05/09 00:36:22
*************** static void mi_table_body (struct ui_out
*** 43,50 ****
  static void mi_table_end (struct ui_out *uiout);
  static void mi_table_header (struct ui_out *uiout, int width,
  			     enum ui_align alig, char *colhdr);
! static void mi_list_begin (struct ui_out *uiout, int list_flag, char *lstid);
! static void mi_list_end (struct ui_out *uiout, int list_flag);
  static void mi_field_int (struct ui_out *uiout, int fldno, int width,
  			  enum ui_align alig, char *fldname, int value);
  static void mi_field_skip (struct ui_out *uiout, int fldno, int width,
--- 43,51 ----
  static void mi_table_end (struct ui_out *uiout);
  static void mi_table_header (struct ui_out *uiout, int width,
  			     enum ui_align alig, char *colhdr);
! static void mi_begin (struct ui_out *uiout, enum ui_out_type type,
! 		      int level, const char *id);
! static void mi_end (struct ui_out *uiout, enum ui_out_type type, int level);
  static void mi_field_int (struct ui_out *uiout, int fldno, int width,
  			  enum ui_align alig, char *fldname, int value);
  static void mi_field_skip (struct ui_out *uiout, int fldno, int width,
*************** struct ui_out_impl mi_ui_out_impl =
*** 73,80 ****
    mi_table_body,
    mi_table_end,
    mi_table_header,
!   mi_list_begin,
!   mi_list_end,
    mi_field_int,
    mi_field_skip,
    mi_field_string,
--- 74,81 ----
    mi_table_body,
    mi_table_end,
    mi_table_header,
!   mi_begin,
!   mi_end,
    mi_field_int,
    mi_field_skip,
    mi_field_string,
*************** mi_table_header (struct ui_out *uiout, i
*** 149,155 ****
  /* Mark beginning of a list */
  
  void
! mi_list_begin (struct ui_out *uiout, int list_flag, char *lstid)
  {
    struct ui_out_data *data = ui_out_data (uiout);
    field_separator (uiout);
--- 150,159 ----
  /* Mark beginning of a list */
  
  void
! mi_begin (struct ui_out *uiout,
! 	  enum ui_out_type type,
! 	  int level,
! 	  const char *lstid)
  {
    struct ui_out_data *data = ui_out_data (uiout);
    field_separator (uiout);
*************** mi_list_begin (struct ui_out *uiout, int
*** 162,168 ****
  /* Mark end of a list */
  
  void
! mi_list_end (struct ui_out *uiout, int list_flag)
  {
    struct ui_out_data *data = ui_out_data (uiout);
    list_close (uiout);
--- 166,174 ----
  /* Mark end of a list */
  
  void
! mi_end (struct ui_out *uiout,
! 	enum ui_out_type type,
! 	int level)
  {
    struct ui_out_data *data = ui_out_data (uiout);
    list_close (uiout);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]