+string const & openPolyglossiaLang(OutputState const * state)
+{
+ // Return a reference to the last active language opened with
+ // polyglossia. If none or when using babel, return a reference
+ // to an empty string.
+
+ static string const empty;
+
+ return state->open_polyglossia_lang_.empty()
+ ? empty
+ : state->open_polyglossia_lang_.top();
+}
+
+
+bool atSameLastLangSwitchDepth(OutputState const * state)
+{
+ // Return true if the actual nest level is the same at which the
+ // language was switched when using polyglossia. Instead, return
+ // always true when using babel.
+
+ return state->lang_switch_depth_.size() == 0
+ ? true
+ : abs(state->lang_switch_depth_.top()) == state->nest_level_;
+}
+
+
+bool isLocalSwitch(OutputState const * state)
+{
+ // Return true if the language was opened by the \text<lang> command.
+
+ return state->lang_switch_depth_.size()
+ && state->lang_switch_depth_.top() < 0;
+}
+
+
+bool langOpenedAtThisLevel(OutputState const * state)
+{
+ // Return true if the language was opened at the current nesting level.
+
+ return state->lang_switch_depth_.size()
+ && abs(state->lang_switch_depth_.top()) == state->nest_level_;
+}
+
+