// @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);
}
Exemple #2
0
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
}
Exemple #3
0
// 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
}
Exemple #4
0
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	
	}
}