forked from Imagelibrary/binutils-gdb
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>
This commit is contained in:
@@ -3734,8 +3734,7 @@ create_std_terminate_master_breakpoint (void)
|
|||||||
const char *const func_name = "std::terminate()";
|
const char *const func_name = "std::terminate()";
|
||||||
|
|
||||||
scoped_restore_current_program_space restore_pspace;
|
scoped_restore_current_program_space restore_pspace;
|
||||||
scoped_restore_current_language save_language;
|
scoped_restore_current_language save_language (language_cplus);
|
||||||
set_language (language_cplus);
|
|
||||||
|
|
||||||
for (struct program_space *pspace : program_spaces)
|
for (struct program_space *pspace : program_spaces)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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 ()
|
scoped_restore_current_language::~scoped_restore_current_language ()
|
||||||
{
|
{
|
||||||
/* If both are NULL, then that means dont_restore was called. */
|
/* If both are NULL, then that means dont_restore was called. */
|
||||||
|
|||||||
@@ -860,6 +860,10 @@ class scoped_restore_current_language
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
scoped_restore_current_language ();
|
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 (scoped_restore_current_language &&other)
|
scoped_restore_current_language (scoped_restore_current_language &&other)
|
||||||
|
|||||||
@@ -2130,10 +2130,7 @@ mi_cmd_execute (struct mi_parse *parse)
|
|||||||
|
|
||||||
std::optional<scoped_restore_current_language> lang_saver;
|
std::optional<scoped_restore_current_language> lang_saver;
|
||||||
if (parse->language != language_unknown)
|
if (parse->language != language_unknown)
|
||||||
{
|
lang_saver.emplace (parse->language);
|
||||||
lang_saver.emplace ();
|
|
||||||
set_language (parse->language);
|
|
||||||
}
|
|
||||||
|
|
||||||
current_context = parse;
|
current_context = parse;
|
||||||
|
|
||||||
|
|||||||
@@ -423,8 +423,7 @@ parse_exp_in_context (const char **stringptr, CORE_ADDR pc,
|
|||||||
expression_context_pc, flags, *stringptr,
|
expression_context_pc, flags, *stringptr,
|
||||||
completer != nullptr, tracker);
|
completer != nullptr, tracker);
|
||||||
|
|
||||||
scoped_restore_current_language lang_saver;
|
scoped_restore_current_language lang_saver (lang->la_language);
|
||||||
set_language (lang->la_language);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -490,10 +489,7 @@ parse_expression_with_language (const char *string, enum language lang)
|
|||||||
{
|
{
|
||||||
std::optional<scoped_restore_current_language> lang_saver;
|
std::optional<scoped_restore_current_language> lang_saver;
|
||||||
if (current_language->la_language != lang)
|
if (current_language->la_language != lang)
|
||||||
{
|
lang_saver.emplace (lang);
|
||||||
lang_saver.emplace ();
|
|
||||||
set_language (lang);
|
|
||||||
}
|
|
||||||
|
|
||||||
return parse_expression (string);
|
return parse_expression (string);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -366,8 +366,7 @@ dump_symtab (struct symtab *symtab, struct ui_file *outfile)
|
|||||||
But use only real languages, not placeholders. */
|
But use only real languages, not placeholders. */
|
||||||
if (symtab->language () != language_unknown)
|
if (symtab->language () != language_unknown)
|
||||||
{
|
{
|
||||||
scoped_restore_current_language save_lang;
|
scoped_restore_current_language save_lang (symtab->language ());
|
||||||
set_language (symtab->language ());
|
|
||||||
dump_symtab_1 (symtab, outfile);
|
dump_symtab_1 (symtab, outfile);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user