From c83a2802182b3da5d1080425ded0700b3af27f6b Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 28 Mar 2023 20:30:01 -0600 Subject: Change current_language to be a macro This changes the 'current_language' global to be a macro that wraps a function call. This change will let a subsequent patch introduce lazy language setting. --- gdb/language.c | 16 ++++++++++++---- gdb/language.h | 7 ++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gdb/language.c b/gdb/language.c index cfd4a62..12a953e 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -79,9 +79,17 @@ enum case_sensitivity case_sensitivity = case_sensitive_on; /* The current language and language_mode (see language.h). */ -const struct language_defn *current_language = nullptr; +static const struct language_defn *global_current_language; enum language_mode language_mode = language_mode_auto; +/* See language.h. */ + +const struct language_defn * +get_current_language () +{ + return global_current_language; +} + /* The language that the user expects to be typing in (the language of main(), or the last language we notified them about, or C). */ @@ -177,9 +185,9 @@ set_language (const char *language) /* Found it! Go into manual mode, and use this language. */ language_mode = language_mode_manual; - current_language = lang; + global_current_language = lang; set_range_case (); - expected_language = current_language; + expected_language = lang; return; } @@ -364,7 +372,7 @@ set_range_case (void) void set_language (enum language lang) { - current_language = language_def (lang); + global_current_language = language_def (lang); set_range_case (); } diff --git a/gdb/language.h b/gdb/language.h index 6ee8f61..6ff6f5e 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -680,6 +680,11 @@ protected: (const lookup_name_info &lookup_name) const; }; +/* Return the current language. Normally code just uses the + 'current_language' macro. */ + +extern const struct language_defn *get_current_language (); + /* Pointer to the language_defn for our current language. This pointer always points to *some* valid struct; it can be used without checking it for validity. @@ -696,7 +701,7 @@ protected: the language of symbol files (e.g. detecting when ".c" files are C++), it should be a separate setting from the current_language. */ -extern const struct language_defn *current_language; +#define current_language (get_current_language ()) /* Pointer to the language_defn expected by the user, e.g. the language of main(), or the language we last mentioned in a message, or C. */ -- cgit v1.1