[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/2php/cefpython/cefpython31/cefpython/string_utils_win.pyx [Back]  [Original]

# Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
# License: New BSD License.
# Website: http://code.google.com/p/cefpython/

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] = 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 = 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] = 0;

    cdef py_string pyString = CharToPyString(charString)
    free(charString)
    return pyString

Web Proxy Viewer  |  New URL  |  Original Page