blob: dfc72d78fd023e938152df4714e66e9c9c8b0a17 [file] [log] [blame]
/*
*
* 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 <boost/version.hpp>
* 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