You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
107 lines
3.0 KiB
107 lines
3.0 KiB
// 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
|
|
|