From e3ad2841b1c75837a901618651fed23013643e3f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 26 Apr 2017 22:41:30 -0600 Subject: Remove make_cleanup_restore_current_language This patch replaces make_cleanup_restore_current_language with an RAII class that saves the current language, and restores it when the object is destroyed. ChangeLog 2017-08-03 Tom Tromey * utils.h (make_cleanup_restore_current_language): Remove. * utils.c (do_restore_current_language) (make_cleanup_restore_current_language): Remove. * parse.c (parse_exp_in_context_1) (parse_expression_with_language): Use scoped_restore_current_language. * mi/mi-main.c (mi_cmd_execute): Use scoped_restore_current_language. * language.h (scoped_restore_current_language): New class. --- gdb/language.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'gdb/language.h') diff --git a/gdb/language.h b/gdb/language.h index f4852c1..57e48bd 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -633,4 +633,30 @@ extern const struct language_defn opencl_language_defn; extern const struct language_defn pascal_language_defn; extern const struct language_defn rust_language_defn; +/* Save the current language and restore it upon destruction. */ + +class scoped_restore_current_language +{ +public: + + explicit scoped_restore_current_language () + : m_lang (current_language->la_language) + { + } + + ~scoped_restore_current_language () + { + set_language (m_lang); + } + + scoped_restore_current_language (const scoped_restore_current_language &) + = delete; + scoped_restore_current_language &operator= + (const scoped_restore_current_language &) = delete; + +private: + + enum language m_lang; +}; + #endif /* defined (LANGUAGE_H) */ -- cgit v1.1