@@ -31,16 +31,18 @@ PySeqIter_New(PyObject *seq)
31
31
}
32
32
33
33
static void
34
- iter_dealloc (seqiterobject * it )
34
+ iter_dealloc (PyObject * op )
35
35
{
36
+ seqiterobject * it = (seqiterobject * )op ;
36
37
_PyObject_GC_UNTRACK (it );
37
38
Py_XDECREF (it -> it_seq );
38
39
PyObject_GC_Del (it );
39
40
}
40
41
41
42
static int
42
- iter_traverse (seqiterobject * it , visitproc visit , void * arg )
43
+ iter_traverse (PyObject * op , visitproc visit , void * arg )
43
44
{
45
+ seqiterobject * it = (seqiterobject * )op ;
44
46
Py_VISIT (it -> it_seq );
45
47
return 0 ;
46
48
}
@@ -79,8 +81,9 @@ iter_iternext(PyObject *iterator)
79
81
}
80
82
81
83
static PyObject *
82
- iter_len (seqiterobject * it , PyObject * Py_UNUSED (ignored ))
84
+ iter_len (PyObject * op , PyObject * Py_UNUSED (ignored ))
83
85
{
86
+ seqiterobject * it = (seqiterobject * )op ;
84
87
Py_ssize_t seqsize , len ;
85
88
86
89
if (it -> it_seq ) {
@@ -102,8 +105,9 @@ iter_len(seqiterobject *it, PyObject *Py_UNUSED(ignored))
102
105
PyDoc_STRVAR (length_hint_doc , "Private method returning an estimate of len(list(it))." );
103
106
104
107
static PyObject *
105
- iter_reduce (seqiterobject * it , PyObject * Py_UNUSED (ignored ))
108
+ iter_reduce (PyObject * op , PyObject * Py_UNUSED (ignored ))
106
109
{
110
+ seqiterobject * it = (seqiterobject * )op ;
107
111
PyObject * iter = _PyEval_GetBuiltin (& _Py_ID (iter ));
108
112
109
113
/* _PyEval_GetBuiltin can invoke arbitrary code,
@@ -119,8 +123,9 @@ iter_reduce(seqiterobject *it, PyObject *Py_UNUSED(ignored))
119
123
PyDoc_STRVAR (reduce_doc , "Return state information for pickling." );
120
124
121
125
static PyObject *
122
- iter_setstate (seqiterobject * it , PyObject * state )
126
+ iter_setstate (PyObject * op , PyObject * state )
123
127
{
128
+ seqiterobject * it = (seqiterobject * )op ;
124
129
Py_ssize_t index = PyLong_AsSsize_t (state );
125
130
if (index == -1 && PyErr_Occurred ())
126
131
return NULL ;
@@ -135,9 +140,9 @@ iter_setstate(seqiterobject *it, PyObject *state)
135
140
PyDoc_STRVAR (setstate_doc , "Set state information for unpickling." );
136
141
137
142
static PyMethodDef seqiter_methods [] = {
138
- {"__length_hint__" , ( PyCFunction ) iter_len , METH_NOARGS , length_hint_doc },
139
- {"__reduce__" , ( PyCFunction ) iter_reduce , METH_NOARGS , reduce_doc },
140
- {"__setstate__" , ( PyCFunction ) iter_setstate , METH_O , setstate_doc },
143
+ {"__length_hint__" , iter_len , METH_NOARGS , length_hint_doc },
144
+ {"__reduce__" , iter_reduce , METH_NOARGS , reduce_doc },
145
+ {"__setstate__" , iter_setstate , METH_O , setstate_doc },
141
146
{NULL , NULL } /* sentinel */
142
147
};
143
148
@@ -147,7 +152,7 @@ PyTypeObject PySeqIter_Type = {
147
152
sizeof (seqiterobject ), /* tp_basicsize */
148
153
0 , /* tp_itemsize */
149
154
/* methods */
150
- ( destructor ) iter_dealloc , /* tp_dealloc */
155
+ iter_dealloc , /* tp_dealloc */
151
156
0 , /* tp_vectorcall_offset */
152
157
0 , /* tp_getattr */
153
158
0 , /* tp_setattr */
@@ -164,7 +169,7 @@ PyTypeObject PySeqIter_Type = {
164
169
0 , /* tp_as_buffer */
165
170
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC , /* tp_flags */
166
171
0 , /* tp_doc */
167
- ( traverseproc ) iter_traverse , /* tp_traverse */
172
+ iter_traverse , /* tp_traverse */
168
173
0 , /* tp_clear */
169
174
0 , /* tp_richcompare */
170
175
0 , /* tp_weaklistoffset */
0 commit comments