108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 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
 |