diff options
author | Tom Tromey <tom@tromey.com> | 2017-09-06 21:41:40 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-09-09 13:46:09 -0600 |
commit | c0470d489b47f0bbe57893b31d56d2d4ef945f4c (patch) | |
tree | fcc6c9efcc6c13b32df3f6d0c9a73819c8227345 | |
parent | ca5909c7de7353d8005bf8fdcc020b8f14cc1603 (diff) | |
download | gdb-c0470d489b47f0bbe57893b31d56d2d4ef945f4c.zip gdb-c0470d489b47f0bbe57893b31d56d2d4ef945f4c.tar.gz gdb-c0470d489b47f0bbe57893b31d56d2d4ef945f4c.tar.bz2 |
Use ui_out_emit_list and ui_out_emit_tuple with gdb::optional
This changes a few spots to use ui_out_emit_list and/or
ui_out_emit_tuple with gdb::optional, to preserve existing behavior.
This allows for the removal of a few more cleanups.
ChangeLog
2017-09-09 Tom Tromey <tom@tromey.com>
* mi/mi-cmd-var.c (mi_cmd_var_list_children): Use gdb::optional,
ui_out_emit_list, ui_out_emit_tuple.
(mi_cmd_var_update): Likewise.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/mi/mi-cmd-var.c | 24 |
2 files changed, 19 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 736cdc1..a05e635 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2017-09-09 Tom Tromey <tom@tromey.com> + * mi/mi-cmd-var.c (mi_cmd_var_list_children): Use gdb::optional, + ui_out_emit_list, ui_out_emit_tuple. + (mi_cmd_var_update): Likewise. + +2017-09-09 Tom Tromey <tom@tromey.com> + * mi/mi-interp.c (mi_user_selected_context_changed): Use ui_out_redirect_pop. * guile/scm-ports.c (ioscm_with_output_to_port_worker): Use diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c index 191e770..8b22b2f 100644 --- a/gdb/mi/mi-cmd-var.c +++ b/gdb/mi/mi-cmd-var.c @@ -410,14 +410,15 @@ mi_cmd_var_list_children (const char *command, char **argv, int argc) if (from < to) { - struct cleanup *cleanup_children; + /* For historical reasons this might emit a list or a tuple, so + we construct one or the other. */ + gdb::optional<ui_out_emit_tuple> tuple_emitter; + gdb::optional<ui_out_emit_list> list_emitter; if (mi_version (uiout) == 1) - cleanup_children - = make_cleanup_ui_out_tuple_begin_end (uiout, "children"); + tuple_emitter.emplace (uiout, "children"); else - cleanup_children - = make_cleanup_ui_out_list_begin_end (uiout, "children"); + list_emitter.emplace (uiout, "children"); for (ix = from; ix < to && VEC_iterate (varobj_p, children, ix, child); ++ix) @@ -426,7 +427,6 @@ mi_cmd_var_list_children (const char *command, char **argv, int argc) print_varobj (child, print_values, 1 /* print expression */); } - do_cleanups (cleanup_children); } uiout->field_int ("has_more", varobj_has_more (var, to)); @@ -648,7 +648,6 @@ void mi_cmd_var_update (const char *command, char **argv, int argc) { struct ui_out *uiout = current_uiout; - struct cleanup *cleanup; char *name; enum print_values print_values; @@ -665,10 +664,15 @@ mi_cmd_var_update (const char *command, char **argv, int argc) else print_values = PRINT_NO_VALUES; + /* For historical reasons this might emit a list or a tuple, so we + construct one or the other. */ + gdb::optional<ui_out_emit_tuple> tuple_emitter; + gdb::optional<ui_out_emit_list> list_emitter; + if (mi_version (uiout) <= 1) - cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "changelist"); + tuple_emitter.emplace (uiout, "changelist"); else - cleanup = make_cleanup_ui_out_list_begin_end (uiout, "changelist"); + list_emitter.emplace (uiout, "changelist"); /* Check if the parameter is a "*", which means that we want to update all variables. */ @@ -693,8 +697,6 @@ mi_cmd_var_update (const char *command, char **argv, int argc) varobj_update_one (var, print_values, 1 /* explicit */); } - - do_cleanups (cleanup); } /* Helper for mi_cmd_var_update(). */ |