]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/program_options/detail/convert.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
8b8ab268c4401350e2491b2785eeb24052649817
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / program_options / detail / convert.hpp
1 // Copyright Vladimir Prus 2004.\r
2 // Distributed under the Boost Software License, Version 1.0.\r
3 // (See accompanying file LICENSE_1_0.txt\r
4 // or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5 \r
6 #ifndef BOOST_CONVERT_HPP_VP_2004_04_28\r
7 #define BOOST_CONVERT_HPP_VP_2004_04_28\r
8 \r
9 #include <boost/program_options/config.hpp>\r
10 \r
11 #if !defined(BOOST_NO_STD_WSTRING)\r
12 \r
13 #include <boost/detail/workaround.hpp>\r
14 \r
15 #include <string>\r
16 #include <vector>\r
17 #include <locale>\r
18 // for mbstate_t\r
19 #include <cwchar>\r
20 #include <stdexcept>\r
21 \r
22 #if defined(BOOST_NO_STDC_NAMESPACE)\r
23 #include <wchar.h>\r
24 namespace std\r
25 {\r
26     using ::mbstate_t;\r
27 }    \r
28 #endif\r
29 \r
30 namespace boost {\r
31 \r
32     /** Converts from local 8 bit encoding into wchar_t string using\r
33         the specified locale facet. */\r
34     BOOST_PROGRAM_OPTIONS_DECL std::wstring \r
35     from_8_bit(const std::string& s, \r
36                const std::codecvt<wchar_t, char, std::mbstate_t>& cvt);\r
37 \r
38     /** Converts from wchar_t string into local 8 bit encoding into using\r
39         the specified locale facet. */\r
40     BOOST_PROGRAM_OPTIONS_DECL std::string \r
41     to_8_bit(const std::wstring& s, \r
42              const std::codecvt<wchar_t, char, std::mbstate_t>& cvt);\r
43 \r
44 \r
45     /** Converts 's', which is assumed to be in UTF8 encoding, into wide\r
46         string. */\r
47     BOOST_PROGRAM_OPTIONS_DECL std::wstring\r
48     from_utf8(const std::string& s);\r
49     \r
50     /** Converts wide string 's' into string in UTF8 encoding. */\r
51     BOOST_PROGRAM_OPTIONS_DECL std::string\r
52     to_utf8(const std::wstring& s);\r
53 \r
54     /** Converts wide string 's' into local 8 bit encoding determined by\r
55         the current locale. */\r
56     BOOST_PROGRAM_OPTIONS_DECL std::string\r
57     to_local_8_bit(const std::wstring& s);\r
58 \r
59     /** Converts 's', which is assumed to be in local 8 bit encoding, into wide\r
60         string. */\r
61     BOOST_PROGRAM_OPTIONS_DECL std::wstring\r
62     from_local_8_bit(const std::string& s);\r
63 \r
64     namespace program_options\r
65     {\r
66         /** Convert the input string into internal encoding used by\r
67             program_options. Presence of this function allows to avoid\r
68             specializing all methods which access input on wchar_t.\r
69         */\r
70         BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&);\r
71         /** @overload */\r
72         BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::wstring&);\r
73 \r
74         template<class T>\r
75         std::vector<std::string> to_internal(const std::vector<T>& s)\r
76         {\r
77             std::vector<std::string> result;\r
78             for (unsigned i = 0; i < s.size(); ++i)\r
79                 result.push_back(to_internal(s[i]));            \r
80             return result;\r
81         }\r
82 \r
83     }\r
84 \r
85 \r
86   \r
87 }\r
88 \r
89 #else\r
90 #include <vector>\r
91 #include <string>\r
92 namespace boost{\r
93    namespace program_options{\r
94         BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&);\r
95 \r
96         template<class T>\r
97         std::vector<std::string> to_internal(const std::vector<T>& s)\r
98         {\r
99             std::vector<std::string> result;\r
100             for (unsigned i = 0; i < s.size(); ++i)\r
101                 result.push_back(to_internal(s[i]));            \r
102             return result;\r
103         }\r
104    }\r
105 }\r
106 #endif\r
107 #endif\r