diff options
author | Tom Tromey <tromey@adacore.com> | 2024-08-14 11:22:58 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2024-08-15 10:14:37 -0600 |
commit | d47600c85d26176cc7030da78f8cfc6e98bcfbbf (patch) | |
tree | 13954325667b4bd371453bed04c99decb1185d93 | |
parent | 5c8f918639f1df77599c50fddfdfe23a2e3cbf35 (diff) | |
download | binutils-d47600c85d26176cc7030da78f8cfc6e98bcfbbf.zip binutils-d47600c85d26176cc7030da78f8cfc6e98bcfbbf.tar.gz binutils-d47600c85d26176cc7030da78f8cfc6e98bcfbbf.tar.bz2 |
Add another constructor to scoped_restore_current_language
While working on something else, I noticed that this is relatively
common:
scoped_restore_current_language save;
set_language (something);
This patch adds a second constructor to
scoped_restore_current_language to simplify this idiom.
Reviewed-By: Tom de Vries <tdevries@suse.de>
-rw-r--r-- | gdb/breakpoint.c | 3 | ||||
-rw-r--r-- | gdb/language.c | 7 | ||||
-rw-r--r-- | gdb/language.h | 4 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 5 | ||||
-rw-r--r-- | gdb/parse.c | 8 | ||||
-rw-r--r-- | gdb/symmisc.c | 3 |
6 files changed, 16 insertions, 14 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 9a78029..17bd627 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3734,8 +3734,7 @@ create_std_terminate_master_breakpoint (void) const char *const func_name = "std::terminate()"; scoped_restore_current_program_space restore_pspace; - scoped_restore_current_language save_language; - set_language (language_cplus); + scoped_restore_current_language save_language (language_cplus); for (struct program_space *pspace : program_spaces) { diff --git a/gdb/language.c b/gdb/language.c index be6a1e8..d697331 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -110,6 +110,13 @@ scoped_restore_current_language::scoped_restore_current_language () { } +scoped_restore_current_language::scoped_restore_current_language + (enum language lang) + : scoped_restore_current_language () +{ + set_language (lang); +} + scoped_restore_current_language::~scoped_restore_current_language () { /* If both are NULL, then that means dont_restore was called. */ diff --git a/gdb/language.h b/gdb/language.h index a2ce169..985e622 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -860,6 +860,10 @@ class scoped_restore_current_language public: scoped_restore_current_language (); + + /* Set the current language as well. */ + explicit scoped_restore_current_language (enum language lang); + ~scoped_restore_current_language (); scoped_restore_current_language (scoped_restore_current_language &&other) diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 5bcb5f7..b72cd1b9 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2130,10 +2130,7 @@ mi_cmd_execute (struct mi_parse *parse) std::optional<scoped_restore_current_language> lang_saver; if (parse->language != language_unknown) - { - lang_saver.emplace (); - set_language (parse->language); - } + lang_saver.emplace (parse->language); current_context = parse; diff --git a/gdb/parse.c b/gdb/parse.c index 03763de..e0837de 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -423,8 +423,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc, expression_context_pc, flags, *stringptr, completer != nullptr, tracker); - scoped_restore_current_language lang_saver; - set_language (lang->la_language); + scoped_restore_current_language lang_saver (lang->la_language); try { @@ -490,10 +489,7 @@ parse_expression_with_language (const char *string, enum language lang) { std::optional<scoped_restore_current_language> lang_saver; if (current_language->la_language != lang) - { - lang_saver.emplace (); - set_language (lang); - } + lang_saver.emplace (lang); return parse_expression (string); } diff --git a/gdb/symmisc.c b/gdb/symmisc.c index b4e0360..7f81415 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -366,8 +366,7 @@ dump_symtab (struct symtab *symtab, struct ui_file *outfile) But use only real languages, not placeholders. */ if (symtab->language () != language_unknown) { - scoped_restore_current_language save_lang; - set_language (symtab->language ()); + scoped_restore_current_language save_lang (symtab->language ()); dump_symtab_1 (symtab, outfile); } else |