annotate DEPENDENCIES/generic/include/boost/program_options/detail/convert.hpp @ 133:4acb5d8d80b6 tip

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