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.
+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
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) */