123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // 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
|