/* * * Copyright (c) 2004 * John Maddock * * Use, modification and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * */ /* * LOCATION: see http://www.boost.org for most recent version. * FILE test_locale.hpp * VERSION see * DESCRIPTION: Helper classes for testing locale-specific expressions. */ #ifndef BOOST_REGEX_REGRESS_TEST_LOCALE_HPP #define BOOST_REGEX_REGRESS_TEST_LOCALE_HPP // // defines class test_locale that handles the locale used for testing: // class test_locale { public: enum{ no_test, test_no_locale, test_with_locale }; test_locale(const char* c_name, boost::uint32_t lcid); ~test_locale(); static int c_locale_state() { return s_c_locale; } static int cpp_locale_state() { return s_cpp_locale; } static int win_locale_state() { return s_win_locale; } static const char* c_str() { return m_name.c_str(); } #ifndef BOOST_NO_STD_LOCALE static std::locale cpp_locale() { return s_cpp_locale_inst; } #endif static boost::uint32_t win_locale() { return s_win_locale_inst; } private: // the actions to take for each locale type: static int s_c_locale; static int s_cpp_locale; static int s_win_locale; // current locales: #ifndef BOOST_NO_STD_LOCALE static std::locale s_cpp_locale_inst; #endif static boost::uint32_t s_win_locale_inst; static std::string m_name; // backed up versions of the previous locales and their action state: std::string m_old_c_locale; std::string m_old_name; int m_old_c_state; #ifndef BOOST_NO_STD_LOCALE std::locale m_old_cpp_locale; #endif int m_old_cpp_state; boost::uint32_t m_old_win_locale; int m_old_win_state; }; #endif