示例#1
0
文件: cellobject.c 项目: Stewori/JyNI
int
PyCell_Set(PyObject *op, PyObject *obj)
{
	if (!PyCell_Check(op)) {
		PyErr_BadInternalCall();
		return -1;
	} else {
		PyObject* oldobj;
		JyObject* jy;
		oldobj = PyCell_GET(op);
		Py_XINCREF(obj);
		PyCell_SET(op, obj);
		updateJyGCHeadLink(op, AS_JY_WITH_GC(op), 0,
					obj, obj ? AS_JY(obj) : NULL);
		Py_XDECREF(oldobj);
		jy = AS_JY_WITH_GC(op);
		if (JyObject_IS_INITIALIZED(jy))
		{
			env(-1);
			(*env)->SetObjectField(env, jy->jy, pyCell_ob_refField,
						JyNI_JythonPyObject_FromPyObject(obj));
		}
		return 0;
	}
}
示例#2
0
static void
slice_dealloc(PySliceObject *r)
{
	JyObject* jy = AS_JY_NO_GC(r);
	if (JyObject_IS_INITIALIZED(jy))
	{
		env();
		Py_DECREF(JyNI_PyObject_FromJythonPyObject((*env)->CallObjectMethod(env, jy->jy, pySliceGetStart)));
		Py_DECREF(JyNI_PyObject_FromJythonPyObject((*env)->CallObjectMethod(env, jy->jy, pySliceGetStop)));
		Py_DECREF(JyNI_PyObject_FromJythonPyObject((*env)->CallObjectMethod(env, jy->jy, pySliceGetStep)));
//		Py_DECREF(r->step);
//		Py_DECREF(r->start);
//		Py_DECREF(r->stop);
//		PyObject_Del(r);
	}
	JyNI_CleanUp_JyObject(jy);
	//PyObject_Del(jy);
	PyObject_RawFree(jy);
}