// ********************************************************************** // // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** #ifndef ICE_UTIL_UNICODE_H #define ICE_UTIL_UNICODE_H #include #include namespace IceUtilInternal { // // Convert UTF-8 byte-sequences to and from UTF-16 or UTF-32 (with native endianness) // // These are wrappers for Unicode's ConvertUTF.h/cpp. // // Convert wstring encoded with UTF-16 or UTF-32 to UTF-8. // Returns false if needs for space and true upon success. // Throws IllegalConversionException to report error // bool convertUTFWstringToUTF8(const wchar_t*& sourceStart, const wchar_t* sourceEnd, IceUtil::Byte*& targetStart, IceUtil::Byte* targetEnd); void convertUTF8ToUTFWstring(const IceUtil::Byte*& sourceStart, const IceUtil::Byte* sourceEnd, std::wstring& target); void convertUTF8ToUTF16(const std::vector&, std::vector&); void convertUTF8ToUTF32(const std::vector&, std::vector&); void convertUTF32ToUTF8(const std::vector&, std::vector&); } #endif