Commit a48be3e2 authored by Xianwen Chen's avatar Xianwen Chen Committed by GitHub

Merge pull request #326 from RoomieRemote/master

Fix CFStringEncoding/NSStringEncoding confusion
parents 85e0f3fb 896aacb3
...@@ -119,14 +119,14 @@ struct String { ...@@ -119,14 +119,14 @@ struct String {
}; };
template<int wcharTypeSize> template<int wcharTypeSize>
static CFStringEncoding getWCharEncoding() static NSStringEncoding getWCharEncoding()
{ {
static_assert(wcharTypeSize == 2 || wcharTypeSize == 4, "wchar_t must be represented by UTF-16 or UTF-32 encoding"); static_assert(wcharTypeSize == 2 || wcharTypeSize == 4, "wchar_t must be represented by UTF-16 or UTF-32 encoding");
return {}; // unreachable return {}; // unreachable
} }
template<> template<>
inline CFStringEncoding getWCharEncoding<2>() { inline NSStringEncoding getWCharEncoding<2>() {
// case when wchar_t is represented by utf-16 encoding // case when wchar_t is represented by utf-16 encoding
#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
return NSUTF16BigEndianStringEncoding; return NSUTF16BigEndianStringEncoding;
...@@ -136,7 +136,7 @@ inline CFStringEncoding getWCharEncoding<2>() { ...@@ -136,7 +136,7 @@ inline CFStringEncoding getWCharEncoding<2>() {
} }
template<> template<>
inline CFStringEncoding getWCharEncoding<4>() { inline NSStringEncoding getWCharEncoding<4>() {
// case when wchar_t is represented by utf-32 encoding // case when wchar_t is represented by utf-32 encoding
#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
return NSUTF32BigEndianStringEncoding; return NSUTF32BigEndianStringEncoding;
...@@ -153,7 +153,7 @@ struct WString { ...@@ -153,7 +153,7 @@ struct WString {
static CppType toCpp(ObjcType string) { static CppType toCpp(ObjcType string) {
assert(string); assert(string);
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(getWCharEncoding<sizeof(wchar_t)>()); NSStringEncoding encoding = getWCharEncoding<sizeof(wchar_t)>();
NSData* data = [string dataUsingEncoding:encoding]; NSData* data = [string dataUsingEncoding:encoding];
return std::wstring((wchar_t*)[data bytes], [data length] / sizeof (wchar_t)); return std::wstring((wchar_t*)[data bytes], [data length] / sizeof (wchar_t));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment