本文整理汇总了C++中Py_XDECREF函数的典型用法代码示例。如果您正苦于以下问题:C++ Py_XDECREF函数的具体用法?C++ Py_XDECREF怎么用?C++ Py_XDECREF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Py_XDECREF函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: PyCArg_dealloc
static void
PyCArg_dealloc(PyCArgObject *self)
{
Py_XDECREF(self->obj);
PyObject_Del(self);
}
开发者ID:pieper,项目名称:python,代码行数:6,代码来源:callproc.c
示例2: bpy_lib_dealloc
static void bpy_lib_dealloc(BPy_Library *self)
{
Py_XDECREF(self->dict);
Py_TYPE(self)->tp_free(self);
}
开发者ID:Ichthyostega,项目名称:blender,代码行数:5,代码来源:bpy_library_load.c
示例3: pwd_getpwall
static PyObject *
pwd_getpwall(PyObject *self)
{
PyObject *d;
struct passwd *p;
if ((d = PyList_New(0)) == NULL)
return NULL;
#if defined(PYOS_OS2) && defined(PYCC_GCC)
if ((p = getpwuid(0)) != NULL) {
#elif !defined(AMITCP) && !defined(INET225)
setpwent();
while ((p = getpwent()) != NULL) {
PyObject *v = mkpwent(p);
if (v == NULL || PyList_Append(d, v) != 0) {
Py_XDECREF(v);
Py_DECREF(d);
return NULL;
}
Py_DECREF(v);
}
return d;
#else
#ifdef AMITCP
setpwent();
#else
setpwent(1); /* INET225 wants argument XXX correct? - I.J. */
#endif
while ((p = getpwent()) != NULL) {
PyObject *v = mkpwent(p);
if (v == NULL || PyList_Append(d, v) != 0) {
Py_XDECREF(v);
Py_DECREF(d);
endpwent();
return NULL;
}
Py_DECREF(v);
}
endpwent();
return d;
#endif /* AMITCP or INET225 */
}
#endif
static PyMethodDef pwd_methods[] = {
{"getpwuid", pwd_getpwuid, METH_VARARGS, pwd_getpwuid__doc__},
{"getpwnam", pwd_getpwnam, METH_VARARGS, pwd_getpwnam__doc__},
#ifdef HAVE_GETPWENT
{"getpwall", (PyCFunction)pwd_getpwall,
METH_NOARGS, pwd_getpwall__doc__},
#endif
{NULL, NULL} /* sentinel */
};
PyMODINIT_FUNC
initpwd(void)
{
PyObject *m;
m = Py_InitModule3("pwd", pwd_methods, pwd__doc__);
PyStructSequence_InitType(&StructPwdType, &struct_pwd_type_desc);
Py_INCREF((PyObject *) &StructPwdType);
PyModule_AddObject(m, "struct_pwent", (PyObject *) &StructPwdType);
}
开发者ID:Belxjander,项目名称:Kirito,代码行数:64,代码来源:pwdmodule.c
示例4: convertTo_QList_0111QTouchDevice
static int convertTo_QList_0111QTouchDevice(PyObject *sipPy,void **sipCppPtrV,int *sipIsErr,PyObject *sipTransferObj)
{
QList<const QTouchDevice*> **sipCppPtr = reinterpret_cast<QList<const QTouchDevice*> **>(sipCppPtrV);
#line 175 "sip/QtCore/qpycore_qlist.sip"
PyObject *iter = PyObject_GetIter(sipPy);
if (!sipIsErr)
{
Py_XDECREF(iter);
return (iter
#if PY_MAJOR_VERSION < 3
&& !PyString_Check(sipPy)
#endif
&& !PyUnicode_Check(sipPy));
}
if (!iter)
{
*sipIsErr = 1;
return 0;
}
QList<const QTouchDevice *> *ql = new QList<const QTouchDevice *>;
for (SIP_SSIZE_T i = 0; ; ++i)
{
PyErr_Clear();
PyObject *itm = PyIter_Next(iter);
if (!itm)
{
if (PyErr_Occurred())
{
delete ql;
Py_DECREF(iter);
*sipIsErr = 1;
return 0;
}
break;
}
const QTouchDevice *t = reinterpret_cast<const QTouchDevice *>(
sipForceConvertToType(itm, sipType_QTouchDevice, sipTransferObj, 0,
0, sipIsErr));
if (*sipIsErr)
{
PyErr_Format(PyExc_TypeError,
"index " SIP_SSIZE_T_FORMAT " has type '%s' but 'const QTouchDevice' is expected",
i, Py_TYPE(itm)->tp_name);
Py_DECREF(itm);
delete ql;
Py_DECREF(iter);
return 0;
}
ql->append(t);
Py_DECREF(itm);
}
Py_DECREF(iter);
*sipCppPtr = ql;
return sipGetState(sipTransferObj);
#line 140 "C:\\Users\\marcus\\Downloads\\PyQt-gpl-5.4\\PyQt-gpl-5.4\\QtGui/sipQtGuiQList0111QTouchDevice.cpp"
}
开发者ID:rff255,项目名称:python-qt5,代码行数:75,代码来源:sipQtGuiQList0111QTouchDevice.cpp
示例5: connecting
/* Opens a connection to the LDAP server. Initializes LDAP structure.
If TLS is true, starts TLS session.
*/
static int
connecting(LDAPConnection *self) {
int rc = -1;
int tls_option = -1;
char *binddn = NULL;
char *pswstr = NULL;
char *mech = NULL;
char *authzid = "";
char *realm = NULL;
char *authcid = NULL;
PyObject *url = NULL;
PyObject *tls = NULL;
PyObject *tmp = NULL;
PyObject *creds = NULL;
url = PyObject_GetAttrString(self->client, "_LDAPClient__url");
if (url == NULL) return -1;
tmp = PyObject_GetAttrString(self->client, "_LDAPClient__cert_policy");
tls_option = (int)PyLong_AsLong(tmp);
Py_DECREF(tmp);
rc = _LDAP_initialization(&(self->ld), url, tls_option);
Py_DECREF(url);
if (rc != LDAP_SUCCESS) {
PyObject *ldaperror = get_error_by_code(rc);
PyErr_SetString(ldaperror, ldap_err2string(rc));
Py_DECREF(ldaperror);
return -1;
}
tls = PyObject_GetAttrString(self->client, "_LDAPClient__tls");
if (tls == NULL) return -1;
/* Start TLS, if it necessary. */
if (PyObject_IsTrue(tls)) {
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
rc = ldap_start_tls_sA(self->ld, NULL, NULL, NULL, NULL);
#else
rc = ldap_start_tls_s(self->ld, NULL, NULL);
#endif
if (rc != LDAP_SUCCESS) {
//TODO Proper errors
PyObject *ldaperror = get_error_by_code(rc);
PyErr_SetString(ldaperror, ldap_err2string(rc));
Py_DECREF(ldaperror);
Py_DECREF(tls);
return -1;
}
}
Py_DECREF(tls);
creds = PyObject_GetAttrString(self->client, "_LDAPClient__credentials");
if (creds == NULL) return -1;
tmp = PyObject_GetAttrString(self->client, "_LDAPClient__mechanism");
if (tmp == NULL) return -1;
mech = PyObject2char(tmp);
Py_XDECREF(tmp);
/* Get credential information, if it's given. */
if (PyTuple_Check(creds) && PyTuple_Size(creds) > 1) {
if (strcmp(mech, "SIMPLE") == 0) {
tmp = PyTuple_GetItem(creds, 0);
binddn = PyObject2char(tmp);
} else {
tmp = PyTuple_GetItem(creds, 0);
authcid = PyObject2char(tmp);
tmp = PyDict_GetItemString(creds, "realm");
realm = PyObject2char(tmp);
}
tmp = PyTuple_GetItem(creds, 1);
pswstr = PyObject2char(tmp);
}
if (authzid == NULL) authzid = "";
rc = _LDAP_bind_s(self->ld, mech, binddn, pswstr, authcid, realm, authzid);
free(mech);
free(binddn);
free(pswstr);
free(authcid);
free(realm);
if (strcmp(authzid, "") != 0) free(authzid);
if (rc != LDAP_SUCCESS) {
PyObject *ldaperror = get_error_by_code(rc);
PyErr_SetString(ldaperror, ldap_err2string(rc));
Py_DECREF(ldaperror);
Py_DECREF(creds);
return -1;
}
Py_DECREF(creds);
return 0;
//.........这里部分代码省略.........
开发者ID:ihrwein,项目名称:PyLDAP,代码行数:101,代码来源:ldapconnection.c
示例6: PyMangleMask_polyid_and_weight
static PyObject*
PyMangleMask_polyid_and_weight(struct PyMangleMask* self, PyObject* args)
{
int status=1;
struct Point pt;
PyObject* ra_obj=NULL;
PyObject* dec_obj=NULL;
PyObject* poly_id_obj=NULL;
PyObject* weight_obj=NULL;
double* ra_ptr=NULL;
double* dec_ptr=NULL;
double* weight_ptr=NULL;
npy_intp* poly_id_ptr=NULL;
npy_intp nra=0, ndec=0, i=0;
PyObject* tuple=NULL;
if (!PyArg_ParseTuple(args, (char*)"OO", &ra_obj, &dec_obj)) {
return NULL;
}
if (!check_ra_dec_arrays(ra_obj,dec_obj,&ra_ptr,&nra,&dec_ptr,&ndec)) {
return NULL;
}
if (!(poly_id_obj=make_intp_array(nra, "polyid", &poly_id_ptr))) {
status=0;
goto _poly_id_and_weight_cleanup;
}
if (!(weight_obj=make_double_array(nra, "weight", &weight_ptr))) {
status=0;
goto _poly_id_and_weight_cleanup;
}
for (i=0; i<nra; i++) {
point_set_from_radec(&pt, *ra_ptr, *dec_ptr);
if (self->pixelres == -1) {
status=polyid_and_weight(self, &pt, poly_id_ptr, weight_ptr);
} else {
status=polyid_and_weight_pixelized(self, &pt, poly_id_ptr, weight_ptr);
}
if (status != 1) {
goto _poly_id_and_weight_cleanup;
}
ra_ptr++;
dec_ptr++;
poly_id_ptr++;
weight_ptr++;
}
_poly_id_and_weight_cleanup:
if (status != 1) {
Py_XDECREF(poly_id_obj);
Py_XDECREF(weight_obj);
Py_XDECREF(tuple);
return NULL;
}
tuple=PyTuple_New(2);
PyTuple_SetItem(tuple, 0, poly_id_obj);
PyTuple_SetItem(tuple, 1, weight_obj);
return tuple;
}
开发者ID:esheldon,项目名称:misc,代码行数:65,代码来源:_mangle.c
示例7: PyMangleMask_genrand
static PyObject*
PyMangleMask_genrand(struct PyMangleMask* self, PyObject* args)
{
int status=1;
PY_LONG_LONG nrand=0;
struct Point pt;
PyObject* ra_obj=NULL;
PyObject* dec_obj=NULL;
PyObject* tuple=NULL;
double* ra_ptr=NULL;
double* dec_ptr=NULL;
double weight=0;
npy_intp poly_id=0;
npy_intp ngood=0;
double theta=0, phi=0;
if (!PyArg_ParseTuple(args, (char*)"L", &nrand)) {
return NULL;
}
if (nrand <= 0) {
PyErr_Format(PyExc_ValueError,
"nrand should be > 0, got (%ld)",(npy_intp)nrand);
status=0;
goto _genrand_cleanup;
}
if (!(ra_obj=make_double_array(nrand, "ra", &ra_ptr))) {
status=0;
goto _genrand_cleanup;
}
if (!(dec_obj=make_double_array(nrand, "dec", &dec_ptr))) {
status=0;
goto _genrand_cleanup;
}
seed_random();
while (ngood < nrand) {
genrand_theta_phi_allsky(&theta, &phi);
point_set_from_thetaphi(&pt, theta, phi);
if (self->pixelres == -1) {
status=polyid_and_weight(self, &pt, &poly_id, &weight);
} else {
status=polyid_and_weight_pixelized(self, &pt, &poly_id, &weight);
}
if (status != 1) {
goto _genrand_cleanup;
}
if (poly_id >= 0) {
// rely on short circuiting
if (weight < 1.0 || drand48() < weight) {
ngood++;
radec_from_point(&pt, ra_ptr, dec_ptr);
ra_ptr++;
dec_ptr++;
}
}
}
_genrand_cleanup:
if (status != 1) {
Py_XDECREF(ra_obj);
Py_XDECREF(dec_obj);
Py_XDECREF(tuple);
return NULL;
}
tuple=PyTuple_New(2);
PyTuple_SetItem(tuple, 0, ra_obj);
PyTuple_SetItem(tuple, 1, dec_obj);
return tuple;
}
开发者ID:esheldon,项目名称:misc,代码行数:77,代码来源:_mangle.c
示例8: PyArray_NDIM
static PyObject *Py_FindObjects(PyObject *obj, PyObject *args)
{
PyArrayObject *input = NULL;
PyObject *result = NULL, *tuple = NULL, *start = NULL, *end = NULL;
PyObject *slc = NULL;
int jj;
npy_intp max_label;
npy_intp ii, *regions = NULL;
if (!PyArg_ParseTuple(args, "O&n",
NI_ObjectToInputArray, &input, &max_label))
goto exit;
if (max_label < 0)
max_label = 0;
if (max_label > 0) {
if (PyArray_NDIM(input) > 0) {
regions = (npy_intp*)malloc(2 * max_label * PyArray_NDIM(input) *
sizeof(npy_intp));
} else {
regions = (npy_intp*)malloc(max_label * sizeof(npy_intp));
}
if (!regions) {
PyErr_NoMemory();
goto exit;
}
}
if (!NI_FindObjects(input, max_label, regions))
goto exit;
result = PyList_New(max_label);
if (!result) {
PyErr_NoMemory();
goto exit;
}
for(ii = 0; ii < max_label; ii++) {
npy_intp idx =
PyArray_NDIM(input) > 0 ? 2 * PyArray_NDIM(input) * ii : ii;
if (regions[idx] >= 0) {
PyObject *tuple = PyTuple_New(PyArray_NDIM(input));
if (!tuple) {
PyErr_NoMemory();
goto exit;
}
for(jj = 0; jj < PyArray_NDIM(input); jj++) {
start = PyLong_FromSsize_t(regions[idx + jj]);
end = PyLong_FromSsize_t(regions[idx + jj +
PyArray_NDIM(input)]);
if (!start || !end) {
PyErr_NoMemory();
goto exit;
}
slc = PySlice_New(start, end, NULL);
if (!slc) {
PyErr_NoMemory();
goto exit;
}
Py_XDECREF(start);
Py_XDECREF(end);
start = end = NULL;
PyTuple_SetItem(tuple, jj, slc);
slc = NULL;
}
PyList_SetItem(result, ii, tuple);
tuple = NULL;
} else {
Py_INCREF(Py_None);
PyList_SetItem(result, ii, Py_None);
}
}
Py_INCREF(result);
exit:
Py_XDECREF(input);
Py_XDECREF(result);
Py_XDECREF(tuple);
Py_XDECREF(start);
Py_XDECREF(end);
Py_XDECREF(slc);
free(regions);
if (PyErr_Occurred()) {
Py_XDECREF(result);
return NULL;
} else {
return result;
}
}
开发者ID:WarrenWeckesser,项目名称:scipy,代码行数:90,代码来源:nd_image.c
示例9: IDP_Callback
//-------------------------------------------------------------------------
//<code(py_idp)>
//-------------------------------------------------------------------------
int idaapi IDP_Callback(void *ud, int notification_code, va_list va)
{
// This hook gets called from the kernel. Ensure we hold the GIL.
PYW_GIL_GET;
IDP_Hooks *proxy = (IDP_Hooks *)ud;
int ret = 0;
try
{
switch ( notification_code )
{
case processor_t::custom_ana:
ret = proxy->custom_ana() ? 1 + cmd.size : 0;
break;
case processor_t::custom_out:
ret = proxy->custom_out() ? 2 : 0;
break;
case processor_t::custom_emu:
ret = proxy->custom_emu() ? 2 : 0;
break;
case processor_t::custom_outop:
{
op_t *op = va_arg(va, op_t *);
ref_t py_obj(create_idaapi_linked_class_instance(S_PY_OP_T_CLSNAME, op));
if ( py_obj == NULL )
break;
ret = proxy->custom_outop(py_obj.o) ? 2 : 0;
break;
}
case processor_t::custom_mnem:
{
PYW_GIL_CHECK_LOCKED_SCOPE();
PyObject *py_ret = proxy->custom_mnem();
if ( py_ret != NULL && PyString_Check(py_ret) )
{
char *outbuffer = va_arg(va, char *);
size_t bufsize = va_arg(va, size_t);
qstrncpy(outbuffer, PyString_AS_STRING(py_ret), bufsize);
ret = 2;
}
else
{
ret = 0;
}
Py_XDECREF(py_ret);
break;
}
case processor_t::is_sane_insn:
{
int no_crefs = va_arg(va, int);
ret = proxy->is_sane_insn(no_crefs);
break;
}
case processor_t::may_be_func:
{
int state = va_arg(va, int);
ret = proxy->may_be_func(state);
break;
}
case processor_t::closebase:
{
proxy->closebase();
break;
}
case processor_t::savebase:
{
proxy->savebase();
break;
}
case processor_t::auto_empty_finally:
{
proxy->auto_empty_finally();
break;
}
case processor_t::rename:
{
ea_t ea = va_arg(va, ea_t);
const char *new_name = va_arg(va, const char *);
ret = proxy->rename(ea, new_name);
break;
}
case processor_t::renamed:
{
ea_t ea = va_arg(va, ea_t);
const char *new_name = va_arg(va, const char *);
bool local_name = va_argi(va, bool);
//.........这里部分代码省略.........
开发者ID:Hehouhua,项目名称:idapython,代码行数:101,代码来源:py_idp.hpp
示例10: PyErr_SetString
static PyObject *Py_GeometricTransform(PyObject *obj, PyObject *args)
{
PyArrayObject *input = NULL, *output = NULL;
PyArrayObject *coordinates = NULL, *matrix = NULL, *shift = NULL;
PyObject *fnc = NULL, *extra_arguments = NULL, *extra_keywords = NULL;
int mode, order;
double cval;
void *func = NULL, *data = NULL;
NI_PythonCallbackData cbdata;
ccallback_t callback;
static ccallback_signature_t callback_signatures[] = {
{"int (intptr_t *, double *, int, int, void *)"},
{"int (npy_intp *, double *, int, int, void *)"},
#if NPY_SIZEOF_INTP == NPY_SIZEOF_SHORT
{"int (short *, double *, int, int, void *)"},
#endif
#if NPY_SIZEOF_INTP == NPY_SIZEOF_INT
{"int (int *, double *, int, int, void *)"},
#endif
#if NPY_SIZEOF_INTP == NPY_SIZEOF_LONG
{"int (long *, double *, int, int, void *)"},
#endif
#if NPY_SIZEOF_INTP == NPY_SIZEOF_LONGLONG
{"int (long long *, double *, int, int, void *)"},
#endif
{NULL}
};
callback.py_function = NULL;
callback.c_function = NULL;
if (!PyArg_ParseTuple(args, "O&OO&O&O&O&iidOO",
NI_ObjectToInputArray, &input,
&fnc,
NI_ObjectToOptionalInputArray, &coordinates,
NI_ObjectToOptionalInputArray, &matrix,
NI_ObjectToOptionalInputArray, &shift,
NI_ObjectToOutputArray, &output,
&order, &mode, &cval,
&extra_arguments, &extra_keywords))
goto exit;
if (fnc != Py_None) {
if (!PyTuple_Check(extra_arguments)) {
PyErr_SetString(PyExc_RuntimeError,
"extra_arguments must be a tuple");
goto exit;
}
if (!PyDict_Check(extra_keywords)) {
PyErr_SetString(PyExc_RuntimeError,
"extra_keywords must be a dictionary");
goto exit;
}
if (PyCapsule_CheckExact(fnc) && PyCapsule_GetName(fnc) == NULL) {
func = PyCapsule_GetPointer(fnc, NULL);
data = PyCapsule_GetContext(fnc);
#if PY_VERSION_HEX < 0x03000000
} else if (PyCObject_Check(fnc)) {
/* 'Legacy' low-level callable on Py2 */
func = PyCObject_AsVoidPtr(fnc);
data = PyCObject_GetDesc(fnc);
#endif
} else {
int ret;
ret = ccallback_prepare(&callback, callback_signatures, fnc, CCALLBACK_DEFAULTS);
if (ret == -1) {
goto exit;
}
if (callback.py_function != NULL) {
cbdata.extra_arguments = extra_arguments;
cbdata.extra_keywords = extra_keywords;
callback.info_p = (void*)&cbdata;
func = Py_Map;
data = (void*)&callback;
}
else {
func = callback.c_function;
data = callback.user_data;
}
}
}
NI_GeometricTransform(input, func, data, matrix, shift, coordinates,
output, order, (NI_ExtendMode)mode, cval);
#ifdef HAVE_WRITEBACKIFCOPY
PyArray_ResolveWritebackIfCopy(output);
#endif
exit:
if (callback.py_function != NULL || callback.c_function != NULL) {
ccallback_release(&callback);
}
Py_XDECREF(input);
Py_XDECREF(output);
Py_XDECREF(coordinates);
Py_XDECREF(matrix);
Py_XDECREF(shift);
return PyErr_Occurred() ? NULL : Py_BuildValue("");
//.........这里部分代码省略.........
开发者ID:WarrenWeckesser,项目名称:scipy,代码行数:101,代码来源:nd_image.c
示例11: run_script
void run_script(PyObject *dict, const char *script, const char *locale) {
PyObject *code = run_script_forcode(dict, script, locale);
Py_XDECREF(code);
}
开发者ID:ExposureSoftware,项目名称:rising_sun_mud,代码行数:4,代码来源:scripts.c
示例12: subprocess_fork_exec
static PyObject *
subprocess_fork_exec(PyObject* self, PyObject *args)
{
PyObject *gc_module = NULL;
PyObject *executable_list, *py_close_fds, *py_fds_to_keep;
PyObject *env_list, *preexec_fn;
PyObject *process_args, *converted_args = NULL, *fast_args = NULL;
PyObject *preexec_fn_args_tuple = NULL;
int p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite;
int errpipe_read, errpipe_write, close_fds, restore_signals;
int call_setsid;
PyObject *cwd_obj, *cwd_obj2;
const char *cwd;
pid_t pid;
int need_to_reenable_gc = 0;
char *const *exec_array, *const *argv = NULL, *const *envp = NULL;
Py_ssize_t arg_num;
if (!PyArg_ParseTuple(
args, "OOOOOOiiiiiiiiiiO:fork_exec",
&process_args, &executable_list, &py_close_fds, &py_fds_to_keep,
&cwd_obj, &env_list,
&p2cread, &p2cwrite, &c2pread, &c2pwrite,
&errread, &errwrite, &errpipe_read, &errpipe_write,
&restore_signals, &call_setsid, &preexec_fn))
return NULL;
close_fds = PyObject_IsTrue(py_close_fds);
if (close_fds < 0)
return NULL;
if (close_fds && errpipe_write < 3) { /* precondition */
PyErr_SetString(PyExc_ValueError, "errpipe_write must be >= 3");
return NULL;
}
if (PySequence_Length(py_fds_to_keep) < 0) {
PyErr_SetString(PyExc_ValueError, "cannot get length of fds_to_keep");
return NULL;
}
if (_sanity_check_python_fd_sequence(py_fds_to_keep)) {
PyErr_SetString(PyExc_ValueError, "bad value(s) in fds_to_keep");
return NULL;
}
/* We need to call gc.disable() when we'll be calling preexec_fn */
if (preexec_fn != Py_None) {
PyObject *result;
gc_module = PyImport_ImportModule("gc");
if (gc_module == NULL)
return NULL;
result = PyObject_CallMethod(gc_module, "isenabled", NULL);
if (result == NULL) {
Py_DECREF(gc_module);
return NULL;
}
need_to_reenable_gc = PyObject_IsTrue(result);
Py_DECREF(result);
if (need_to_reenable_gc == -1) {
Py_DECREF(gc_module);
return NULL;
}
result = PyObject_CallMethod(gc_module, "disable", NULL);
if (result == NULL) {
Py_DECREF(gc_module);
return NULL;
}
Py_DECREF(result);
}
exec_array = _PySequence_BytesToCharpArray(executable_list);
if (!exec_array) {
Py_XDECREF(gc_module);
return NULL;
}
/* Convert args and env into appropriate arguments for exec() */
/* These conversions are done in the parent process to avoid allocating
or freeing memory in the child process. */
if (process_args != Py_None) {
Py_ssize_t num_args;
/* Equivalent to: */
/* tuple(PyUnicode_FSConverter(arg) for arg in process_args) */
fast_args = PySequence_Fast(process_args, "argv must be a tuple");
if (fast_args == NULL)
goto cleanup;
num_args = PySequence_Fast_GET_SIZE(fast_args);
converted_args = PyTuple_New(num_args);
if (converted_args == NULL)
goto cleanup;
for (arg_num = 0; arg_num < num_args; ++arg_num) {
PyObject *borrowed_arg, *converted_arg;
borrowed_arg = PySequence_Fast_GET_ITEM(fast_args, arg_num);
if (PyUnicode_FSConverter(borrowed_arg, &converted_arg) == 0)
goto cleanup;
PyTuple_SET_ITEM(converted_args, arg_num, converted_arg);
}
argv = _PySequence_BytesToCharpArray(converted_args);
Py_CLEAR(converted_args);
Py_CLEAR(fast_args);
if (!argv)
//.........这里部分代码省略.........
开发者ID:Acidburn0zzz,项目名称:KomodoEdit,代码行数:101,代码来源:_posixsubprocess.c
示例13: obs_module_load
bool obs_module_load()
{
blog(LOG_INFO, "obs_module_load");
//Need to init python here
//load the swig
Py_Initialize();
PyEval_InitThreads();
/*Must set arguments for guis to work*/
wchar_t* argv[] = { L"", NULL };
int argc = sizeof(argv) / sizeof(wchar_t*) - 1;
//SWIG_init();
PySys_SetArgv(argc, argv);
//need to add to directory
PyRun_SimpleString("import os");
PyRun_SimpleString("import sys");
PyRun_SimpleString("os.environ['PYTHONUNBUFFERED'] = '1'");
PyRun_SimpleString("sys.stdout = open('/dev/shm/stdOut.txt','w',1)");
PyRun_SimpleString("sys.stderr = open('/dev/shm/stdErr.txt','w',1)");
PyRun_SimpleString("print(sys.version)");
/*Load a file*/
PyObject* pName, *pModule, *pFunc,*argList;
pName = PyUnicode_FromString("source");
char script[] = "/scripts";
const char *data_path = obs_get_module_data_path(obs_current_module());
char *scripts_path = bzalloc(strlen(data_path)+strlen(script));
strcpy(scripts_path,data_path);
strcat(scripts_path,script);
//Add the path to env
add_to_python_path(scripts_path);
bfree(scripts_path);
//PyImport_AppendInittab("_libobs", PyInit_libobs);
/*Import libobs*/
//Py_XDECREF(main_module);
//Add our custom stuff to libobs
//import the script
pModule = PyImport_Import(pName);
pyHasError();
//get the function by name
if(pModule != NULL) {
PyObject *ns = PyModule_GetDict(pModule);
Py_INCREF(ns);
PyObject *py_libobs = PyImport_ImportModuleEx("obspython",ns,ns,NULL);
Py_INCREF(py_libobs);
extend_swig_libobs(py_libobs);
PyModule_AddObject(pModule,"obspython",py_libobs);
pFunc = PyObject_GetAttr(pModule, PyUnicode_FromString("register"));
if(pFunc != NULL) {
argList = Py_BuildValue("()");
PyObject_CallObject(pFunc,argList);
pyHasError();
Py_XDECREF(pFunc);
Py_XDECREF(argList);
}
Py_XDECREF(pModule);
}
Py_XDECREF(pName);
//.........这里部分代码省略.........
开发者ID:zenny,项目名称:obs-python,代码行数:101,代码来源:obs-python-module.c
示例14: scope
//.........这里部分代码省略.........
LDAPControl **server_ctrls = NULL;
LDAPControl **returned_ctrls = NULL;
LDAPSearchIter *search_iter = (LDAPSearchIter *)iterator;
entrylist = PyList_New(0);
if (entrylist == NULL) {
return PyErr_NoMemory();
}
/* Check the number of server controls and allocate it. */
if (self->page_size > 1) num_of_ctrls++;
if (self->sort_list != NULL) num_of_ctrls++;
if (num_of_ctrls > 0) {
server_ctrls = (LDAPControl **)malloc(sizeof(LDAPControl *)
* (num_of_ctrls + 1));
if (server_ctrls == NULL) return PyErr_NoMemory();
num_of_ctrls = 0;
}
if (self->page_size > 1) {
/* Create page control and add to the server controls. */
rc = ldap_create_page_control(self->ld, (ber_int_t)(self->page_size),
search_iter->cookie, 0, &page_ctrl);
if (rc != LDAP_SUCCESS) {
PyErr_BadInternalCall();
return NULL;
}
server_ctrls[num_of_ctrls++] = page_ctrl;
server_ctrls[num_of_ctrls] = NULL;
}
if (self->sort_list != NULL) {
rc = ldap_create_sort_control(self->ld, self->sort_list, 0, &sort_ctrl);
if (rc != LDAP_SUCCESS) {
PyErr_BadInternalCall();
return NULL;
}
server_ctrls[num_of_ctrls++] = sort_ctrl;
server_ctrls[num_of_ctrls] = NULL;
}
rc = ldap_search_ext_s(self->ld, search_iter->base,
search_iter->scope,
search_iter->filter,
search_iter->attrs,
search_iter->attrsonly,
server_ctrls, NULL,
search_iter->timeout,
search_iter->sizelimit, &res);
if (rc == LDAP_NO_SUCH_OBJECT) {
return entrylist;
}
if (rc != LDAP_SUCCESS && rc != LDAP_PARTIAL_RESULTS) {
Py_DECREF(entrylist);
PyObject *ldaperror = get_error_by_code(rc);
PyErr_SetString(ldaperror, ldap_err2string(rc));
Py_DECREF(ldaperror);
return NULL;
}
rc = ldap_parse_result(self->ld, res, NULL, NULL, NULL, NULL, &returned_ctrls, 0);
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
if (search_iter->cookie != NULL && search_iter->cookie->bv_val != NULL) {
ber_bvfree(search_iter->cookie);
search_iter->cookie = NULL;
}
rc = ldap_parse_page_control(self->ld, returned_ctrls, NULL, &(search_iter->cookie));
#else
rc = ldap_parse_pageresponse_control(self->ld,
ldap_control_find(LDAP_CONTROL_PAGEDRESULTS, returned_ctrls, NULL),
NULL, search_iter->cookie);
#endif
/* Iterate over the response LDAP messages. */
for (entry = ldap_first_entry(self->ld, res);
entry != NULL;
entry = ldap_next_entry(self->ld, entry)) {
entryobj = LDAPEntry_FromLDAPMessage(entry, self);
if (entryobj == NULL) {
Py_DECREF(entrylist);
return NULL;
}
if ((entryobj == NULL) ||
(PyList_Append(entrylist, (PyObject *)entryobj)) != 0) {
Py_XDECREF(entryobj);
Py_DECREF(entrylist);
return PyErr_NoMemory();
}
Py_DECREF(entryobj);
}
/* Cleanup. */
if (returned_ctrls != NULL) ldap_controls_free(returned_ctrls);
if (page_ctrl != NULL) ldap_control_free(page_ctrl);
if (sort_ctrl != NULL) ldap_control_free(sort_ctrl);
if (server_ctrls != NULL) free(server_ctrls);
ldap_msgfree(res);
return entrylist;
}
开发者ID:ihrwein,项目名称:PyLDAP,代码行数:101,代码来源:ldapconnection.c
示例15: PLy_traceback
//.........这里部分代码省略.........
PyObject *volatile lineno = NULL;
PyObject *volatile filename = NULL;
PG_TRY();
{
/*
* Ancient versions of Python (circa 2.3) contain a bug whereby
* the fetches below can fail if the error indicator is set.
*/
PyErr_Clear();
lineno = PyObject_GetAttrString(tb, "tb_lineno");
if (lineno == NULL)
elog(ERROR, "could not get line number from Python traceback");
frame = PyObject_GetAttrString(tb, "tb_frame");
if (frame == NULL)
elog(ERROR, "could not get frame from Python traceback");
code = PyObject_GetAttrString(frame, "f_code");
if (code == NULL)
elog(ERROR, "could not get code object from Python frame");
name = PyObject_GetAttrString(code, "co_name");
if (name == NULL)
elog(ERROR, "could not get function name from Python code object");
filename = PyObject_GetAttrString(code, "co_filename");
if (filename == NULL)
elog(ERROR, "could not get file name from Python code object");
}
PG_CATCH();
{
Py_XDECREF(frame);
Py_XDECREF(code);
Py_XDECREF(name);
Py_XDECREF(lineno);
Py_XDECREF(filename);
PG_RE_THROW();
}
PG_END_TRY();
/* The first frame always points at <module>, skip it. */
if (*tb_depth > 0)
{
PLyExecutionContext *exec_ctx = PLy_current_execution_context();
char *proname;
char *fname;
char *line;
char *plain_filename;
long plain_lineno;
/*
* The second frame points at the internal function, but to mimick
* Python error reporting we want to say <module>.
*/
if (*tb_depth == 1)
fname = "<module>";
else
fname = PyString_AsString(name);
proname = PLy_procedure_name(exec_ctx->curr_proc);
plain_filename = PyString_AsString(filename);
plain_lineno = PyInt_AsLong(lineno);
if (proname == NULL)
开发者ID:bhaprayan,项目名称:pipelinedb,代码行数:67,代码来源:plpy_elog.c
示例16: PyVar_Assign
static void PyVar_Assign(PyObject **v, PyObject *e) { Py_XDECREF(*v); *v=e;}
开发者ID:SpamExperts,项目名称:BTrees,代码行数:1,代码来源:BTreeModuleTemplate.c
示例17: PLy_elog
/*
* Emit a PG error or notice, together with any available info about
* the current Python error, previously set by PLy_exception_set().
* This should be used to propagate Python errors into PG. If fmt is
* NULL, the Python error becomes the primary error message, otherwise
* it becomes the detail. If there is a Python traceback, it is put
* in the context.
*/
void
PLy_elog(int elevel, const char *fmt,...)
{
char *xmsg;
char *tbmsg;
int tb_depth;
StringInfoData emsg;
PyObject *exc,
*val,
*tb;
const char *primary = NULL;
int sqlerrcode = 0;
char *detail = NULL;
char *hint = NULL;
char *query = NULL;
int position = 0;
PyErr_Fetch(&exc, &val, &tb);
if (exc != NULL)
{
PyErr_NormalizeException(&exc, &val, &tb);
if (PyErr_GivenExceptionMatches(val, PLy_exc_spi_error))
PLy_get_spi_error_data(val, &sqlerrcode, &detail, &hint, &query, &position);
else if (PyErr_GivenExceptionMatches(val, PLy_exc_fatal))
elevel = FATAL;
}
/* this releases our refcount on tb! */
PLy_traceback(exc, val, tb,
&xmsg, &tbmsg, &tb_depth);
if (fmt)
{
initStringInfo(&emsg);
for (;;)
{
va_list ap;
int needed;
va_start(ap, fmt);
needed = appendStringInfoVA(&emsg, dgettext(TEXTDOMAIN, fmt), ap);
va_end(ap);
if (needed == 0)
break;
enlargeStringInfo(&emsg, needed);
}
primary = emsg.data;
/* Since we have a format string, we cannot have a SPI detail. */
Assert(detail == NULL);
/* If there's an exception message, it goes in the detail. */
if (xmsg)
detail = xmsg;
}
else
{
if (xmsg)
primary = xmsg;
}
PG_TRY();
{
ereport(elevel,
(errcode(sqlerrcode ? sqlerrcode : ERRCODE_EXTERNAL_ROUTINE_EXCEPTION),
errmsg_internal("%s", primary ? primary : "no exception data"),
(detail) ? errdetail_internal("%s", detail) : 0,
(tb_depth > 0 && tbmsg) ? errcontext("%s", tbmsg) : 0,
(hint) ? errhint("%s", hint) : 0,
(query) ? internalerrquery(query) : 0,
(position) ? internalerrposition(position) : 0));
}
PG_CATCH();
{
if (fmt)
pfree(emsg.data);
if (xmsg)
pfree(xmsg);
if (tbmsg)
pfree(tbmsg);
Py_XDECREF(exc);
Py_XDECREF(val);
PG_RE_THROW();
}
PG_END_TRY();
if (fmt)
pfree(emsg.data);
if (xmsg)
//.........这里部分代码省略.........
开发者ID:bhaprayan,项目名称:pipelinedb,代码行数:101,代码来源:plpy_elog.c
示例18: pepy_import_dealloc
static void pepy_import_dealloc(pepy_import *self) {
Py_XDECREF(self->name);
Py_XDECREF(self->sym);
Py_XDECREF(self->addr);
self->ob_type->tp_free((PyObject *) self);
}
开发者ID:Arbiv,项目名称:pe-parse,代码行数:6,代码来源:pepy.cpp
示例19: setEncodingAndErrors
void setEncodingAndErrors() {
// Adapted from pythonrun.c in CPython, with modifications for Pyston.
char* p;
char* icodeset = nullptr;
char* codeset = nullptr;
char* errors = nullptr;
int free_codeset = 0;
int overridden = 0;
PyObject* sys_stream, *sys_isatty;
char* saved_locale, *loc_codeset;
if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
p = icodeset = codeset = strdup(p);
free_codeset = 1;
errors = strchr(p, ':');
if (errors) {
*errors = '\0';
errors++;
}
overridden = 1;
}
#if defined(Py_USING_UNICODE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
/* On Unix, set the file system encoding according to the
user's preference, if the CODESET names a well-known
Python codec, and Py_FileSystemDefaultEncoding isn't
initialized by other means. Also set the encoding of
stdin and stdout if these are terminals, unless overridden. */
if (!overridden || !Py_FileSystemDefaultEncoding) {
saved_locale = strdup(setlocale(LC_CTYPE, NULL));
setlocale(LC_CTYPE, "");
loc_codeset = nl_langinfo(CODESET);
if (loc_codeset && *loc_codeset) {
PyObject* enc = PyCodec_Encoder(loc_codeset);
if (enc) {
loc_codeset = strdup(loc_codeset);
Py_DECREF(enc);
} else {
if (PyErr_ExceptionMatches(PyExc_LookupError)) {
PyErr_Clear();
loc_codeset = NULL;
} else {
PyErr_Print();
exit(1);
}
}
} else
loc_codeset = NULL;
setlocale(LC_CTYPE, saved_locale);
free(saved_locale);
if (!overridden) {
codeset = icodeset = loc_codeset;
free_codeset = 1;
}
/* Initialize Py_FileSystemDefaultEncoding from
locale even if PYTHONIOENCODING is set. */
if (!Py_FileSystemDefaultEncoding) {
Py_FileSystemDefaultEncoding = loc_codeset;
if (!overridden)
free_codeset = 0;
}
}
#endif
#ifdef MS_WINDOWS
if (!overridden) {
icodeset = ibuf;
codeset = buf;
sprintf(ibuf, "cp%d", GetConsoleCP());
sprintf(buf, "cp%d", GetConsoleOutputCP());
}
#endif
if (codeset) {
sys_stream = PySys_GetObject("stdin");
sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
if (!sys_isatty)
PyErr_Clear();
if ((overridden || (sys_isatty && PyObject_IsTrue(sys_isatty))) && PyFile_Check(sys_stream)) {
if (!PyFile_SetEncodingAndErrors(sys_stream, icodeset, errors))
Py_FatalError("Cannot set codeset of stdin");
}
Py_XDECREF(sys_isatty);
sys_stream = PySys_GetObject("stdout");
sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
if (!sys_isatty)
PyErr_Clear();
if ((overridden || (sys_isatty && PyObject_IsTrue(sys_isatty))) && PyFile_Check(sys_stream)) {
if (!PyFile_SetEncodingAndErrors(sys_stream, codeset, errors))
Py_FatalError("Cannot set codeset of stdout");
}
Py_XDECREF(sys_isatty);
sys_stream = PySys_GetObject("stderr");
sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
//.........这里部分代码省略.........
开发者ID:xujun10110,项目名称:pyston,代码行数:101,代码来源:sys.cpp
示例20: pepy_export_dealloc
|
请发表评论