diff options
author | avi@google.com <avi@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-18 21:11:36 +0000 |
---|---|---|
committer | avi@google.com <avi@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-18 21:11:36 +0000 |
commit | 57978b2e692371f66c2887089315cac8a44493bb (patch) | |
tree | 6f6e349ef97739f1a9fd2873e625434fc94ce6c8 /webkit/glue/glue_util.cc | |
parent | 54c2e1f9f389f089afcf0e12e5a2a0d5d6e7e509 (diff) | |
download | chromium_src-57978b2e692371f66c2887089315cac8a44493bb.zip chromium_src-57978b2e692371f66c2887089315cac8a44493bb.tar.gz chromium_src-57978b2e692371f66c2887089315cac8a44493bb.tar.bz2 |
Rev string conversions to work in UTF-32 land.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/glue_util.cc')
-rw-r--r-- | webkit/glue/glue_util.cc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/webkit/glue/glue_util.cc b/webkit/glue/glue_util.cc index b2eebb3..7893dd2 100644 --- a/webkit/glue/glue_util.cc +++ b/webkit/glue/glue_util.cc @@ -56,11 +56,27 @@ WebCore::CString StdStringToCString(const std::string& str) { std::wstring StringToStdWString(const WebCore::String& str) { const UChar* chars = str.characters(); +#if defined(WCHAR_T_IS_UTF16) return std::wstring(chars ? chars : L"", str.length()); +#elif defined(WCHAR_T_IS_UTF32) + std::string16 str16(chars ? chars : reinterpret_cast<const char16 *>(L""), + str.length()); + return UTF16ToWide(str16); +#endif +} + +std::string16 StringToStdString16(const WebCore::String& str) { + const UChar* chars = str.characters(); + return std::string16(chars ? chars : (UChar *)L"", str.length()); } WebCore::String StdWStringToString(const std::wstring& str) { +#if defined(WCHAR_T_IS_UTF16) return WebCore::String(str.data(), static_cast<unsigned>(str.length())); +#elif defined(WCHAR_T_IS_UTF32) + std::string16 str16 = WideToUTF16(str); + return WebCore::String(str16.data(), static_cast<unsigned>(str16.length())); +#endif } WebCore::String StdStringToString(const std::string& str) { @@ -69,15 +85,28 @@ WebCore::String StdStringToString(const std::string& str) { WebCore::DeprecatedString StdWStringToDeprecatedString( const std::wstring& str) { +#if defined(WCHAR_T_IS_UTF16) return WebCore::DeprecatedString( reinterpret_cast<const WebCore::DeprecatedChar*>(str.c_str()), static_cast<int>(str.size())); +#elif defined(WCHAR_T_IS_UTF32) + std::string16 str16 = WideToUTF16(str); + return WebCore::DeprecatedString( + reinterpret_cast<const WebCore::DeprecatedChar*>(str16.c_str()), + static_cast<int>(str16.size())); +#endif } std::wstring DeprecatedStringToStdWString( const WebCore::DeprecatedString& dep) { +#if defined(WCHAR_T_IS_UTF16) return std::wstring(reinterpret_cast<const wchar_t*>(dep.unicode()), - dep.length()); + dep.length()); +#elif defined(WCHAR_T_IS_UTF32) + std::string16 str16(reinterpret_cast<const char16*>(dep.unicode()), + dep.length()); + return UTF16ToWide(str16); +#endif } // URL conversions ------------------------------------------------------------- @@ -89,6 +118,7 @@ GURL KURLToGURL(const WebCore::KURL& url) { return GURL(); return GURL(spec.data(), spec.length(), url.parsed(), url.isValid()); #else + const WebCore::DeprecatedString& spec = url.deprecatedString(); return GURL(WideToUTF8(DeprecatedStringToStdWString(spec))); #endif } |