summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/regex/test/regress/test_locale.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/regex/test/regress/test_locale.hpp')
-rw-r--r--src/boost/libs/regex/test/regress/test_locale.hpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/boost/libs/regex/test/regress/test_locale.hpp b/src/boost/libs/regex/test/regress/test_locale.hpp
new file mode 100644
index 00000000..dfc72d78
--- /dev/null
+++ b/src/boost/libs/regex/test/regress/test_locale.hpp
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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
+