Lines Matching refs:di

1652 odictiter_dealloc(odictiterobject *di)
1654 _PyObject_GC_UNTRACK(di);
1655 Py_XDECREF(di->di_odict);
1656 Py_XDECREF(di->di_current);
1657 if ((di->kind & _odict_ITER_ITEMS) == _odict_ITER_ITEMS) {
1658 Py_DECREF(di->di_result);
1660 PyObject_GC_Del(di);
1664 odictiter_traverse(odictiterobject *di, visitproc visit, void *arg)
1666 Py_VISIT(di->di_odict);
1667 Py_VISIT(di->di_current); /* A key could be any type, not just str. */
1668 Py_VISIT(di->di_result);
1675 odictiter_nextkey(odictiterobject *di)
1679 int reversed = di->kind & _odict_ITER_REVERSED;
1681 if (di->di_odict == NULL)
1683 if (di->di_current == NULL)
1687 if (di->di_odict->od_state != di->di_state) {
1692 if (di->di_size != PyODict_SIZE(di->di_odict)) {
1695 di->di_size = -1; /* Make this state sticky */
1700 node = _odict_find_node(di->di_odict, di->di_current);
1703 PyErr_SetObject(PyExc_KeyError, di->di_current);
1705 Py_CLEAR(di->di_current);
1708 key = di->di_current;
1714 di->di_current = NULL;
1717 di->di_current = _odictnode_KEY(node);
1718 Py_INCREF(di->di_current);
1724 Py_CLEAR(di->di_odict);
1729 odictiter_iternext(odictiterobject *di)
1732 PyObject *key = odictiter_nextkey(di); /* new reference */
1738 if (! (di->kind & _odict_ITER_VALUES)) {
1742 value = PyODict_GetItem((PyObject *)di->di_odict, key); /* borrowed */
1752 if (!(di->kind & _odict_ITER_KEYS)) {
1758 result = di->di_result;
1786 Py_CLEAR(di->di_current);
1787 Py_CLEAR(di->di_odict);
1796 odictiter_reduce(odictiterobject *di, PyObject *Py_UNUSED(ignored))
1799 odictiterobject tmp = *di;
1854 odictiterobject *di;
1858 di = PyObject_GC_New(odictiterobject, &PyODictIter_Type);
1859 if (di == NULL)
1863 di->di_result = PyTuple_Pack(2, Py_None, Py_None);
1864 if (di->di_result == NULL) {
1865 Py_DECREF(di);
1870 di->di_result = NULL;
1873 di->kind = kind;
1875 di->di_current = node ? _odictnode_KEY(node) : NULL;
1876 Py_XINCREF(di->di_current);
1877 di->di_size = PyODict_SIZE(od);
1878 di->di_state = od->od_state;
1879 di->di_odict = od;
1882 _PyObject_GC_TRACK(di);
1883 return (PyObject *)di;