本文整理汇总了C++中PyUnicode_AsWideCharString函数的典型用法代码示例。如果您正苦于以下问题:C++ PyUnicode_AsWideCharString函数的具体用法?C++ PyUnicode_AsWideCharString怎么用?C++ PyUnicode_AsWideCharString使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PyUnicode_AsWideCharString函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
开发者ID:1564143452,项目名称:kbengine,代码行数:36,代码来源:fixeddict.cpp
示例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);
}
开发者ID:adalisan,项目名称:rainmeter-python,代码行数:16,代码来源:PyRainmeter.cpp
示例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;
}
开发者ID:249198000,项目名称:kbengine,代码行数:48,代码来源:clientapp.cpp
示例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);
}
开发者ID:Weooh,项目名称:kbengine,代码行数:10,代码来源:entity_component.cpp
示例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);
}
开发者ID:1564143452,项目名称:kbengine,代码行数:55,代码来源:client_entity.cpp
示例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
}
开发者ID:pombredanne,项目名称:cpython,代码行数:54,代码来源:cfield.c
示例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;
};
}
开发者ID:CoolJie2001,项目名称:kbengine,代码行数:53,代码来源:space_avatarselect.cpp
示例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];
}
开发者ID:lmb0989,项目名称:kbengine,代码行数:14,代码来源:data_download.cpp
示例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;
}
}
开发者ID:mario007,项目名称:renmas,代码行数:38,代码来源:main.cpp
示例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;
}
开发者ID:Naddiseo,项目名称:cpython,代码行数:23,代码来源:_localemodule.c
示例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;
}
开发者ID:aabbox,项目名称:kbengine,代码行数:17,代码来源:scriptstdout.cpp
示例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);
}
开发者ID:ArcherPeng,项目名称:kbengine-cocos2dx,代码行数:18,代码来源:all_clients.cpp
示例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;
}
开发者ID:aabbox,项目名称:kbengine,代码行数:46,代码来源:fixeddict.cpp
示例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;
}
开发者ID:10sr,项目名称:cpython,代码行数:42,代码来源:_localemodule.c
示例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;
}
开发者ID:Myrninvollo,项目名称:kbengine,代码行数:42,代码来源:clientapp.cpp
示例16: Z_set
static PyObject *
Z_set(void *ptr, PyObject *value, Py_ssize_t size)
{
PyObject *keep;
wchar_t *buffer;
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;
}
/* We must create a wchar_t* buffer from the unicode object,
and keep it alive */
buffer = PyUnicode_AsWideCharString(value, NULL);
if (!buffer)
return NULL;
keep = PyCapsule_New(buffer, CTYPES_CFIELD_CAPSULE_NAME_PYMEM, pymem_destructor);
if (!keep) {
PyMem_Free(buffer);
return NULL;
}
*(wchar_t **)ptr = buffer;
return keep;
}
开发者ID:1564143452,项目名称:kbengine,代码行数:40,代码来源:cfield.c
示例17: delWatcher
//-------------------------------------------------------------------------------------
static PyObject* delWatcher(PyObject* self, PyObject* args)
{
if(PyTuple_Size(args) != 1)
{
PyErr_Format(PyExc_Exception, "KBEngine::delWatcher: watcherName is error!\n");
PyErr_PrintEx(0);
return NULL;
}
PyObject* pyName = NULL;
if(PyArg_ParseTuple(args, "O", &pyName) == -1)
{
PyErr_Format(PyExc_Exception, "KBEngine::delWatcher: watcherName is error!\n");
PyErr_PrintEx(0);
return NULL;
}
if(!PyUnicode_Check(pyName))
{
PyErr_Format(PyExc_Exception, "KBEngine::delWatcher: watcherName is error!\n");
PyErr_PrintEx(0);
return NULL;
}
wchar_t* wstr = PyUnicode_AsWideCharString(pyName, NULL);
char* pwatchername = strutil::wchar2char(wstr);
PyMem_Free(wstr);
bool ret = _delWatcher(pwatchername);
free(pwatchername);
if(!ret)
{
Py_RETURN_FALSE;
}
Py_RETURN_TRUE;
}
开发者ID:Orav,项目名称:kbengine,代码行数:40,代码来源:pywatcher.cpp
示例18: time_strftime
static PyObject *
time_strftime(PyObject *self, PyObject *args)
{
PyObject *tup = NULL;
struct tm buf;
const time_char *fmt;
#ifdef HAVE_WCSFTIME
wchar_t *format;
#else
PyObject *format;
#endif
PyObject *format_arg;
size_t fmtlen, buflen;
time_char *outbuf = NULL;
size_t i;
PyObject *ret = NULL;
memset((void *) &buf, '\0', sizeof(buf));
/* Will always expect a unicode string to be passed as format.
Given that there's no str type anymore in py3k this seems safe.
*/
if (!PyArg_ParseTuple(args, "U|O:strftime", &format_arg, &tup))
return NULL;
if (tup == NULL) {
time_t tt = time(NULL);
if (pylocaltime(&tt, &buf) == -1)
return NULL;
}
else if (!gettmarg(tup, &buf) || !checktm(&buf))
return NULL;
#if defined(_MSC_VER) || defined(sun) || defined(_AIX)
if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {
PyErr_SetString(PyExc_ValueError,
"strftime() requires year in [1; 9999]");
return NULL;
}
#endif
/* Normalize tm_isdst just in case someone foolishly implements %Z
based on the assumption that tm_isdst falls within the range of
[-1, 1] */
if (buf.tm_isdst < -1)
buf.tm_isdst = -1;
else if (buf.tm_isdst > 1)
buf.tm_isdst = 1;
#ifdef HAVE_WCSFTIME
format = PyUnicode_AsWideCharString(format_arg, NULL);
if (format == NULL)
return NULL;
fmt = format;
#else
/* Convert the unicode string to an ascii one */
format = PyUnicode_EncodeLocale(format_arg, "surrogateescape");
if (format == NULL)
return NULL;
fmt = PyBytes_AS_STRING(format);
#endif
#if defined(MS_WINDOWS) && !defined(HAVE_WCSFTIME)
/* check that the format string contains only valid directives */
for(outbuf = strchr(fmt, '%');
outbuf != NULL;
outbuf = strchr(outbuf+2, '%'))
{
if (outbuf[1]=='#')
++outbuf; /* not documented by python, */
if (outbuf[1]=='\0' ||
!strchr("aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1]))
{
PyErr_SetString(PyExc_ValueError, "Invalid format string");
Py_DECREF(format);
return NULL;
}
if ((outbuf[1] == 'y') && buf.tm_year < 0)
{
PyErr_SetString(PyExc_ValueError,
"format %y requires year >= 1900 on Windows");
Py_DECREF(format);
return NULL;
}
}
#elif (defined(_AIX) || defined(sun)) && defined(HAVE_WCSFTIME)
for(outbuf = wcschr(fmt, '%');
outbuf != NULL;
outbuf = wcschr(outbuf+2, '%'))
{
if (outbuf[1] == L'\0')
break;
/* Issue #19634: On AIX, wcsftime("y", (1899, 1, 1, 0, 0, 0, 0, 0, 0))
returns "0/" instead of "99" */
if (outbuf[1] == L'y' && buf.tm_year < 0) {
PyErr_SetString(PyExc_ValueError,
"format %y requires year >= 1900 on AIX");
return NULL;
}
}
//.........这里部分代码省略.........
开发者ID:dougmassay,项目名称:cpython3.4.4,代码行数:101,代码来源:timemodule.c
示例19: addWatcher
//-------------------------------------------------------------------------------------
static PyObject* addWatcher(PyObject* self, PyObject* args)
{
if(PyTuple_Size(args) != 3)
{
PyErr_Format(PyExc_Exception, "KBEngine::addWatcher: args is error! "
"arg(watcherName, deftype[UINT32|STRING...], pyCallable).\n");
PyErr_PrintEx(0);
return NULL;
}
PyObject* pyName = NULL;
PyObject* pyType = NULL;
PyObject* pyObj = NULL;
if(PyArg_ParseTuple(args, "O|O|O", &pyName, &pyType, &pyObj) == -1)
{
PyErr_Format(PyExc_Exception, "KBEngine::addWatcher: args is error! "
"arg(watcherPath, deftype[UINT32|STRING...], pyCallable).\n");
PyErr_PrintEx(0);
return NULL;
}
if(!PyUnicode_Check(pyName))
{
PyErr_Format(PyExc_Exception, "KBEngine::addWatcher: args1 is error! "
"arg=watcherPath\n");
PyErr_PrintEx(0);
return NULL;
}
if(!PyUnicode_Check(pyType))
{
PyErr_Format(PyExc_Exception, "KBEngine::addWatcher: args2 is error! "
"arg=deftype[UINT32|STRING...]\n");
PyErr_PrintEx(0);
return NULL;
}
wchar_t* wstr = PyUnicode_AsWideCharString(pyName, NULL);
char* pwatchername = strutil::wchar2char(wstr);
std::string watchername = pwatchername;
PyMem_Free(wstr);
free(pwatchername);
wstr = PyUnicode_AsWideCharString(pyType, NULL);
pwatchername = strutil::wchar2char(wstr);
std::string type = pwatchername;
PyMem_Free(wstr);
free(pwatchername);
PyObject* pyObj1 = NULL;
if(!PyCallable_Check(pyObj))
{
PyErr_Format(PyExc_Exception, "Baseapp::createBase: args3 is error! "
"arg=pyCallable.\n");
PyErr_PrintEx(0);
return NULL;
}
pyObj1 = PyObject_CallFunction(pyObj, const_cast<char*>(""));
if(!pyObj1)
{
PyErr_Clear();
PyErr_Format(PyExc_Exception, "Baseapp::createBase: return is error for args3! "
"arg=pyCallable.\n");
PyErr_PrintEx(0);
return NULL;
}
Py_INCREF(pyObj);
if(strcmp("UINT8", type.c_str()) == 0)
{
_addWatcher<uint8>(pwatchername, pyObj);
}
else if(strcmp("UINT16", type.c_str()) == 0)
{
_addWatcher<uint16>(pwatchername, pyObj);
}
else if(strcmp("UINT32", type.c_str()) == 0)
{
_addWatcher<uint32>(pwatchername, pyObj);
}
else if(strcmp("UINT64", type.c_str()) == 0)
{
_addWatcher<uint64>(pwatchername, pyObj);
}
else if(strcmp("INT8", type.c_str()) == 0)
{
_addWatcher<int8>(pwatchername, pyObj);
}
else if(strcmp("INT16", type.c_str()) == 0)
{
_addWatcher<int16>(pwatchername, pyObj);
}
else if(strcmp("INT32", type.c_str()) == 0)
{
_addWatcher<int32>(pwatchername, pyObj);
//.........这里部分代码省略.........
开发者ID:Sumxx,项目名称:kbengine,代码行数:101,代码来源:pywatcher.cpp
示例20: DEBUG_OP_ATTRIBUTE
}
else
{
this->hasDB(false);
}
shouldAutoArchive_ = 0;
shouldAutoBackup_ = 0;
}
//-------------------------------------------------------------------------------------
PyObject* Base::onScriptGetAttribute(PyObject* attr)
{
DEBUG_OP_ATTRIBUTE("get", attr)
wchar_t* PyUnicode_AsWideCharStringRet0 = PyUnicode_AsWideCharString(attr, NULL);
char* ccattr = strutil::wchar2char(PyUnicode_AsWideCharStringRet0);
PyMem_Free(PyUnicode_AsWideCharStringRet0);
// 如果访问了def持久化类容器属性
// 由于没有很好的监测容器类属性内部的变化,这里使用一个折中的办法进行标脏
PropertyDescription* pPropertyDescription = const_cast<ScriptDefModule*>(pScriptModule())->findPersistentPropertyDescription(ccattr);
if(pPropertyDescription && (pPropertyDescription->getFlags() & ENTITY_BASE_DATA_FLAGS) > 0)
{
setDirty();
}
else if (strcmp(ccattr, "cellData") == 0)
{
setDirty();
}
开发者ID:ihuangx,项目名称:kbengine,代码行数:30,代码来源:base.cpp
注:本文中的PyUnicode_AsWideCharString函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论