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