diff options
Diffstat (limited to 'cpp/include/IceUtil/Unicode.h')
-rw-r--r-- | cpp/include/IceUtil/Unicode.h | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/cpp/include/IceUtil/Unicode.h b/cpp/include/IceUtil/Unicode.h index 0846381ddb6..366e673b220 100644 --- a/cpp/include/IceUtil/Unicode.h +++ b/cpp/include/IceUtil/Unicode.h @@ -23,33 +23,56 @@ namespace IceUtil // Since wstring is a typedef basic_string<wchar_t>, its type is also // different depending on whether /Zc:wchar_t is used or not. // -// Ice is always built without /Zc:wchar_t, but provides wstringToString() +// With Visual C++ 7.x, the default is typedef; with Visual C++ 8.0, +// the default is native type. +// +// Ice is always built with the default, but provides wstringToString() // and stringToWstring() implementations for both flavors of wstring. // # if defined(_NATIVE_WCHAR_T_DEFINED) -// -// We're using Ice with /Zc:wchar_t -// ICE_UTIL_API std::string wstringToString(const std::wstring&); -ICE_UTIL_API std::wstring stringToNativeWstring(const std::string&); +# if _MSC_VER >= 1400 +// +// Building or using with VC8 +// +ICE_UTIL_API std::wstring stringToWstring(const std::string&); +ICE_UTIL_API std::string wstringToString(const std::basic_string<unsigned short>&); +ICE_UTIL_API std::basic_string<unsigned short> stringToTypedefWstring(const std::string&); +# else +// +// Using a VC7.x build with the non-default /Zc +// +ICE_UTIL_API std::wstring stringToNativeWstring(const std::string&); inline std::wstring stringToWstring(const std::string& str) { return stringToNativeWstring(str); } +# endif # else +ICE_UTIL_API std::string wstringToString(const std::wstring&); + +# if _MSC_VER < 1400 // -// We're building Ice or using it without /Zc:wchar_t +// Building or using with VC7.x // -ICE_UTIL_API std::string wstringToString(const std::wstring&); ICE_UTIL_API std::wstring stringToWstring(const std::string&); - ICE_UTIL_API std::string wstringToString(const std::basic_string<__wchar_t>&); ICE_UTIL_API std::basic_string<__wchar_t> stringToNativeWstring(const std::string&); - +# else +// +// Using a VC8.x build the non-default /Zc +// +ICE_UTIL_API std::wstring stringToTypedefWstring(const std::string&); +inline std::wstring +stringToWstring(const std::string& str) +{ + return stringToTypedefWstring(str); +} +# endif # endif #else |