forked from cztomczak/cefpython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstring_utils_win.pyx
More file actions
35 lines (28 loc) · 1.24 KB
/
string_utils_win.pyx
File metadata and controls
35 lines (28 loc) · 1.24 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
# Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
# License: New BSD License.
# Website: http://code.google.com/p/cefpython/
include "cefpython.pyx"
cdef int wchar_t_size = 2
cdef void CharToWidechar(char* charString, wchar_t* wideString, int wideSize
) except *:
cdef int copiedCharacters = MultiByteToWideChar(
CP_UTF8, 0, charString, -1, wideString, wideSize)
# MultiByteToWideChar does not include the NULL character
# when 0 bytes are written.
if wideSize > 0 and copiedCharacters == 0:
wideString[0] = <wchar_t>0
cdef py_string WidecharToPyString(
wchar_t* wcharString):
cdef int charBytes = WideCharToMultiByte(
CP_UTF8, 0, wcharString, -1, NULL, 0, NULL, NULL)
assert charBytes > 0, "WideCharToMultiByte() returned 0"
cdef char* charString = <char*>malloc(charBytes * sizeof(char))
cdef int copiedBytes = WideCharToMultiByte(
CP_UTF8, 0, wcharString, -1, charString, charBytes, NULL, NULL)
# WideCharToMultiByte does not include the NULL character
# when 0 bytes are written.
if copiedBytes == 0:
charString[0] = <char>0
cdef py_string pyString = CharToPyString(charString)
free(charString)
return pyString