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
3 // found in the LICENSE file.
5 #include "base/sys_string_conversions.h"
9 #include "base/string_piece.h"
13 // Do not assert in this function since it is used by the asssertion code!
14 std::string
SysWideToUTF8(const std::wstring
& wide
) {
15 return SysWideToMultiByte(wide
, CP_UTF8
);
18 // Do not assert in this function since it is used by the asssertion code!
19 std::wstring
SysUTF8ToWide(const StringPiece
& utf8
) {
20 return SysMultiByteToWide(utf8
, CP_UTF8
);
23 std::string
SysWideToNativeMB(const std::wstring
& wide
) {
24 return SysWideToMultiByte(wide
, CP_ACP
);
27 std::wstring
SysNativeMBToWide(const StringPiece
& native_mb
) {
28 return SysMultiByteToWide(native_mb
, CP_ACP
);
31 // Do not assert in this function since it is used by the asssertion code!
32 std::wstring
SysMultiByteToWide(const StringPiece
& mb
, uint32 code_page
) {
34 return std::wstring();
36 int mb_length
= static_cast<int>(mb
.length());
37 // Compute the length of the buffer.
38 int charcount
= MultiByteToWideChar(code_page
, 0,
39 mb
.data(), mb_length
, NULL
, 0);
41 return std::wstring();
44 wide
.resize(charcount
);
45 MultiByteToWideChar(code_page
, 0, mb
.data(), mb_length
, &wide
[0], charcount
);
50 // Do not assert in this function since it is used by the asssertion code!
51 std::string
SysWideToMultiByte(const std::wstring
& wide
, uint32 code_page
) {
52 int wide_length
= static_cast<int>(wide
.length());
56 // Compute the length of the buffer we'll need.
57 int charcount
= WideCharToMultiByte(code_page
, 0, wide
.data(), wide_length
,
64 WideCharToMultiByte(code_page
, 0, wide
.data(), wide_length
,
65 &mb
[0], charcount
, NULL
, NULL
);