Add class scoped_switch_to_sym_language_if_auto.

The class scoped_switch_to_sym_language_if_auto allows to switch in a scope
the current language to the language of a symbol when language mode is
set to auto.

2018-11-20  Philippe Waroquiers  <philippe.waroquiers@skynet.be>

	* language.h (scoped_switch_to_sym_language_if_auto): New class.
This commit is contained in:
Philippe Waroquiers 2018-10-28 13:51:32 +01:00
parent beddd67132
commit 9e6a1ab665
2 changed files with 39 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2018-11-20 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* language.h (scoped_switch_to_sym_language_if_auto): New class.
2018-11-20 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* symtab.c (search_symbols): Properly check absence of type regexp

View File

@ -707,4 +707,39 @@ private:
enum language m_lang;
};
/* If language_mode is language_mode_auto,
then switch current language to the language of SYM
and restore current language upon destruction.
Else do nothing. */
class scoped_switch_to_sym_language_if_auto
{
public:
explicit scoped_switch_to_sym_language_if_auto (const struct symbol *sym)
{
if (language_mode == language_mode_auto)
{
m_lang = current_language->la_language;
m_switched = true;
set_language (SYMBOL_LANGUAGE (sym));
}
else
m_switched = false;
}
~scoped_switch_to_sym_language_if_auto ()
{
if (m_switched)
set_language (m_lang);
}
DISABLE_COPY_AND_ASSIGN (scoped_switch_to_sym_language_if_auto);
private:
bool m_switched;
enum language m_lang;
};
#endif /* defined (LANGUAGE_H) */