From: Andrew Cagney Date: Thu, 10 May 2001 21:30:37 +0000 (+0000) Subject: 2001-05-10 Andrew Cagney X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=127431f9a7b56cb6b4daf8887cca8ff48064fa40;p=deliverable%2Fbinutils-gdb.git 2001-05-10 Andrew Cagney * ui-out.h (make_cleanup_ui_out_begin_end): Declare. * ui-out.c (struct ui_out_end_cleanup_data): Define. (do_cleanup_end): New function. Replace do_list_end. (make_cleanup_ui_out_end): New function. (make_cleanup_ui_out_begin_end): New function. (make_cleanup_ui_out_list_end): Use make_cleanup_ui_out_end. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 736718736b..1eaed0da7d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2001-05-10 Andrew Cagney + + * ui-out.h (make_cleanup_ui_out_begin_end): Declare. + * ui-out.c (struct ui_out_end_cleanup_data): Define. + (do_cleanup_end): New function. Replace do_list_end. + (make_cleanup_ui_out_end): New function. + (make_cleanup_ui_out_begin_end): New function. + (make_cleanup_ui_out_list_end): Use make_cleanup_ui_out_end. + 2001-05-10 Elena Zannoni * MAINTAINERS: Declare xcoffread.c open to all maintainers, diff --git a/gdb/ui-out.c b/gdb/ui-out.c index 696128d0b6..3e0f55c97c 100644 --- a/gdb/ui-out.c +++ b/gdb/ui-out.c @@ -352,16 +352,44 @@ ui_out_list_end (struct ui_out *uiout) ui_out_end (uiout, ui_out_type_list); } +struct ui_out_end_cleanup_data +{ + struct ui_out *uiout; + enum ui_out_type type; +}; + static void -do_list_end (void *uiout) +do_cleanup_end (void *data) +{ + struct ui_out_end_cleanup_data *end_cleanup_data = data; + ui_out_end (end_cleanup_data->uiout, end_cleanup_data->type); + xfree (end_cleanup_data); +} + +static struct cleanup * +make_cleanup_ui_out_end (struct ui_out *uiout, + enum ui_out_type type) +{ + struct ui_out_end_cleanup_data *end_cleanup_data; + end_cleanup_data = XMALLOC (struct ui_out_end_cleanup_data); + end_cleanup_data->uiout = uiout; + end_cleanup_data->type = type; + return make_cleanup (do_cleanup_end, end_cleanup_data); +} + +struct cleanup * +make_cleanup_ui_out_begin_end (struct ui_out *uiout, + enum ui_out_type type, + const char *id) { - ui_out_list_end (uiout); + ui_out_begin (uiout, type, id); + return make_cleanup_ui_out_end (uiout, type); } struct cleanup * make_cleanup_ui_out_list_end (struct ui_out *uiout) { - return make_cleanup (do_list_end, uiout); + return make_cleanup_ui_out_end (uiout, ui_out_type_list); } void diff --git a/gdb/ui-out.h b/gdb/ui-out.h index a537412e0a..ed2a289f0b 100644 --- a/gdb/ui-out.h +++ b/gdb/ui-out.h @@ -80,6 +80,10 @@ extern void ui_out_begin (struct ui_out *uiout, extern void ui_out_end (struct ui_out *uiout, enum ui_out_type type); +extern struct cleanup *ui_out_begin_cleanup_end (struct ui_out *uiout, + enum ui_out_type level_type, + const char *id); + /* A table can be considered a special tupple/list combination with the implied structure: ``table = { hdr = { header, ... } , body = [ { field, ... }, ... ] }'' */