本文整理汇总了C++中Py_CLEAR函数的典型用法代码示例。如果您正苦于以下问题:C++ Py_CLEAR函数的具体用法?C++ Py_CLEAR怎么用?C++ Py_CLEAR使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Py_CLEAR函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: GAIRequest_tp_clear
static int
GAIRequest_tp_clear(GAIRequest *self)
{
Py_CLEAR(self->callback);
return RequestType.tp_clear((PyObject *)self);
}
开发者ID:JoneXiong,项目名称:pyuv,代码行数:6,代码来源:request.c
示例2: psutil_bsd_clear
static int
psutil_bsd_clear(PyObject *m) {
Py_CLEAR(GETSTATE(m)->error);
return 0;
}
开发者ID:0-wiz-0,项目名称:psutil,代码行数:5,代码来源:_psutil_bsd.c
示例3: psyco_adapters_init
/* Initialize the default adapters map
*
* Return 0 on success, else -1 and set an exception.
*/
static int
psyco_adapters_init(PyObject *mod)
{
PyObject *call = NULL;
int rv = -1;
if (0 != microprotocols_add(&PyFloat_Type, NULL, (PyObject*)&pfloatType)) {
goto exit;
}
#if PY_MAJOR_VERSION < 3
if (0 != microprotocols_add(&PyInt_Type, NULL, (PyObject*)&pintType)) {
goto exit;
}
#endif
if (0 != microprotocols_add(&PyLong_Type, NULL, (PyObject*)&pintType)) {
goto exit;
}
if (0 != microprotocols_add(&PyBool_Type, NULL, (PyObject*)&pbooleanType)) {
goto exit;
}
/* strings */
#if PY_MAJOR_VERSION < 3
if (0 != microprotocols_add(&PyString_Type, NULL, (PyObject*)&qstringType)) {
goto exit;
}
#endif
if (0 != microprotocols_add(&PyUnicode_Type, NULL, (PyObject*)&qstringType)) {
goto exit;
}
/* binary */
#if PY_MAJOR_VERSION < 3
if (0 != microprotocols_add(&PyBuffer_Type, NULL, (PyObject*)&binaryType)) {
goto exit;
}
#else
if (0 != microprotocols_add(&PyBytes_Type, NULL, (PyObject*)&binaryType)) {
goto exit;
}
#endif
#if PY_MAJOR_VERSION >= 3 || PY_MINOR_VERSION >= 6
if (0 != microprotocols_add(&PyByteArray_Type, NULL, (PyObject*)&binaryType)) {
goto exit;
}
#endif
#if PY_MAJOR_VERSION >= 3 || PY_MINOR_VERSION >= 7
if (0 != microprotocols_add(&PyMemoryView_Type, NULL, (PyObject*)&binaryType)) {
goto exit;
}
#endif
if (0 != microprotocols_add(&PyList_Type, NULL, (PyObject*)&listType)) {
goto exit;
}
/* the module has already been initialized, so we can obtain the callable
objects directly from its dictionary :) */
if (!(call = PyMapping_GetItemString(mod, "DateFromPy"))) { goto exit; }
if (0 != microprotocols_add(PyDateTimeAPI->DateType, NULL, call)) { goto exit; }
Py_CLEAR(call);
if (!(call = PyMapping_GetItemString(mod, "TimeFromPy"))) { goto exit; }
if (0 != microprotocols_add(PyDateTimeAPI->TimeType, NULL, call)) { goto exit; }
Py_CLEAR(call);
if (!(call = PyMapping_GetItemString(mod, "TimestampFromPy"))) { goto exit; }
if (0 != microprotocols_add(PyDateTimeAPI->DateTimeType, NULL, call)) { goto exit; }
Py_CLEAR(call);
if (!(call = PyMapping_GetItemString(mod, "IntervalFromPy"))) { goto exit; }
if (0 != microprotocols_add(PyDateTimeAPI->DeltaType, NULL, call)) { goto exit; }
Py_CLEAR(call);
#ifdef HAVE_MXDATETIME
/* as above, we use the callable objects from the psycopg module */
if (NULL != (call = PyMapping_GetItemString(mod, "TimestampFromMx"))) {
if (0 != microprotocols_add(mxDateTime.DateTime_Type, NULL, call)) { goto exit; }
Py_CLEAR(call);
/* if we found the above, we have this too. */
if (!(call = PyMapping_GetItemString(mod, "TimeFromMx"))) { goto exit; }
if (0 != microprotocols_add(mxDateTime.DateTimeDelta_Type, NULL, call)) { goto exit; }
Py_CLEAR(call);
}
else {
PyErr_Clear();
}
#endif
/* Success! */
rv = 0;
exit:
Py_XDECREF(call);
//.........这里部分代码省略.........
开发者ID:olasd,项目名称:psycopg2,代码行数:101,代码来源:psycopgmodule.c
示例4: BlameIter_dealloc
static void
BlameIter_dealloc(BlameIter *self)
{
Py_CLEAR(self->blame);
PyObject_Del(self);
}
开发者ID:carlosmn,项目名称:pygit2,代码行数:6,代码来源:blame.c
示例5: PyThreadState_Clear
void
PyThreadState_Clear(PyThreadState *tstate)
{
if (Py_VerboseFlag && tstate->frame != NULL)
fprintf(stderr,
"PyThreadState_Clear: warning: thread still has a frame\n");
Py_CLEAR(tstate->frame);
Py_CLEAR(tstate->dict);
Py_CLEAR(tstate->async_exc);
Py_CLEAR(tstate->curexc_type);
Py_CLEAR(tstate->curexc_value);
Py_CLEAR(tstate->curexc_traceback);
Py_CLEAR(tstate->exc_type);
Py_CLEAR(tstate->exc_value);
Py_CLEAR(tstate->exc_traceback);
tstate->c_profilefunc = NULL;
tstate->c_tracefunc = NULL;
Py_CLEAR(tstate->c_profileobj);
Py_CLEAR(tstate->c_traceobj);
Py_CLEAR(tstate->coroutine_wrapper);
}
开发者ID:TruckHacking,项目名称:J1939Python,代码行数:27,代码来源:pystate.c
示例6: conn_poll
int
conn_poll(connectionObject *self)
{
int res = PSYCO_POLL_ERROR;
Dprintf("conn_poll: status = %d", self->status);
switch (self->status) {
case CONN_STATUS_SETUP:
Dprintf("conn_poll: status -> CONN_STATUS_CONNECTING");
self->status = CONN_STATUS_CONNECTING;
res = PSYCO_POLL_WRITE;
break;
case CONN_STATUS_CONNECTING:
res = _conn_poll_connecting(self);
if (res == PSYCO_POLL_OK && self->async) {
res = _conn_poll_setup_async(self);
}
break;
case CONN_STATUS_DATESTYLE:
res = _conn_poll_setup_async(self);
break;
case CONN_STATUS_READY:
case CONN_STATUS_BEGIN:
case CONN_STATUS_PREPARED:
res = _conn_poll_query(self);
if (res == PSYCO_POLL_OK && self->async && self->async_cursor) {
/* An async query has just finished: parse the tuple in the
* target cursor. */
cursorObject *curs;
PyObject *py_curs = PyWeakref_GetObject(self->async_cursor);
if (Py_None == py_curs) {
pq_clear_async(self);
PyErr_SetString(InterfaceError,
"the asynchronous cursor has disappeared");
res = PSYCO_POLL_ERROR;
break;
}
curs = (cursorObject *)py_curs;
IFCLEARPGRES(curs->pgres);
curs->pgres = pq_get_last_result(self);
/* fetch the tuples (if there are any) and build the result. We
* don't care if pq_fetch return 0 or 1, but if there was an error,
* we want to signal it to the caller. */
if (pq_fetch(curs) == -1) {
res = PSYCO_POLL_ERROR;
}
/* We have finished with our async_cursor */
Py_CLEAR(self->async_cursor);
}
break;
default:
Dprintf("conn_poll: in unexpected state");
res = PSYCO_POLL_ERROR;
}
return res;
}
开发者ID:AnthonyBRoberts,项目名称:eeditionautomate,代码行数:65,代码来源:connection_int.c
示例7: assert
bool QtApp::openWindow(const std::string& name) {
assert(QThread::currentThread() == qApp->thread());
PyScopedGIL gil;
PyObject* rootObj = handleModuleCommand("gui", "RootObjs.__getitem__", "(s)", name.c_str());
if(!rootObj) return false; // Python errs already handled in handleModuleCommand
PyQtGuiObject* control = NULL;
control = (PyQtGuiObject*) PyObject_GetAttrString(rootObj, "guiObj");
if(!control) {
if(PyErr_Occurred()) PyErr_Print();
Py_DECREF(rootObj);
return false;
}
if((PyObject*) control == Py_None) Py_CLEAR(control);
if(control) {
if(PyType_IsSubtype(Py_TYPE(control), &QtGuiObject_Type)) {
QtBaseWidget::ScopedRef win(control->widget);
if(win) {
win->show();
return true;
}
// continue with existing control but create new window
}
else {
printf("Qt open window: existing rootObj.guiObj is of wrong type\n");
// reset and continue with new control creation
Py_CLEAR(control);
}
}
if(!control) {
control = (PyQtGuiObject*) PyObject_CallFunction((PyObject*) &QtGuiObject_Type, NULL);
if(!control) {
if(PyErr_Occurred()) PyErr_Print();
Py_DECREF(rootObj);
return false;
}
assert(control->root == NULL);
control->root = control;
Py_XINCREF(control->root);
assert(control->subjectObject == NULL);
control->subjectObject = PyObject_GetAttrString(rootObj, "obj");
if(!control->subjectObject) {
if(PyErr_Occurred()) PyErr_Print();
Py_DECREF(rootObj);
Py_DECREF(control);
return false;
}
}
if(PyObject_SetAttrString(rootObj, "guiObj", (PyObject*) control) < 0) {
if(PyErr_Occurred()) PyErr_Print();
Py_DECREF(rootObj);
Py_DECREF(control);
return false;
}
// check subjectObject
{
PyObject* subjectObject = PyObject_GetAttrString(rootObj, "obj");
if(!subjectObject) {
if(PyErr_Occurred()) PyErr_Print();
// continue, maybe it doesn't matter
}
else {
if(subjectObject != control->subjectObject) {
printf("Qt open window: got new subject object\n");
// strange, but just overtake and continue
Py_CLEAR(control->subjectObject);
control->subjectObject = subjectObject;
subjectObject = NULL;
}
}
Py_XDECREF(subjectObject);
}
QtBaseWidget* win = new QtBaseWidget(control);
win->setAttribute(Qt::WA_DeleteOnClose);
// set title
{
PyObject* title = PyObject_GetAttrString(rootObj, "title");
std::string titleStr;
if(!title || !pyStr(title, titleStr)) {
if(PyErr_Occurred()) PyErr_Print();
win->setWindowTitle(QString::fromStdString(name));
}
else {
win->setWindowTitle(QString::fromStdString(titleStr));
}
Py_XDECREF(title);
}
Vec size = control->setupChilds();
win->setMinimumSize(size.x, size.y);
//.........这里部分代码省略.........
开发者ID:perrshp,项目名称:music-player,代码行数:101,代码来源:QtApp.cpp
示例8: tb_clear
static void
tb_clear(PyTracebackObject *tb)
{
Py_CLEAR(tb->tb_next);
Py_CLEAR(tb->tb_frame);
}
开发者ID:Alex9029,项目名称:cpython,代码行数:6,代码来源:traceback.c
示例9: show_warning
static void
show_warning(PyObject *filename, int lineno, PyObject *text, PyObject
*category, PyObject *sourceline)
{
PyObject *f_stderr;
PyObject *name;
char lineno_str[128];
_Py_IDENTIFIER(__name__);
PyOS_snprintf(lineno_str, sizeof(lineno_str), ":%d: ", lineno);
name = _PyObject_GetAttrId(category, &PyId___name__);
if (name == NULL) /* XXX Can an object lack a '__name__' attribute? */
goto error;
f_stderr = _PySys_GetObjectId(&PyId_stderr);
if (f_stderr == NULL) {
fprintf(stderr, "lost sys.stderr\n");
goto error;
}
/* Print "filename:lineno: category: text\n" */
if (PyFile_WriteObject(filename, f_stderr, Py_PRINT_RAW) < 0)
goto error;
if (PyFile_WriteString(lineno_str, f_stderr) < 0)
goto error;
if (PyFile_WriteObject(name, f_stderr, Py_PRINT_RAW) < 0)
goto error;
if (PyFile_WriteString(": ", f_stderr) < 0)
goto error;
if (PyFile_WriteObject(text, f_stderr, Py_PRINT_RAW) < 0)
goto error;
if (PyFile_WriteString("\n", f_stderr) < 0)
goto error;
Py_CLEAR(name);
/* Print " source_line\n" */
if (sourceline) {
int kind;
void *data;
Py_ssize_t i, len;
Py_UCS4 ch;
PyObject *truncated;
if (PyUnicode_READY(sourceline) < 1)
goto error;
kind = PyUnicode_KIND(sourceline);
data = PyUnicode_DATA(sourceline);
len = PyUnicode_GET_LENGTH(sourceline);
for (i=0; i<len; i++) {
ch = PyUnicode_READ(kind, data, i);
if (ch != ' ' && ch != '\t' && ch != '\014')
break;
}
truncated = PyUnicode_Substring(sourceline, i, len);
if (truncated == NULL)
goto error;
PyFile_WriteObject(sourceline, f_stderr, Py_PRINT_RAW);
Py_DECREF(truncated);
PyFile_WriteString("\n", f_stderr);
}
else {
_Py_DisplaySourceLine(f_stderr, filename, lineno, 2);
}
error:
Py_XDECREF(name);
PyErr_Clear();
}
开发者ID:TruckHacking,项目名称:J1939Python,代码行数:72,代码来源:_warnings.c
示例10: normalize_clear
static int normalize_clear(PyObject *m) {
Py_CLEAR(GETSTATE(m)->error);
return 0;
}
开发者ID:tomterragni,项目名称:libpostal,代码行数:4,代码来源:pynormalize.c
示例11: path_cleanup
void path_cleanup(struct path_arg *path)
{
Py_CLEAR(path->object);
Py_CLEAR(path->cleanup);
}
开发者ID:hhoffstaette,项目名称:btrfs-progs,代码行数:5,代码来源:module.c
示例12: SignatureIter_tp_dealloc
static void
SignatureIter_tp_dealloc (SignatureIter *self)
{
Py_CLEAR(self->bytes);
PyObject_Del(self);
}
开发者ID:lichinka,项目名称:dbus-python,代码行数:6,代码来源:signature.c
示例13: Snmp_updatereactor
static int
Snmp_updatereactor(void)
{
int maxfd = 0, block = 0, fd, result, i;
PyObject *keys, *key, *tmp;
SnmpReaderObject *reader;
fd_set fdset;
struct timeval timeout;
double to;
FD_ZERO(&fdset);
block = 1; /* This means we don't have a timeout
planned. block will be reset to 0
if we need to setup a timeout. */
snmp_select_info(&maxfd, &fdset, &timeout, &block);
for (fd = 0; fd < maxfd; fd++) {
if (FD_ISSET(fd, &fdset)) {
result = PyDict_Contains(SnmpFds, PyInt_FromLong(fd));
if (result == -1)
return -1;
if (!result) {
/* Add this fd to the reactor */
if ((reader = (SnmpReaderObject *)
PyObject_CallObject((PyObject *)&SnmpReaderType,
NULL)) == NULL)
return -1;
reader->fd = fd;
if ((key =
PyInt_FromLong(fd)) == NULL) {
Py_DECREF(reader);
return -1;
}
if (PyDict_SetItem(SnmpFds, key, (PyObject*)reader) != 0) {
Py_DECREF(reader);
Py_DECREF(key);
return -1;
}
Py_DECREF(key);
if ((tmp = PyObject_CallMethod(reactor,
"addReader", "O", (PyObject*)reader)) ==
NULL) {
Py_DECREF(reader);
return -1;
}
Py_DECREF(tmp);
Py_DECREF(reader);
}
}
}
if ((keys = PyDict_Keys(SnmpFds)) == NULL)
return -1;
for (i = 0; i < PyList_Size(keys); i++) {
if ((key = PyList_GetItem(keys, i)) == NULL) {
Py_DECREF(keys);
return -1;
}
fd = PyInt_AsLong(key);
if (PyErr_Occurred()) {
Py_DECREF(keys);
return -1;
}
if ((fd >= maxfd) || (!FD_ISSET(fd, &fdset))) {
/* Delete this fd from the reactor */
if ((reader = (SnmpReaderObject*)PyDict_GetItem(SnmpFds,
key)) == NULL) {
Py_DECREF(keys);
return -1;
}
if ((tmp = PyObject_CallMethod(reactor,
"removeReader", "O", (PyObject*)reader)) == NULL) {
Py_DECREF(keys);
return -1;
}
Py_DECREF(tmp);
if (PyDict_DelItem(SnmpFds, key) == -1) {
Py_DECREF(keys);
return -1;
}
}
}
Py_DECREF(keys);
/* Setup timeout */
if (timeoutId) {
if ((tmp = PyObject_CallMethod(timeoutId, "cancel", NULL)) == NULL) {
/* Don't really know what to do. It seems better to
* raise an exception at this point. */
Py_CLEAR(timeoutId);
return -1;
}
Py_DECREF(tmp);
Py_CLEAR(timeoutId);
}
if (!block) {
to = (double)timeout.tv_sec +
(double)timeout.tv_usec/(double)1000000;
if ((timeoutId = PyObject_CallMethod(reactor, "callLater", "dO",
to, timeoutFunction)) == NULL) {
return -1;
}
}
//.........这里部分代码省略.........
开发者ID:arielsalvo,项目名称:wiremaps,代码行数:101,代码来源:snmp.c
示例14: Snmp_handle
//.........这里部分代码省略.........
break;
case ASN_UINTEGER:
case ASN_TIMETICKS:
case ASN_GAUGE:
case ASN_COUNTER:
resultvalue = PyLong_FromUnsignedLong(
(unsigned long)*vars->val.integer);
break;
case ASN_OCTET_STR:
resultvalue = PyString_FromStringAndSize(
(char*)vars->val.string, vars->val_len);
break;
case ASN_BIT_STR:
resultvalue = PyString_FromStringAndSize(
(char*)vars->val.bitstring, vars->val_len);
break;
case ASN_OBJECT_ID:
if ((resultvalue = PyTuple_New(
vars->val_len/sizeof(oid))) == NULL)
goto fireexception;
for (i = 0; i < vars->val_len/sizeof(oid); i++) {
if ((tmp = PyLong_FromLong(
vars->val.objid[i])) == NULL)
goto fireexception;
PyTuple_SetItem(resultvalue, i, tmp);
}
if ((resultvalue = Snmp_oid2string(resultvalue)) == NULL)
goto fireexception;
break;
case ASN_IPADDRESS:
if (vars->val_len < 4) {
PyErr_Format(SnmpException, "IP address is too short (%zd < 4)",
vars->val_len);
goto fireexception;
}
resultvalue = PyString_FromFormat("%d.%d.%d.%d",
vars->val.string[0],
vars->val.string[1],
vars->val.string[2],
vars->val.string[3]);
break;
case ASN_COUNTER64:
#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
case ASN_OPAQUE_U64:
case ASN_OPAQUE_I64:
case ASN_OPAQUE_COUNTER64:
#endif /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
counter64 = ((unsigned long long)(vars->val.counter64->high) << 32) +
(unsigned long long)(vars->val.counter64->low);
resultvalue = PyLong_FromUnsignedLongLong(counter64);
break;
#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
case ASN_OPAQUE_FLOAT:
resultvalue = PyFloat_FromDouble(*vars->val.floatVal);
break;
case ASN_OPAQUE_DOUBLE:
resultvalue = PyFloat_FromDouble(*vars->val.doubleVal);
break;
#endif /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
default:
PyErr_Format(SnmpException, "unknown type returned (%d)",
vars->type);
goto fireexception;
}
if (resultvalue == NULL) goto fireexception;
/* And now, the OID */
if ((resultoid = PyTuple_New(vars->name_length)) == NULL)
goto fireexception;
for (i = 0; i < vars->name_length; i++) {
if ((tmp = PyLong_FromLong(vars->name[i])) == NULL)
goto fireexception;
PyTuple_SetItem(resultoid, i, tmp);
}
if ((resultoid = Snmp_oid2string(resultoid)) == NULL)
goto fireexception;
/* Put into dictionary */
PyDict_SetItem(results, resultoid, resultvalue);
Py_CLEAR(resultoid);
Py_CLEAR(resultvalue);
}
if ((tmp = PyObject_GetAttrString(defer, "callback")) == NULL)
goto fireexception;
Py_DECREF(PyObject_CallMethod(reactor, "callLater", "iOO", 0, tmp, results));
Py_DECREF(tmp);
Py_DECREF(results);
Py_DECREF(defer);
Py_DECREF(self);
return 1;
fireexception:
Snmp_invokeerrback(defer);
Py_XDECREF(results);
Py_XDECREF(resultvalue);
Py_XDECREF(resultoid);
Py_DECREF(defer);
Py_DECREF(self);
return 1;
}
开发者ID:arielsalvo,项目名称:wiremaps,代码行数:101,代码来源:snmp.c
示例15: _pygi_marshal_to_py_array
//.........这里部分代码省略.........
if (arg->v_pointer == NULL) {
py_obj = PyList_New (0);
} else {
int i;
gsize item_size;
PyGIMarshalToPyFunc item_to_py_marshaller;
PyGIArgCache *item_arg_cache;
py_obj = PyList_New (array_->len);
if (py_obj == NULL)
goto err;
item_arg_cache = seq_cache->item_cache;
item_to_py_marshaller = item_arg_cache->to_py_marshaller;
item_size = g_array_get_element_size (array_);
for (i = 0; i < array_->len; i++) {
GIArgument item_arg;
PyObject *py_item;
if (seq_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
} else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
gboolean is_gvariant = iface_cache->g_type == G_TYPE_VARIANT;
// FIXME: This probably doesn't work with boxed types or gvalues. See fx. _pygi_marshal_from_py_array()
switch (g_base_info_get_type (iface_cache->interface_info)) {
case GI_INFO_TYPE_STRUCT:
if (is_gvariant) {
g_assert (item_size == sizeof (gpointer));
if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
item_arg.v_pointer = g_variant_ref_sink (g_array_index (array_, gpointer, i));
else
item_arg.v_pointer = g_array_index (array_, gpointer, i);
} else if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
gpointer *_struct = g_malloc (item_size);
memcpy (_struct, array_->data + i * item_size,
item_size);
item_arg.v_pointer = _struct;
} else
item_arg.v_pointer = array_->data + i * item_size;
break;
default:
item_arg.v_pointer = g_array_index (array_, gpointer, i);
break;
}
} else {
memcpy (&item_arg, array_->data + i * item_size, item_size);
}
py_item = item_to_py_marshaller ( state,
callable_cache,
item_arg_cache,
&item_arg);
if (py_item == NULL) {
Py_CLEAR (py_obj);
if (seq_cache->array_type == GI_ARRAY_TYPE_C)
g_array_unref (array_);
goto err;
}
PyList_SET_ITEM (py_obj, i, py_item);
processed_items++;
}
}
}
if (seq_cache->array_type == GI_ARRAY_TYPE_C)
g_array_free (array_, FALSE);
return py_obj;
err:
if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
} else {
/* clean up unprocessed items */
if (seq_cache->item_cache->to_py_cleanup != NULL) {
int j;
PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
for (j = processed_items; j < array_->len; j++) {
cleanup_func (state,
seq_cache->item_cache,
g_array_index (array_, gpointer, j),
FALSE);
}
}
if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
g_array_free (array_, TRUE);
}
return NULL;
}
开发者ID:thiblahute,项目名称:pygobject,代码行数:101,代码来源:pygi-marshal-to-py.c
示例16: PyCField_clear
static int
PyCField_clear(CFieldObject *self)
{
Py_CLEAR(self->proto);
return 0;
}
开发者ID:henrywoo,项目名称:Python3.1.3-Linux,代码行数:6,代码来源:cfield.c
示例17: _pygi_marshal_to_py_ghash
PyObject *
_pygi_marshal_to_py_ghash (PyGIInvokeState *state,
PyGICallableCache *callable_cache,
PyGIArgCache *arg_cache,
GIArgument *arg)
{
GHashTable *hash_;
GHashTableIter hash_table_iter;
PyGIMarshalToPyFunc key_to_py_marshaller;
PyGIMarshalToPyFunc value_to_py_marshaller;
PyGIArgCache *key_arg_cache;
PyGIArgCache *value_arg_cache;
PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
GIArgument key_arg;
GIArgument value_arg;
PyObject *py_obj = NULL;
hash_ = arg->v_pointer;
if (hash_ == NULL) {
py_obj = Py_None;
Py_INCREF (py_obj);
return py_obj;
}
py_obj = PyDict_New ();
if (py_obj == NULL)
return NULL;
key_arg_cache = hash_cache->key_cache;
key_to_py_marshaller = key_arg_cache->to_py_marshaller;
value_arg_cache = hash_cache->value_cache;
value_to_py_marshaller = value_arg_cache->to_py_marshaller;
g_hash_table_iter_init (&hash_table_iter, hash_);
while (g_hash_table_iter_next (&hash_table_iter,
&key_arg.v_pointer,
&value_arg.v_pointer)) {
PyObject *py_key;
PyObject *py_value;
int retval;
_pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_tag);
py_key = key_to_py_marshaller ( state,
callable_cache,
key_arg_cache,
&key_arg);
if (py_key == NULL) {
Py_CLEAR (py_obj);
return NULL;
}
_pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_tag);
py_value = value_to_py_marshaller ( state,
callable_cache,
value_arg_cache,
&value_arg);
if (py_value == NULL) {
Py_CLEAR (py_obj);
Py_DECREF(py_key);
return NULL;
}
retval = PyDict_SetItem (py_obj, py_key, py_value);
Py_DECREF (py_key);
Py_DECREF (py_value);
if (retval < 0) {
Py_CLEAR (py_obj);
return NULL;
}
}
return py_obj;
}
开发者ID:thiblahute,项目名称:pygobject,代码行数:84,代码来源:pygi-marshal-to-py.c
示例18: iobase_clear
static int
iobase_clear(iobase *self)
{
Py_CLEAR(self->dict);
return 0;
}
开发者ID:Alkalit,项目名称:cpython,代码行数:6,代码来源:iobase.c
示例19: myextension_clear
static int myextension_clear(PyObject *m) {
Py_CLEAR(GETSTATE(m)->error);
return 0;
}
开发者ID:kapteyn-astro,项目名称:kapteyn,代码行数:4,代码来源:nd_image.c
示例20: BaseMathObject_clear
int BaseMathObject_clear(BaseMathObject *self)
{
Py_CLEAR(self->cb_user);
return 0;
}
开发者ID:mik0001,项目名称:Blender,代码行数:5,代码来源:mathutils.c
注:本文中的Py_CLEAR函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论