| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/sys_string_conversions.h" | 5 #include "base/sys_string_conversions.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 in_length * | 108 in_length * |
| 109 sizeof(typename StringType::value_type), | 109 sizeof(typename StringType::value_type), |
| 110 in_encoding, | 110 in_encoding, |
| 111 false); | 111 false); |
| 112 } | 112 } |
| 113 | 113 |
| 114 // Specify the byte ordering explicitly, otherwise CFString will be confused | 114 // Specify the byte ordering explicitly, otherwise CFString will be confused |
| 115 // when strings don't carry BOMs, as they typically won't. | 115 // when strings don't carry BOMs, as they typically won't. |
| 116 static const CFStringEncoding kNarrowStringEncoding = kCFStringEncodingUTF8; | 116 static const CFStringEncoding kNarrowStringEncoding = kCFStringEncodingUTF8; |
| 117 #ifdef __BIG_ENDIAN__ | 117 #ifdef __BIG_ENDIAN__ |
| 118 #if defined(WCHAR_T_IS_UTF16) | 118 static const CFStringEncoding kMediumStringEncoding = kCFStringEncodingUTF16BE; |
| 119 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF16BE; | |
| 120 #elif defined(WCHAR_T_IS_UTF32) | |
| 121 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF32BE; | 119 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF32BE; |
| 122 #endif // WCHAR_T_IS_UTF32 | |
| 123 #elif defined(__LITTLE_ENDIAN__) | 120 #elif defined(__LITTLE_ENDIAN__) |
| 124 #if defined(WCHAR_T_IS_UTF16) | 121 static const CFStringEncoding kMediumStringEncoding = kCFStringEncodingUTF16LE; |
| 125 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF16LE; | |
| 126 #elif defined(WCHAR_T_IS_UTF32) | |
| 127 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF32LE; | 122 static const CFStringEncoding kWideStringEncoding = kCFStringEncodingUTF32LE; |
| 128 #endif // WCHAR_T_IS_UTF32 | |
| 129 #endif // __LITTLE_ENDIAN__ | 123 #endif // __LITTLE_ENDIAN__ |
| 130 | 124 |
| 131 } // namespace | 125 } // namespace |
| 132 | 126 |
| 133 // Do not assert in this function since it is used by the asssertion code! | 127 // Do not assert in this function since it is used by the asssertion code! |
| 134 std::string SysWideToUTF8(const std::wstring& wide) { | 128 std::string SysWideToUTF8(const std::wstring& wide) { |
| 135 return STLStringToSTLStringWithEncodingsT<std::wstring, std::string>( | 129 return STLStringToSTLStringWithEncodingsT<std::wstring, std::string>( |
| 136 wide, kWideStringEncoding, kNarrowStringEncoding); | 130 wide, kWideStringEncoding, kNarrowStringEncoding); |
| 137 } | 131 } |
| 138 | 132 |
| 139 // Do not assert in this function since it is used by the asssertion code! | 133 // Do not assert in this function since it is used by the asssertion code! |
| 140 std::wstring SysUTF8ToWide(const StringPiece& utf8) { | 134 std::wstring SysUTF8ToWide(const StringPiece& utf8) { |
| 141 return STLStringToSTLStringWithEncodingsT<StringPiece, std::wstring>( | 135 return STLStringToSTLStringWithEncodingsT<StringPiece, std::wstring>( |
| 142 utf8, kNarrowStringEncoding, kWideStringEncoding); | 136 utf8, kNarrowStringEncoding, kWideStringEncoding); |
| 143 } | 137 } |
| 144 | 138 |
| 145 std::string SysWideToNativeMB(const std::wstring& wide) { | 139 std::string SysWideToNativeMB(const std::wstring& wide) { |
| 146 return SysWideToUTF8(wide); | 140 return SysWideToUTF8(wide); |
| 147 } | 141 } |
| 148 | 142 |
| 149 std::wstring SysNativeMBToWide(const StringPiece& native_mb) { | 143 std::wstring SysNativeMBToWide(const StringPiece& native_mb) { |
| 150 return SysUTF8ToWide(native_mb); | 144 return SysUTF8ToWide(native_mb); |
| 151 } | 145 } |
| 152 | 146 |
| 153 CFStringRef SysUTF8ToCFStringRef(const std::string& utf8) { | 147 CFStringRef SysUTF8ToCFStringRef(const std::string& utf8) { |
| 154 return STLStringToCFStringWithEncodingsT(utf8, kNarrowStringEncoding); | 148 return STLStringToCFStringWithEncodingsT(utf8, kNarrowStringEncoding); |
| 155 } | 149 } |
| 156 | 150 |
| 151 CFStringRef SysUTF16ToCFStringRef(const string16& utf16) { |
| 152 return STLStringToCFStringWithEncodingsT(utf16, kMediumStringEncoding); |
| 153 } |
| 154 |
| 157 CFStringRef SysWideToCFStringRef(const std::wstring& wide) { | 155 CFStringRef SysWideToCFStringRef(const std::wstring& wide) { |
| 158 return STLStringToCFStringWithEncodingsT(wide, kWideStringEncoding); | 156 return STLStringToCFStringWithEncodingsT(wide, kWideStringEncoding); |
| 159 } | 157 } |
| 160 | 158 |
| 161 NSString* SysUTF8ToNSString(const std::string& utf8) { | 159 NSString* SysUTF8ToNSString(const std::string& utf8) { |
| 162 return CFTypeRefToNSObjectAutorelease(SysUTF8ToCFStringRef(utf8)); | 160 return CFTypeRefToNSObjectAutorelease(SysUTF8ToCFStringRef(utf8)); |
| 163 } | 161 } |
| 164 | 162 |
| 163 NSString* SysUTF16ToNSString(const string16& utf16) { |
| 164 return CFTypeRefToNSObjectAutorelease(SysUTF16ToCFStringRef(utf16)); |
| 165 } |
| 166 |
| 165 NSString* SysWideToNSString(const std::wstring& wide) { | 167 NSString* SysWideToNSString(const std::wstring& wide) { |
| 166 return CFTypeRefToNSObjectAutorelease(SysWideToCFStringRef(wide)); | 168 return CFTypeRefToNSObjectAutorelease(SysWideToCFStringRef(wide)); |
| 167 } | 169 } |
| 168 | 170 |
| 169 std::string SysCFStringRefToUTF8(CFStringRef ref) { | 171 std::string SysCFStringRefToUTF8(CFStringRef ref) { |
| 170 return CFStringToSTLStringWithEncodingT<std::string>(ref, | 172 return CFStringToSTLStringWithEncodingT<std::string>(ref, |
| 171 kNarrowStringEncoding); | 173 kNarrowStringEncoding); |
| 172 } | 174 } |
| 173 | 175 |
| 176 string16 SysCFStringRefToUTF16(CFStringRef ref) { |
| 177 return CFStringToSTLStringWithEncodingT<string16>(ref, |
| 178 kMediumStringEncoding); |
| 179 } |
| 180 |
| 174 std::wstring SysCFStringRefToWide(CFStringRef ref) { | 181 std::wstring SysCFStringRefToWide(CFStringRef ref) { |
| 175 return CFStringToSTLStringWithEncodingT<std::wstring>(ref, | 182 return CFStringToSTLStringWithEncodingT<std::wstring>(ref, |
| 176 kWideStringEncoding); | 183 kWideStringEncoding); |
| 177 } | 184 } |
| 178 | 185 |
| 179 std::string SysNSStringToUTF8(NSString* nsstring) { | 186 std::string SysNSStringToUTF8(NSString* nsstring) { |
| 180 return SysCFStringRefToUTF8(reinterpret_cast<CFStringRef>(nsstring)); | 187 return SysCFStringRefToUTF8(reinterpret_cast<CFStringRef>(nsstring)); |
| 181 } | 188 } |
| 182 | 189 |
| 190 string16 SysNSStringToUTF16(NSString* nsstring) { |
| 191 return SysCFStringRefToUTF16(reinterpret_cast<CFStringRef>(nsstring)); |
| 192 } |
| 193 |
| 183 std::wstring SysNSStringToWide(NSString* nsstring) { | 194 std::wstring SysNSStringToWide(NSString* nsstring) { |
| 184 return SysCFStringRefToWide(reinterpret_cast<CFStringRef>(nsstring)); | 195 return SysCFStringRefToWide(reinterpret_cast<CFStringRef>(nsstring)); |
| 185 } | 196 } |
| 186 | 197 |
| 187 } // namespace base | 198 } // namespace base |
| OLD | NEW |