summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/Unicode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceUtil/Unicode.cpp')
-rw-r--r--cpp/src/IceUtil/Unicode.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/cpp/src/IceUtil/Unicode.cpp b/cpp/src/IceUtil/Unicode.cpp
index 8fbe1267af5..724139f25bd 100644
--- a/cpp/src/IceUtil/Unicode.cpp
+++ b/cpp/src/IceUtil/Unicode.cpp
@@ -45,6 +45,7 @@ IceUtil::wstringToString(const wstring& str)
result += 0x80 | ((wc>>6) & 0x3f);
result += 0x80 | (wc & 0x3f);
}
+#if SIZEOF_WCHAR_T >= 4
else if(wc < 0x10FFFF)
{
result += 0xf0 | (wc>>18);
@@ -52,6 +53,7 @@ IceUtil::wstringToString(const wstring& str)
result += 0x80 | ((wc>>6) & 0x3f);
result += 0x80 | (wc & 0x3f);
}
+#endif
else
{
return result; // Error, not encodable.
@@ -159,11 +161,13 @@ IceUtil::stringToWstring(const string& str)
//
// See comments in IceUtil/Unicode.h
//
+
+# if _MSC_VER < 1400
string
IceUtil::wstringToString(const basic_string<__wchar_t>& str)
{
assert(sizeof(__wchar_t) == SIZEOF_WCHAR_T);
- return wstringToString(*reinterpret_cast<const wstring*>(&str));
+ return wstringToString(*reinterpret_cast<const wstring*>(&str));
}
basic_string<__wchar_t>
@@ -172,5 +176,20 @@ IceUtil::stringToNativeWstring(const string& str)
assert(sizeof(__wchar_t) == SIZEOF_WCHAR_T);
return reinterpret_cast<basic_string<__wchar_t>& >(stringToWstring(str));
}
+# else
+string
+IceUtil::wstringToString(const basic_string<unsigned short>& str)
+{
+ assert(sizeof(__wchar_t) == SIZEOF_WCHAR_T);
+ return wstringToString(*reinterpret_cast<const wstring*>(&str));
+}
+
+basic_string<unsigned short>
+IceUtil::stringToTypedefWstring(const string& str)
+{
+ assert(sizeof(__wchar_t) == SIZEOF_WCHAR_T);
+ return reinterpret_cast<basic_string<unsigned short>& >(stringToWstring(str));
+}
+# endif
#endif