// @pymethod <o PyUnicode>|pywintypes|Unicode|Creates a new Unicode object PYWINTYPES_EXPORT PyObject *PyWin_NewUnicode(PyObject *self, PyObject *args) { char *string; int slen; if (!PyArg_ParseTuple(args, "t#", &string, &slen)) return NULL; return PyUnicode_DecodeMBCS(string, slen, NULL); }
PyObject *PyWinCoreString_FromString(const char *str, Py_ssize_t len /*=(Py_ssize_t)-1*/) { if (len==(Py_ssize_t)-1) len = strlen(str); #if (PY_VERSION_HEX < 0x03000000) return PyString_FromStringAndSize(str, len); #else return PyUnicode_DecodeMBCS(str, len, "ignore"); #endif }
// non-unicode version of PyWinObject_FromTCHAR; returned object depends on // if we are running py3k or not. PyObject *PyWinObject_FromTCHAR(const char *str, Py_ssize_t len /*=(Py_ssize_t)-1*/) { if (str==NULL) { Py_INCREF(Py_None); return Py_None; } if (len==(Py_ssize_t)-1) len = strlen(str); #if (PY_VERSION_HEX < 0x03000000) return PyString_FromStringAndSize(str, len); #else // py3k - decode char * via mbcs encoding. return (PyObject *)PyUnicode_DecodeMBCS(str, len, NULL); #endif }
PyObject *PyWinObject_FromMAPIStr(LPTSTR str, BOOL isUnicode) { if (str == NULL) { Py_INCREF(Py_None); return Py_None; } if (isUnicode) { return PyUnicode_FromWideChar((LPCWSTR)str, wcslen((LPCWSTR)str)); } else { #if PY_MAJOR_VERSION >= 3 return (PyObject *)PyUnicode_DecodeMBCS((LPSTR)str, strlen((LPSTR)str), NULL); #else return PyString_FromString((LPSTR)str); #endif } }