Menu

[0b4401]: / PythonScript / src / WcharMbcsConverter.cpp  Maximize  Restore  History

Download this file

96 lines (74 with data), 2.6 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
This file is part of Plugin Manager Plugin for Notepad++
Copyright (C)2009-2010 Dave Brotherstone <davegb@pobox.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Modified for inclusion in VS2010 project "Python Script"
*/
#include "stdafx.h"
#include "WcharMbcsConverter.h"
std::shared_ptr<wchar_t> WcharMbcsConverter::char2wchar(const char* mbStr)
{
std::shared_ptr<wchar_t> wideCharStr;
size_t len = (size_t)MultiByteToWideChar(CP_UTF8, 0, mbStr, -1, NULL, 0);
if (len > 0)
{
wideCharStr.reset(new wchar_t[len]);
MultiByteToWideChar(CP_UTF8, 0, mbStr, -1, wideCharStr.get(), (int)len);
}
else
{
wideCharStr.reset(new wchar_t[1]);
wideCharStr.get()[0] = 0;
}
return wideCharStr;
}
std::shared_ptr<char> WcharMbcsConverter::wchar2char(const wchar_t* wcStr)
{
std::shared_ptr<char> multiByteStr;
size_t len = (size_t)WideCharToMultiByte(CP_UTF8, 0, wcStr, -1, NULL, 0, NULL, NULL);
if (len > 0)
{
multiByteStr.reset(new char[len]);
WideCharToMultiByte(CP_UTF8, 0, wcStr, -1, multiByteStr.get(), (int)len, NULL, NULL);
}
else
{
multiByteStr.reset(new char[1]);
multiByteStr.get()[0] = 0;
}
return multiByteStr;
}
//static boost::std::shared_ptr<const TCHAR> char2tchar(const char* mbStr);
//static boost::std::shared_ptr<const char> tchar2char(const TCHAR* tStr);
std::shared_ptr<TCHAR> WcharMbcsConverter::char2tchar(const char* mbStr)
{
#ifdef _UNICODE
return char2wchar(mbStr);
#else
size_t len = strlen(mbStr) + 1;
std::shared_ptr<TCHAR> result(new TCHAR[len]);
strcpy_s(result.get(), len, mbStr);
return result;
#endif
}
std::shared_ptr<char> WcharMbcsConverter::tchar2char(const TCHAR* tStr)
{
#ifdef _UNICODE
return wchar2char(tStr);
#else
size_t len = _tcslen(tStr) + 1;
std::shared_ptr<TCHAR> result(new TCHAR[len]);
strcpy_s(result.get(), len, tStr);
return result;
#endif
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.