{
PyObject *result;
PyObject *next_index;
+ PyObject *next_item;
- PyObject *next_item = PyIter_Next(en->en_sit);
- if (next_item == NULL)
+ result = PyTuple_New(2);
+ if (result == NULL)
return NULL;
- result = PyTuple_New(2);
- if (result == NULL) {
- Py_DECREF(next_item);
+ next_index = PyInt_FromLong(en->en_index);
+ if (next_index == NULL) {
+ Py_DECREF(result);
return NULL;
}
+ PyTuple_SET_ITEM(result, 0, next_index);
- next_index = PyInt_FromLong(en->en_index++);
- if (next_index == NULL) {
- Py_DECREF(next_item);
+ next_item = PyIter_Next(en->en_sit);
+ if (next_item == NULL) {
Py_DECREF(result);
return NULL;
}
- PyTuple_SET_ITEM(result, 0, next_index);
+ en->en_index++;
PyTuple_SET_ITEM(result, 1, next_item);
return result;
}
return en;
}
-static PyMethodDef enum_methods[] = {
- {"next", (PyCFunction)enum_next, METH_NOARGS,
- "return the next (index, value) pair, or raise StopIteration"},
- {NULL, NULL} /* sentinel */
-};
-
PyDoc_STRVAR(enum_doc,
"enumerate(iterable) -> create an enumerating-iterator");
0, /* tp_weaklistoffset */
(getiterfunc)enum_getiter, /* tp_iter */
(iternextfunc)enum_next, /* tp_iternext */
- enum_methods, /* tp_methods */
+ 0, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
0, /* tp_base */