本文整理汇总了C++中PyUnicode_AsWideCharString函数的典型用法代码示例。如果您正苦于以下问题:C++ PyUnicode_AsWideCharString函数的具体用法?C++ PyUnicode_AsWideCharString怎么用?C++ PyUnicode_AsWideCharString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PyUnicode_AsWideCharString函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PyUnicode_AsWideCharString
//-------------------------------------------------------------------------------------
int FixedDict::mp_ass_subscript(PyObject* self, PyObject* key, PyObject* value)
{
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(key, NULL);
char* dictKeyName = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
FixedDict* fixedDict = static_cast<FixedDict*>(self);
if (value == NULL)
{
if(!fixedDict->checkDataChanged(dictKeyName, value, true))
{
free(dictKeyName);
return 0;
}
return PyDict_DelItem(fixedDict->pyDict_, key);
}
if(!fixedDict->checkDataChanged(dictKeyName, value))
{
free(dictKeyName);
return 0;
}
PyObject* val1 =
static_cast<FixedDictType*>(fixedDict->getDataType())->createNewItemFromObj(dictKeyName, value);
int ret = PyDict_SetItem(fixedDict->pyDict_, key, val1);
// 由于PyDict_SetItem会增加引用因此需要减
Py_DECREF(val1);
free(dictKeyName);
return ret;
}
示例2: PyArg_ParseTuple
static PyObject *Rainmeter_RmReadPath(RainmeterObject *self, PyObject *args)
{
PyObject *option, *defValue;
PyArg_ParseTuple(args, "UU", &option, &defValue);
wchar_t *optionStr = PyUnicode_AsWideCharString(option, NULL);
wchar_t *defValueStr = PyUnicode_AsWideCharString(defValue, NULL);
LPCWSTR result = RmReadPath(self->rm, optionStr, defValueStr);
PyMem_Free(defValueStr);
PyMem_Free(optionStr);
if (result == NULL)
{
Py_INCREF(Py_None);
return Py_None;
}
return PyUnicode_FromWideChar(result, -1);
}
示例3: PyErr_Format
//-------------------------------------------------------------------------------------
PyObject* ClientApp::__py_fireEvent(PyObject* self, PyObject* args)
{
if(PyTuple_Size(args) < 1)
{
PyErr_Format(PyExc_AssertionError, "ClientApp::fireEvent: arg1(eventName) not found!\n");
PyErr_PrintEx(0);
return NULL;
}
PyObject* pyname = PyTuple_GetItem(args, 0);
if(!pyname || !PyUnicode_Check(pyname))
{
PyErr_Format(PyExc_AssertionError, "ClientApp::fireEvent: arg1(eventName) not found!\n");
PyErr_PrintEx(0);
return NULL;
}
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(pyname, NULL);
char* name = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
EventData_Script eventdata;
eventdata.name = name;
free(name);
if(PyTuple_Size(args) - 1 > 0)
{
PyObject* pyitem = PyTuple_GetItem(args, 1);
PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(pyitem, NULL);
if(PyUnicode_AsWideCharStringRet0 == NULL)
{
PyErr_Format(PyExc_AssertionError, "ClientApp::fireEvent(%s): arg2 not is str!\n", eventdata.name.c_str());
PyErr_PrintEx(0);
return NULL;
}
char* datas = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
eventdata.datas = datas;
free(datas);
}
ClientApp::getSingleton().fireEvent(&eventdata);
S_Return;
}
示例4: PyUnicode_AsWideCharString
//-------------------------------------------------------------------------------------
PyObject* EntityComponent::onScriptGetAttribute(PyObject* attr)
{
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(attr, NULL);
char* ccattr = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
free(ccattr);
return ScriptObject::onScriptGetAttribute(attr);
}
示例5: PyErr_Format
//-------------------------------------------------------------------------------------
PyObject* ClientEntity::onScriptGetAttribute(PyObject* attr)
{
Entity* srcEntity = Cellapp::getSingleton().findEntity(srcEntityID_);
if(srcEntity == NULL)
{
PyErr_Format(PyExc_AssertionError, "Entity::clientEntity: srcEntityID(%d) not found!\n",
srcEntityID_);
PyErr_PrintEx(0);
return 0;
}
if(srcEntity->isDestroyed())
{
PyErr_Format(PyExc_AssertionError, "Entity::clientEntity: srcEntityID(%d) is destroyed!\n",
srcEntityID_);
PyErr_PrintEx(0);
return 0;
}
if(srcEntity->pWitness() == NULL)
{
PyErr_Format(PyExc_AssertionError, "%s::clientEntity: no client, srcEntityID(%d).\n",
srcEntity->scriptName(), srcEntity->id());
PyErr_PrintEx(0);
return 0;
}
EntityRef* pEntityRef = srcEntity->pWitness()->getAOIEntityRef(clientEntityID_);
Entity* e = (pEntityRef && ((pEntityRef->flags() & ENTITYREF_FLAG_ENTER_CLIENT_PENDING) <= 0))
? pEntityRef->pEntity() : NULL;
if(e == NULL)
{
PyErr_Format(PyExc_AssertionError, "%s::clientEntity: not found entity(%d), srcEntityID(%d).\n",
srcEntity->scriptName(), clientEntityID_, srcEntity->id());
PyErr_PrintEx(0);
return 0;
}
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(attr, NULL);
char* ccattr = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
MethodDescription* pMethodDescription = const_cast<ScriptDefModule*>(e->pScriptModule())->findClientMethodDescription(ccattr);
free(ccattr);
if(pMethodDescription != NULL)
{
return new ClientEntityMethod(pMethodDescription, srcEntityID_, clientEntityID_);
}
return ScriptObject::onScriptGetAttribute(attr);
}
示例6: Z_set
static PyObject *
Z_set(void *ptr, PyObject *value, Py_ssize_t size)
{
if (value == Py_None) {
*(wchar_t **)ptr = NULL;
Py_INCREF(value);
return value;
}
if (PyLong_Check(value) || PyLong_Check(value)) {
#if SIZEOF_VOID_P == SIZEOF_LONG_LONG
*(wchar_t **)ptr = (wchar_t *)PyLong_AsUnsignedLongLongMask(value);
#else
*(wchar_t **)ptr = (wchar_t *)PyLong_AsUnsignedLongMask(value);
#endif
Py_INCREF(Py_None);
return Py_None;
}
if (!PyUnicode_Check(value)) {
PyErr_Format(PyExc_TypeError,
"unicode string or integer address expected instead of %s instance",
value->ob_type->tp_name);
return NULL;
} else
Py_INCREF(value);
#if Py_UNICODE_SIZE == SIZEOF_WCHAR_T
/* We can copy directly. Hm, are unicode objects always NUL
terminated in Python, internally?
*/
*(wchar_t **)ptr = (wchar_t *) PyUnicode_AS_UNICODE(value);
return value;
#else
{
/* We must create a wchar_t* buffer from the unicode object,
and keep it alive */
PyObject *keep;
wchar_t *buffer;
buffer = PyUnicode_AsWideCharString(value, NULL);
if (!buffer) {
Py_DECREF(value);
return NULL;
}
keep = PyCapsule_New(buffer, CTYPES_CFIELD_CAPSULE_NAME_PYMEM, pymem_destructor);
if (!keep) {
Py_DECREF(value);
PyMem_Free(buffer);
return NULL;
}
*(wchar_t **)ptr = (wchar_t *)buffer;
Py_DECREF(value);
return keep;
}
#endif
}
示例7: switch
//-------------------------------------------------------------------------------------
void SpaceAvatarSelect::kbengine_onEvent(const KBEngine::EventData* lpEventData)
{
switch(lpEventData->id)
{
case CLIENT_EVENT_SCRIPT:
{
const KBEngine::EventData_Script* peventdata = static_cast<const KBEngine::EventData_Script*>(lpEventData);
if(peventdata->name == "update_avatars")
{
if(peventdata->argsSize > 0)
{
PyObject* pyitem = PyTuple_GetItem(peventdata->pyDatas, 0);
for(KBEngine::uint32 i=0; i<g_avatars.size(); i++)
{
mTrayMgr->destroyWidget(g_avatars[i]);
}
g_avatars.clear();
PyObject *key, *value;
Py_ssize_t pos = 0;
while (PyDict_Next(pyitem, &pos, &key, &value))
{
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(PyDict_GetItemString(value, "name"), NULL);
char* name = wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
KBEngine::DBID dbid = 0;
dbid = PyLong_AsUnsignedLongLong(key);
if (PyErr_Occurred())
{
dbid = PyLong_AsUnsignedLong(key);
}
if (PyErr_Occurred())
{
PyErr_PrintEx(0);
}
Ogre::String str = Ogre::String(name) + "_" + KBEngine::StringConv::val2str(dbid);
g_avatars.push_back(str);
mTrayMgr->createButton(OgreBites::TL_CENTER, str, str, 300);
free(name);
}
}
}
}
break;
default:
break;
};
}
示例8: DataDownload
//-------------------------------------------------------------------------------------
FileDataDownload::FileDataDownload(PyObjectPtr objptr,
const std::string & descr, int16 id):
DataDownload(objptr, descr, id)
{
wchar_t* PyUnicode_AsWideCharStringRet1 = PyUnicode_AsWideCharString(objptr.get(), NULL);
char* pDescr = strutil::wchar2char(PyUnicode_AsWideCharStringRet1);
PyMem_Free(PyUnicode_AsWideCharStringRet1);
path_ = pDescr;
free(pDescr);
stream_ = new char[65537];
}
示例9: __declspec
extern "C" __declspec(dllexport) long __cdecl ExecuteFunction(const char *name, const char *args, wchar_t **value)
{
PyObject *result = PyObject_CallMethod(iface, "exec_func", "ss", name, args);
static wchar_t *text = NULL;
if (text != NULL)
{
PyMem_Free(text);
text = NULL;
}
if (result != NULL)
{
text = PyUnicode_AsWideCharString(result, NULL);
*value = (wchar_t *) text;
Py_DECREF(result);
return 0;
}
else
{
PyObject* excType, *excValue, *excTraceback;
PyErr_Fetch(&excType, &excValue, &excTraceback);
PyErr_NormalizeException(&excType, &excValue, &excTraceback);
PyObject *mod = PyImport_ImportModule("traceback");
PyObject *list = PyObject_CallMethod(mod, "format_exception", "OOO", excType, excValue, excTraceback);
PyObject *separator = PyUnicode_FromString("\n");
PyObject *exc_info = PyUnicode_Join(separator, list);
text = PyUnicode_AsWideCharString(exc_info, NULL);
*value = (wchar_t *) text;
PyErr_Print();
return -1;
}
}
示例10: PyLocale_strcoll
static PyObject*
PyLocale_strcoll(PyObject* self, PyObject* args)
{
PyObject *os1, *os2, *result = NULL;
wchar_t *ws1 = NULL, *ws2 = NULL;
if (!PyArg_ParseTuple(args, "UU:strcoll", &os1, &os2))
return NULL;
/* Convert the unicode strings to wchar[]. */
ws1 = PyUnicode_AsWideCharString(os1, NULL);
if (ws1 == NULL)
goto done;
ws2 = PyUnicode_AsWideCharString(os2, NULL);
if (ws2 == NULL)
goto done;
/* Collate the strings. */
result = PyLong_FromLong(wcscoll(ws1, ws2));
done:
/* Deallocate everything. */
if (ws1) PyMem_FREE(ws1);
if (ws2) PyMem_FREE(ws2);
return result;
}
示例11: ERROR_MSG
//-------------------------------------------------------------------------------------
PyObject* ScriptStdOut::__py_write(PyObject* self, PyObject *args)
{
PyObject* obj = NULL;
if (!PyArg_ParseTuple(args, "O", &obj))
{
ERROR_MSG("ScriptStdOut::write: Bad args\n");
return NULL;
}
Py_ssize_t size = 0;
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(obj, &size);
static_cast<ScriptStdOut*>(self)->pScriptStdOutErr()->info_msg(PyUnicode_AsWideCharStringRet0, (uint32)size);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
S_Return;
}
示例12: PyUnicode_AsWideCharString
//-------------------------------------------------------------------------------------
PyObject* AllClients::onScriptGetAttribute(PyObject* attr)
{
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(attr, NULL);
char* ccattr = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
MethodDescription* md = const_cast<ScriptDefModule*>(scriptModule_)->findClientMethodDescription(ccattr);
if(md != NULL)
{
free(ccattr);
return new ClientsRemoteEntityMethod(md, otherClients_, id_);
}
free(ccattr);
return ScriptObject::onScriptGetAttribute(attr);
}
示例13: PyUnicode_AsWideCharString
//-------------------------------------------------------------------------------------
int FixedDict::mp_ass_subscript(PyObject* self, PyObject* key, PyObject* value)
{
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(key, NULL);
if (PyUnicode_AsWideCharStringRet0 == NULL)
{
char err[255];
kbe_snprintf(err, 255, "FixedDict::mp_ass_subscript: key not is string!\n");
PyErr_SetString(PyExc_TypeError, err);
PyErr_PrintEx(0);
return 0;
}
char* dictKeyName = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
FixedDict* fixedDict = static_cast<FixedDict*>(self);
if (value == NULL)
{
if(!fixedDict->checkDataChanged(dictKeyName, value, true))
{
free(dictKeyName);
return 0;
}
free(dictKeyName);
return PyDict_DelItem(fixedDict->pyDict_, key);
}
if(!fixedDict->checkDataChanged(dictKeyName, value))
{
free(dictKeyName);
return 0;
}
PyObject* val1 =
static_cast<FixedDictType*>(fixedDict->getDataType())->createNewItemFromObj(dictKeyName, value);
int ret = PyDict_SetItem(fixedDict->pyDict_, key, val1);
// 由于PyDict_SetItem会增加引用因此需要减
Py_DECREF(val1);
free(dictKeyName);
return ret;
}
示例14: PyLocale_strxfrm
static PyObject*
PyLocale_strxfrm(PyObject* self, PyObject* args)
{
PyObject *str;
Py_ssize_t n1;
wchar_t *s = NULL, *buf = NULL;
size_t n2;
PyObject *result = NULL;
if (!PyArg_ParseTuple(args, "U:strxfrm", &str))
return NULL;
s = PyUnicode_AsWideCharString(str, &n1);
if (s == NULL)
goto exit;
/* assume no change in size, first */
n1 = n1 + 1;
buf = PyMem_New(wchar_t, n1);
if (!buf) {
PyErr_NoMemory();
goto exit;
}
n2 = wcsxfrm(buf, s, n1);
if (n2 >= (size_t)n1) {
/* more space needed */
wchar_t * new_buf = PyMem_Realloc(buf, (n2+1)*sizeof(wchar_t));
if (!new_buf) {
PyErr_NoMemory();
goto exit;
}
buf = new_buf;
n2 = wcsxfrm(buf, s, n2+1);
}
result = PyUnicode_FromWideChar(buf, n2);
exit:
if (buf)
PyMem_Free(buf);
if (s)
PyMem_Free(s);
return result;
}
示例15: PyErr_Format
//-------------------------------------------------------------------------------------
PyObject* ClientApp::__py_fireEvent(PyObject* self, PyObject* args)
{
if(PyTuple_Size(args) < 1)
{
PyErr_Format(PyExc_AssertionError, "ClientApp::fireEvent: arg1(eventName) not found!\n");
PyErr_PrintEx(0);
return NULL;
}
PyObject* pyname = PyTuple_GetItem(args, 0);
if(!pyname || !PyUnicode_Check(pyname))
{
PyErr_Format(PyExc_AssertionError, "ClientApp::fireEvent: arg1(eventName) not found!\n");
PyErr_PrintEx(0);
return NULL;
}
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(pyname, NULL);
char* name = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
EventData_Script eventdata;
eventdata.name = name;
eventdata.argsSize = PyTuple_Size(args) - 1;
free(name);
if(eventdata.argsSize > 0)
{
eventdata.pyDatas = PyTuple_New(eventdata.argsSize + 1);
for(uint32 i=0; i<eventdata.argsSize; i++)
{
PyObject* pyitem = PyTuple_GetItem(args, i + 1);
PyTuple_SetItem(eventdata.pyDatas, i, pyitem);
Py_INCREF(pyitem);
}
}
ClientApp::getSingleton().fireEvent(&eventdata);
S_Return;
}