This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch/mi] replace list_begin/end with begin/end
- To: GDB Patches <gdb-patches at sourceware dot cygnus dot com>
- Subject: [patch/mi] replace list_begin/end with begin/end
- From: Andrew Cagney <ac131313 at cygnus dot com>
- Date: Tue, 08 May 2001 21:32:12 -0400
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);