@@ -23,6 +23,7 @@ typedef struct {
23
23
PyObject * one ; /* borrowed reference */
24
24
} enumobject ;
25
25
26
+ #define _enumobject_CAST (op ) ((enumobject *)(op))
26
27
27
28
/*[clinic input]
28
29
@classmethod
@@ -150,8 +151,9 @@ enumerate_vectorcall(PyObject *type, PyObject *const *args,
150
151
}
151
152
152
153
static void
153
- enum_dealloc (enumobject * en )
154
+ enum_dealloc (PyObject * op )
154
155
{
156
+ enumobject * en = _enumobject_CAST (op );
155
157
PyObject_GC_UnTrack (en );
156
158
Py_XDECREF (en -> en_sit );
157
159
Py_XDECREF (en -> en_result );
@@ -160,8 +162,9 @@ enum_dealloc(enumobject *en)
160
162
}
161
163
162
164
static int
163
- enum_traverse (enumobject * en , visitproc visit , void * arg )
165
+ enum_traverse (PyObject * op , visitproc visit , void * arg )
164
166
{
167
+ enumobject * en = _enumobject_CAST (op );
165
168
Py_VISIT (en -> en_sit );
166
169
Py_VISIT (en -> en_result );
167
170
Py_VISIT (en -> en_longindex );
@@ -220,8 +223,9 @@ enum_next_long(enumobject *en, PyObject* next_item)
220
223
}
221
224
222
225
static PyObject *
223
- enum_next (enumobject * en )
226
+ enum_next (PyObject * op )
224
227
{
228
+ enumobject * en = _enumobject_CAST (op );
225
229
PyObject * next_index ;
226
230
PyObject * next_item ;
227
231
PyObject * result = en -> en_result ;
@@ -270,8 +274,9 @@ enum_next(enumobject *en)
270
274
}
271
275
272
276
static PyObject *
273
- enum_reduce (enumobject * en , PyObject * Py_UNUSED (ignored ))
277
+ enum_reduce (PyObject * op , PyObject * Py_UNUSED (ignored ))
274
278
{
279
+ enumobject * en = _enumobject_CAST (op );
275
280
if (en -> en_longindex != NULL )
276
281
return Py_BuildValue ("O(OO)" , Py_TYPE (en ), en -> en_sit , en -> en_longindex );
277
282
else
@@ -281,7 +286,7 @@ enum_reduce(enumobject *en, PyObject *Py_UNUSED(ignored))
281
286
PyDoc_STRVAR (reduce_doc , "Return state information for pickling." );
282
287
283
288
static PyMethodDef enum_methods [] = {
284
- {"__reduce__" , ( PyCFunction ) enum_reduce , METH_NOARGS , reduce_doc },
289
+ {"__reduce__" , enum_reduce , METH_NOARGS , reduce_doc },
285
290
{"__class_getitem__" , Py_GenericAlias ,
286
291
METH_O |METH_CLASS , PyDoc_STR ("See PEP 585" )},
287
292
{NULL , NULL } /* sentinel */
@@ -293,7 +298,7 @@ PyTypeObject PyEnum_Type = {
293
298
sizeof (enumobject ), /* tp_basicsize */
294
299
0 , /* tp_itemsize */
295
300
/* methods */
296
- ( destructor ) enum_dealloc , /* tp_dealloc */
301
+ enum_dealloc , /* tp_dealloc */
297
302
0 , /* tp_vectorcall_offset */
298
303
0 , /* tp_getattr */
299
304
0 , /* tp_setattr */
@@ -311,12 +316,12 @@ PyTypeObject PyEnum_Type = {
311
316
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
312
317
Py_TPFLAGS_BASETYPE , /* tp_flags */
313
318
enum_new__doc__ , /* tp_doc */
314
- ( traverseproc ) enum_traverse , /* tp_traverse */
319
+ enum_traverse , /* tp_traverse */
315
320
0 , /* tp_clear */
316
321
0 , /* tp_richcompare */
317
322
0 , /* tp_weaklistoffset */
318
323
PyObject_SelfIter , /* tp_iter */
319
- ( iternextfunc ) enum_next , /* tp_iternext */
324
+ enum_next , /* tp_iternext */
320
325
enum_methods , /* tp_methods */
321
326
0 , /* tp_members */
322
327
0 , /* tp_getset */
@@ -329,7 +334,7 @@ PyTypeObject PyEnum_Type = {
329
334
PyType_GenericAlloc , /* tp_alloc */
330
335
enum_new , /* tp_new */
331
336
PyObject_GC_Del , /* tp_free */
332
- .tp_vectorcall = ( vectorcallfunc ) enumerate_vectorcall
337
+ .tp_vectorcall = enumerate_vectorcall
333
338
};
334
339
335
340
/* Reversed Object ***************************************************************/
@@ -340,6 +345,8 @@ typedef struct {
340
345
PyObject * seq ;
341
346
} reversedobject ;
342
347
348
+ #define _reversedobject_CAST (op ) ((reversedobject *)(op))
349
+
343
350
/*[clinic input]
344
351
@classmethod
345
352
reversed.__new__ as reversed_new
@@ -411,23 +418,26 @@ reversed_vectorcall(PyObject *type, PyObject * const*args,
411
418
}
412
419
413
420
static void
414
- reversed_dealloc (reversedobject * ro )
421
+ reversed_dealloc (PyObject * op )
415
422
{
423
+ reversedobject * ro = _reversedobject_CAST (op );
416
424
PyObject_GC_UnTrack (ro );
417
425
Py_XDECREF (ro -> seq );
418
426
Py_TYPE (ro )-> tp_free (ro );
419
427
}
420
428
421
429
static int
422
- reversed_traverse (reversedobject * ro , visitproc visit , void * arg )
430
+ reversed_traverse (PyObject * op , visitproc visit , void * arg )
423
431
{
432
+ reversedobject * ro = _reversedobject_CAST (op );
424
433
Py_VISIT (ro -> seq );
425
434
return 0 ;
426
435
}
427
436
428
437
static PyObject *
429
- reversed_next (reversedobject * ro )
438
+ reversed_next (PyObject * op )
430
439
{
440
+ reversedobject * ro = _reversedobject_CAST (op );
431
441
PyObject * item ;
432
442
Py_ssize_t index = ro -> index ;
433
443
@@ -447,8 +457,9 @@ reversed_next(reversedobject *ro)
447
457
}
448
458
449
459
static PyObject *
450
- reversed_len (reversedobject * ro , PyObject * Py_UNUSED (ignored ))
460
+ reversed_len (PyObject * op , PyObject * Py_UNUSED (ignored ))
451
461
{
462
+ reversedobject * ro = _reversedobject_CAST (op );
452
463
Py_ssize_t position , seqsize ;
453
464
454
465
if (ro -> seq == NULL )
@@ -463,17 +474,19 @@ reversed_len(reversedobject *ro, PyObject *Py_UNUSED(ignored))
463
474
PyDoc_STRVAR (length_hint_doc , "Private method returning an estimate of len(list(it))." );
464
475
465
476
static PyObject *
466
- reversed_reduce (reversedobject * ro , PyObject * Py_UNUSED (ignored ))
477
+ reversed_reduce (PyObject * op , PyObject * Py_UNUSED (ignored ))
467
478
{
479
+ reversedobject * ro = _reversedobject_CAST (op );
468
480
if (ro -> seq )
469
481
return Py_BuildValue ("O(O)n" , Py_TYPE (ro ), ro -> seq , ro -> index );
470
482
else
471
483
return Py_BuildValue ("O(())" , Py_TYPE (ro ));
472
484
}
473
485
474
486
static PyObject *
475
- reversed_setstate (reversedobject * ro , PyObject * state )
487
+ reversed_setstate (PyObject * op , PyObject * state )
476
488
{
489
+ reversedobject * ro = _reversedobject_CAST (op );
477
490
Py_ssize_t index = PyLong_AsSsize_t (state );
478
491
if (index == -1 && PyErr_Occurred ())
479
492
return NULL ;
@@ -493,9 +506,9 @@ reversed_setstate(reversedobject *ro, PyObject *state)
493
506
PyDoc_STRVAR (setstate_doc , "Set state information for unpickling." );
494
507
495
508
static PyMethodDef reversediter_methods [] = {
496
- {"__length_hint__" , ( PyCFunction ) reversed_len , METH_NOARGS , length_hint_doc },
497
- {"__reduce__" , ( PyCFunction ) reversed_reduce , METH_NOARGS , reduce_doc },
498
- {"__setstate__" , ( PyCFunction ) reversed_setstate , METH_O , setstate_doc },
509
+ {"__length_hint__" , reversed_len , METH_NOARGS , length_hint_doc },
510
+ {"__reduce__" , reversed_reduce , METH_NOARGS , reduce_doc },
511
+ {"__setstate__" , reversed_setstate , METH_O , setstate_doc },
499
512
{NULL , NULL } /* sentinel */
500
513
};
501
514
@@ -505,7 +518,7 @@ PyTypeObject PyReversed_Type = {
505
518
sizeof (reversedobject ), /* tp_basicsize */
506
519
0 , /* tp_itemsize */
507
520
/* methods */
508
- ( destructor ) reversed_dealloc , /* tp_dealloc */
521
+ reversed_dealloc , /* tp_dealloc */
509
522
0 , /* tp_vectorcall_offset */
510
523
0 , /* tp_getattr */
511
524
0 , /* tp_setattr */
@@ -523,12 +536,12 @@ PyTypeObject PyReversed_Type = {
523
536
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
524
537
Py_TPFLAGS_BASETYPE , /* tp_flags */
525
538
reversed_new__doc__ , /* tp_doc */
526
- ( traverseproc ) reversed_traverse ,/* tp_traverse */
539
+ reversed_traverse , /* tp_traverse */
527
540
0 , /* tp_clear */
528
541
0 , /* tp_richcompare */
529
542
0 , /* tp_weaklistoffset */
530
543
PyObject_SelfIter , /* tp_iter */
531
- ( iternextfunc ) reversed_next , /* tp_iternext */
544
+ reversed_next , /* tp_iternext */
532
545
reversediter_methods , /* tp_methods */
533
546
0 , /* tp_members */
534
547
0 , /* tp_getset */
@@ -541,5 +554,5 @@ PyTypeObject PyReversed_Type = {
541
554
PyType_GenericAlloc , /* tp_alloc */
542
555
reversed_new , /* tp_new */
543
556
PyObject_GC_Del , /* tp_free */
544
- .tp_vectorcall = ( vectorcallfunc ) reversed_vectorcall ,
557
+ .tp_vectorcall = reversed_vectorcall ,
545
558
};
0 commit comments