Remove set_batch_flag_and_make_cleanup_restore_page_info
This removes set_batch_flag_and_make_cleanup_restore_page_info and make_cleanup_restore_page_info in favor of a new RAII class. This then allows for the removal of make_cleanup_restore_uinteger and make_cleanup_restore_integer ChangeLog 2017-10-03 Tom Tromey <tom@tromey.com> * guile/scm-ports.c (ioscm_with_output_to_port_worker): Update. * top.c (execute_command_to_string): Update. * utils.c (make_cleanup_restore_page_info): Remove. (do_restore_page_info_cleanup): Remove. (set_batch_flag_and_restore_page_info): New. (make_cleanup_restore_page_info): Remove. (set_batch_flag_and_make_cleanup_restore_page_info): Remove. (~set_batch_flag_and_restore_page_info): New (make_cleanup_restore_uinteger): Remove. (make_cleanup_restore_integer): Remove. (struct restore_integer_closure): Remove. (restore_integer): Remove. * utils.h (struct set_batch_flag_and_restore_page_info): New class. (set_batch_flag_and_make_cleanup_restore_page_info): Remove. (make_cleanup_restore_page_info): Remove. (make_cleanup_restore_uinteger) Remove. (make_cleanup_restore_integer) Remove.
This commit is contained in:
parent
070365117b
commit
b95de2b7ae
5 changed files with 58 additions and 85 deletions
|
@ -1,3 +1,25 @@
|
||||||
|
2017-10-03 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
|
* guile/scm-ports.c (ioscm_with_output_to_port_worker): Update.
|
||||||
|
* top.c (execute_command_to_string): Update.
|
||||||
|
* utils.c (make_cleanup_restore_page_info): Remove.
|
||||||
|
(do_restore_page_info_cleanup): Remove.
|
||||||
|
(set_batch_flag_and_restore_page_info):
|
||||||
|
New.
|
||||||
|
(make_cleanup_restore_page_info): Remove.
|
||||||
|
(set_batch_flag_and_make_cleanup_restore_page_info): Remove.
|
||||||
|
(~set_batch_flag_and_restore_page_info): New
|
||||||
|
(make_cleanup_restore_uinteger): Remove.
|
||||||
|
(make_cleanup_restore_integer): Remove.
|
||||||
|
(struct restore_integer_closure): Remove.
|
||||||
|
(restore_integer): Remove.
|
||||||
|
* utils.h (struct set_batch_flag_and_restore_page_info): New
|
||||||
|
class.
|
||||||
|
(set_batch_flag_and_make_cleanup_restore_page_info): Remove.
|
||||||
|
(make_cleanup_restore_page_info): Remove.
|
||||||
|
(make_cleanup_restore_uinteger) Remove.
|
||||||
|
(make_cleanup_restore_integer) Remove.
|
||||||
|
|
||||||
2017-10-03 Tom Tromey <tom@tromey.com>
|
2017-10-03 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* record-full.h (record_full_gdb_operation_disable_set): Return
|
* record-full.h (record_full_gdb_operation_disable_set): Return
|
||||||
|
|
|
@ -461,7 +461,6 @@ static SCM
|
||||||
ioscm_with_output_to_port_worker (SCM port, SCM thunk, enum oport oport,
|
ioscm_with_output_to_port_worker (SCM port, SCM thunk, enum oport oport,
|
||||||
const char *func_name)
|
const char *func_name)
|
||||||
{
|
{
|
||||||
struct cleanup *cleanups;
|
|
||||||
SCM result;
|
SCM result;
|
||||||
|
|
||||||
SCM_ASSERT_TYPE (gdbscm_is_true (scm_output_port_p (port)), port,
|
SCM_ASSERT_TYPE (gdbscm_is_true (scm_output_port_p (port)), port,
|
||||||
|
@ -469,7 +468,7 @@ ioscm_with_output_to_port_worker (SCM port, SCM thunk, enum oport oport,
|
||||||
SCM_ASSERT_TYPE (gdbscm_is_true (scm_thunk_p (thunk)), thunk,
|
SCM_ASSERT_TYPE (gdbscm_is_true (scm_thunk_p (thunk)), thunk,
|
||||||
SCM_ARG2, func_name, _("thunk"));
|
SCM_ARG2, func_name, _("thunk"));
|
||||||
|
|
||||||
cleanups = set_batch_flag_and_make_cleanup_restore_page_info ();
|
set_batch_flag_and_restore_page_info save_page_info;
|
||||||
|
|
||||||
scoped_restore restore_async = make_scoped_restore (¤t_ui->async, 0);
|
scoped_restore restore_async = make_scoped_restore (¤t_ui->async, 0);
|
||||||
|
|
||||||
|
@ -493,8 +492,6 @@ ioscm_with_output_to_port_worker (SCM port, SCM thunk, enum oport oport,
|
||||||
result = gdbscm_safe_call_0 (thunk, NULL);
|
result = gdbscm_safe_call_0 (thunk, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
do_cleanups (cleanups);
|
|
||||||
|
|
||||||
if (gdbscm_is_exception (result))
|
if (gdbscm_is_exception (result))
|
||||||
gdbscm_throw (result);
|
gdbscm_throw (result);
|
||||||
|
|
||||||
|
|
|
@ -666,11 +666,9 @@ execute_command (char *p, int from_tty)
|
||||||
std::string
|
std::string
|
||||||
execute_command_to_string (char *p, int from_tty)
|
execute_command_to_string (char *p, int from_tty)
|
||||||
{
|
{
|
||||||
struct cleanup *cleanup;
|
|
||||||
|
|
||||||
/* GDB_STDOUT should be better already restored during these
|
/* GDB_STDOUT should be better already restored during these
|
||||||
restoration callbacks. */
|
restoration callbacks. */
|
||||||
cleanup = set_batch_flag_and_make_cleanup_restore_page_info ();
|
set_batch_flag_and_restore_page_info save_page_info;
|
||||||
|
|
||||||
scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
|
scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
|
||||||
|
|
||||||
|
@ -694,8 +692,6 @@ execute_command_to_string (char *p, int from_tty)
|
||||||
execute_command (p, from_tty);
|
execute_command (p, from_tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
do_cleanups (cleanup);
|
|
||||||
|
|
||||||
return std::move (str_file.string ());
|
return std::move (str_file.string ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
83
gdb/utils.c
83
gdb/utils.c
|
@ -150,44 +150,6 @@ make_cleanup_free_section_addr_info (struct section_addr_info *addrs)
|
||||||
return make_cleanup (do_free_section_addr_info, addrs);
|
return make_cleanup (do_free_section_addr_info, addrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct restore_integer_closure
|
|
||||||
{
|
|
||||||
int *variable;
|
|
||||||
int value;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
restore_integer (void *p)
|
|
||||||
{
|
|
||||||
struct restore_integer_closure *closure
|
|
||||||
= (struct restore_integer_closure *) p;
|
|
||||||
|
|
||||||
*(closure->variable) = closure->value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remember the current value of *VARIABLE and make it restored when
|
|
||||||
the cleanup is run. */
|
|
||||||
|
|
||||||
struct cleanup *
|
|
||||||
make_cleanup_restore_integer (int *variable)
|
|
||||||
{
|
|
||||||
struct restore_integer_closure *c = XNEW (struct restore_integer_closure);
|
|
||||||
|
|
||||||
c->variable = variable;
|
|
||||||
c->value = *variable;
|
|
||||||
|
|
||||||
return make_cleanup_dtor (restore_integer, (void *) c, xfree);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remember the current value of *VARIABLE and make it restored when
|
|
||||||
the cleanup is run. */
|
|
||||||
|
|
||||||
struct cleanup *
|
|
||||||
make_cleanup_restore_uinteger (unsigned int *variable)
|
|
||||||
{
|
|
||||||
return make_cleanup_restore_integer ((int *) variable);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Helper for make_cleanup_unpush_target. */
|
/* Helper for make_cleanup_unpush_target. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1464,42 +1426,23 @@ filtered_printing_initialized (void)
|
||||||
return wrap_buffer != NULL;
|
return wrap_buffer != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper for make_cleanup_restore_page_info. */
|
set_batch_flag_and_restore_page_info::set_batch_flag_and_restore_page_info ()
|
||||||
|
: m_save_lines_per_page (lines_per_page),
|
||||||
static void
|
m_save_chars_per_line (chars_per_line),
|
||||||
do_restore_page_info_cleanup (void *arg)
|
m_save_batch_flag (batch_flag)
|
||||||
{
|
{
|
||||||
set_screen_size ();
|
|
||||||
set_width ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Provide cleanup for restoring the terminal size. */
|
|
||||||
|
|
||||||
struct cleanup *
|
|
||||||
make_cleanup_restore_page_info (void)
|
|
||||||
{
|
|
||||||
struct cleanup *back_to;
|
|
||||||
|
|
||||||
back_to = make_cleanup (do_restore_page_info_cleanup, NULL);
|
|
||||||
make_cleanup_restore_uinteger (&lines_per_page);
|
|
||||||
make_cleanup_restore_uinteger (&chars_per_line);
|
|
||||||
|
|
||||||
return back_to;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
|
|
||||||
Provide cleanup for restoring the original state. */
|
|
||||||
|
|
||||||
struct cleanup *
|
|
||||||
set_batch_flag_and_make_cleanup_restore_page_info (void)
|
|
||||||
{
|
|
||||||
struct cleanup *back_to = make_cleanup_restore_page_info ();
|
|
||||||
|
|
||||||
make_cleanup_restore_integer (&batch_flag);
|
|
||||||
batch_flag = 1;
|
batch_flag = 1;
|
||||||
init_page_info ();
|
init_page_info ();
|
||||||
|
}
|
||||||
|
|
||||||
return back_to;
|
set_batch_flag_and_restore_page_info::~set_batch_flag_and_restore_page_info ()
|
||||||
|
{
|
||||||
|
batch_flag = m_save_batch_flag;
|
||||||
|
chars_per_line = m_save_chars_per_line;
|
||||||
|
lines_per_page = m_save_lines_per_page;
|
||||||
|
|
||||||
|
set_screen_size ();
|
||||||
|
set_width ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */
|
/* Set the screen size based on LINES_PER_PAGE and CHARS_PER_LINE. */
|
||||||
|
|
27
gdb/utils.h
27
gdb/utils.h
|
@ -211,9 +211,6 @@ extern struct cleanup *(make_cleanup_free_section_addr_info
|
||||||
|
|
||||||
/* For make_cleanup_close see common/filestuff.h. */
|
/* For make_cleanup_close see common/filestuff.h. */
|
||||||
|
|
||||||
extern struct cleanup *make_cleanup_restore_integer (int *variable);
|
|
||||||
extern struct cleanup *make_cleanup_restore_uinteger (unsigned int *variable);
|
|
||||||
|
|
||||||
struct target_ops;
|
struct target_ops;
|
||||||
extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
|
extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
|
||||||
|
|
||||||
|
@ -236,9 +233,27 @@ extern void free_current_contents (void *);
|
||||||
|
|
||||||
extern void init_page_info (void);
|
extern void init_page_info (void);
|
||||||
|
|
||||||
extern struct cleanup *make_cleanup_restore_page_info (void);
|
/* Temporarily set BATCH_FLAG and the associated unlimited terminal size.
|
||||||
extern struct cleanup *
|
Restore when destroyed. */
|
||||||
set_batch_flag_and_make_cleanup_restore_page_info (void);
|
|
||||||
|
struct set_batch_flag_and_restore_page_info
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
set_batch_flag_and_restore_page_info ();
|
||||||
|
~set_batch_flag_and_restore_page_info ();
|
||||||
|
|
||||||
|
DISABLE_COPY_AND_ASSIGN (set_batch_flag_and_restore_page_info);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
/* Note that this doesn't use scoped_restore, because it's important
|
||||||
|
to control the ordering of operations in the destruction, and it
|
||||||
|
was simpler to avoid introducing a new ad hoc class. */
|
||||||
|
unsigned m_save_lines_per_page;
|
||||||
|
unsigned m_save_chars_per_line;
|
||||||
|
int m_save_batch_flag;
|
||||||
|
};
|
||||||
|
|
||||||
extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
|
extern struct cleanup *make_bpstat_clear_actions_cleanup (void);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue