static void dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, int deref, int clear) { Py_ssize_t j; assert(PyTuple_Check(map)); assert(PyDict_Check(dict)); assert(PyTuple_Size(map) >= nmap); for (j = nmap; --j >= 0; ) { PyObject *key = PyTuple_GET_ITEM(map, j); PyObject *value = PyObject_GetItem(dict, key); assert(PyString_Check(key)); /* We only care about NULLs if clear is true. */ if (value == NULL) { PyErr_Clear(); if (!clear) continue; } if (deref) { assert(PyCell_Check(values[j])); if (PyCell_GET(values[j]) != value) { if (PyCell_Set(values[j], value) < 0) PyErr_Clear(); } } else if (values[j] != value) { Py_XINCREF(value); Py_XDECREF(values[j]); values[j] = value; } Py_XDECREF(value); } }
static void dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, Py_ssize_t deref, int clear) { Py_ssize_t j; for (j = nmap; --j >= 0; ) { PyObject *key = PyTuple_GET_ITEM(map, j); PyObject *value = PyObject_GetItem(dict, key); if (value == NULL) PyErr_Clear(); if (deref) { if (value || clear) { if (PyCell_GET(values[j]) != value) { if (PyCell_Set(values[j], value) < 0) PyErr_Clear(); } } } else if (value != NULL || clear) { if (values[j] != value) { Py_XINCREF(value); Py_XDECREF(values[j]); values[j] = value; } } Py_XDECREF(value); } }
static void map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, int deref) { Py_ssize_t j; assert(PyTuple_Check(map)); assert(PyDict_Check(dict)); assert(PyTuple_Size(map) >= nmap); for (j = nmap; --j >= 0; ) { PyObject *key = PyTuple_GET_ITEM(map, j); PyObject *value = values[j]; assert(PyString_Check(key)); if (deref) { assert(PyCell_Check(value)); value = PyCell_GET(value); } if (value == NULL) { if (PyObject_DelItem(dict, key) != 0) PyErr_Clear(); } else { if (PyObject_SetItem(dict, key, value) != 0) PyErr_Clear(); } } }
void JySync_JyCell_From_PyCell(PyObject* src, jobject dest) { env(); (*env)->SetObjectField(env, dest, pyCell_ob_refField, JyNI_JythonPyObject_FromPyObject(PyCell_GET(src))); }
static int map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, int deref) { Py_ssize_t j; assert(PyTuple_Check(map)); assert(PyDict_Check(dict)); assert(PyTuple_Size(map) >= nmap); for (j = nmap; --j >= 0; ) { PyObject *key = PyTuple_GET_ITEM(map, j); PyObject *value = values[j]; assert(PyUnicode_Check(key)); if (deref) { assert(PyCell_Check(value)); value = PyCell_GET(value); } if (value == NULL) { if (PyObject_DelItem(dict, key) != 0) { if (PyErr_ExceptionMatches(PyExc_KeyError)) PyErr_Clear(); else return -1; } } else { if (PyObject_SetItem(dict, key, value) != 0) return -1; } } return 0; }
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; } }
PyObject * PyCell_Get(PyObject *op) { if (!PyCell_Check(op)) { PyErr_BadInternalCall(); return NULL; } Py_XINCREF(((PyCellObject*)op)->ob_ref); return PyCell_GET(op); }
int PyCell_Set(PyObject *op, PyObject *obj) { PyObject* oldobj; if (!PyCell_Check(op)) { PyErr_BadInternalCall(); return -1; } oldobj = PyCell_GET(op); Py_XINCREF(obj); PyCell_SET(op, obj); Py_XDECREF(oldobj); return 0; }
static void map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values, Py_ssize_t deref) { Py_ssize_t j; for (j = nmap; --j >= 0; ) { PyObject *key = PyTuple_GET_ITEM(map, j); PyObject *value = values[j]; if (deref) value = PyCell_GET(value); if (value == NULL) { if (PyObject_DelItem(dict, key) != 0) PyErr_Clear(); } else { if (PyObject_SetItem(dict, key, value) != 0) PyErr_Clear(); } } }