@@ -825,8 +825,9 @@ PyTypeObject PyRange_Type = { |
825 | 825 | */ |
826 | 826 |
|
827 | 827 | static PyObject * |
828 | | -rangeiter_next(_PyRangeIterObject *r) |
| 828 | +rangeiter_next(PyObject *op) |
829 | 829 | { |
| 830 | + _PyRangeIterObject *r = (_PyRangeIterObject*)op; |
830 | 831 | if (r->len > 0) { |
831 | 832 | long result = r->start; |
832 | 833 | r->start = result + r->step; |
@@ -837,17 +838,19 @@ rangeiter_next(_PyRangeIterObject *r) |
837 | 838 | } |
838 | 839 |
|
839 | 840 | static PyObject * |
840 | | -rangeiter_len(_PyRangeIterObject *r, PyObject *Py_UNUSED(ignored)) |
| 841 | +rangeiter_len(PyObject *op, PyObject *Py_UNUSED(ignored)) |
841 | 842 | { |
| 843 | + _PyRangeIterObject *r = (_PyRangeIterObject*)op; |
842 | 844 | return PyLong_FromLong(r->len); |
843 | 845 | } |
844 | 846 |
|
845 | 847 | PyDoc_STRVAR(length_hint_doc, |
846 | 848 | "Private method returning an estimate of len(list(it))."); |
847 | 849 |
|
848 | 850 | static PyObject * |
849 | | -rangeiter_reduce(_PyRangeIterObject *r, PyObject *Py_UNUSED(ignored)) |
| 851 | +rangeiter_reduce(PyObject *op, PyObject *Py_UNUSED(ignored)) |
850 | 852 | { |
| 853 | + _PyRangeIterObject *r = (_PyRangeIterObject*)op; |
851 | 854 | PyObject *start=NULL, *stop=NULL, *step=NULL; |
852 | 855 | PyObject *range; |
853 | 856 |
|
@@ -876,8 +879,9 @@ rangeiter_reduce(_PyRangeIterObject *r, PyObject *Py_UNUSED(ignored)) |
876 | 879 | } |
877 | 880 |
|
878 | 881 | static PyObject * |
879 | | -rangeiter_setstate(_PyRangeIterObject *r, PyObject *state) |
| 882 | +rangeiter_setstate(PyObject *op, PyObject *state) |
880 | 883 | { |
| 884 | + _PyRangeIterObject *r = (_PyRangeIterObject*)op; |
881 | 885 | long index = PyLong_AsLong(state); |
882 | 886 | if (index == -1 && PyErr_Occurred()) |
883 | 887 | return NULL; |
@@ -895,12 +899,9 @@ PyDoc_STRVAR(reduce_doc, "Return state information for pickling."); |
895 | 899 | PyDoc_STRVAR(setstate_doc, "Set state information for unpickling."); |
896 | 900 |
|
897 | 901 | static PyMethodDef rangeiter_methods[] = { |
898 | | - {"__length_hint__", (PyCFunction)rangeiter_len, METH_NOARGS, |
899 | | - length_hint_doc}, |
900 | | - {"__reduce__", (PyCFunction)rangeiter_reduce, METH_NOARGS, |
901 | | - reduce_doc}, |
902 | | - {"__setstate__", (PyCFunction)rangeiter_setstate, METH_O, |
903 | | - setstate_doc}, |
| 902 | + {"__length_hint__", rangeiter_len, METH_NOARGS, length_hint_doc}, |
| 903 | + {"__reduce__", rangeiter_reduce, METH_NOARGS, reduce_doc}, |
| 904 | + {"__setstate__", rangeiter_setstate, METH_O, setstate_doc}, |
904 | 905 | {NULL, NULL} /* sentinel */ |
905 | 906 | }; |
906 | 907 |
|
@@ -932,7 +933,7 @@ PyTypeObject PyRangeIter_Type = { |
932 | 933 | 0, /* tp_richcompare */ |
933 | 934 | 0, /* tp_weaklistoffset */ |
934 | 935 | PyObject_SelfIter, /* tp_iter */ |
935 | | - (iternextfunc)rangeiter_next, /* tp_iternext */ |
| 936 | + rangeiter_next, /* tp_iternext */ |
936 | 937 | rangeiter_methods, /* tp_methods */ |
937 | 938 | 0, /* tp_members */ |
938 | 939 | }; |
@@ -988,15 +989,17 @@ typedef struct { |
988 | 989 | } longrangeiterobject; |
989 | 990 |
|
990 | 991 | static PyObject * |
991 | | -longrangeiter_len(longrangeiterobject *r, PyObject *no_args) |
| 992 | +longrangeiter_len(PyObject *op, PyObject *Py_UNUSED(ignored)) |
992 | 993 | { |
| 994 | + longrangeiterobject *r = (longrangeiterobject*)op; |
993 | 995 | Py_INCREF(r->len); |
994 | 996 | return r->len; |
995 | 997 | } |
996 | 998 |
|
997 | 999 | static PyObject * |
998 | | -longrangeiter_reduce(longrangeiterobject *r, PyObject *Py_UNUSED(ignored)) |
| 1000 | +longrangeiter_reduce(PyObject *op, PyObject *Py_UNUSED(ignored)) |
999 | 1001 | { |
| 1002 | + longrangeiterobject *r = (longrangeiterobject*)op; |
1000 | 1003 | PyObject *product, *stop=NULL; |
1001 | 1004 | PyObject *range; |
1002 | 1005 |
|
@@ -1023,8 +1026,9 @@ longrangeiter_reduce(longrangeiterobject *r, PyObject *Py_UNUSED(ignored)) |
1023 | 1026 | } |
1024 | 1027 |
|
1025 | 1028 | static PyObject * |
1026 | | -longrangeiter_setstate(longrangeiterobject *r, PyObject *state) |
| 1029 | +longrangeiter_setstate(PyObject *op, PyObject *state) |
1027 | 1030 | { |
| 1031 | + longrangeiterobject *r = (longrangeiterobject*)op; |
1028 | 1032 | PyObject *zero = _PyLong_GetZero(); // borrowed reference |
1029 | 1033 | int cmp; |
1030 | 1034 |
|
@@ -1062,27 +1066,26 @@ longrangeiter_setstate(longrangeiterobject *r, PyObject *state) |
1062 | 1066 | } |
1063 | 1067 |
|
1064 | 1068 | static PyMethodDef longrangeiter_methods[] = { |
1065 | | - {"__length_hint__", (PyCFunction)longrangeiter_len, METH_NOARGS, |
1066 | | - length_hint_doc}, |
1067 | | - {"__reduce__", (PyCFunction)longrangeiter_reduce, METH_NOARGS, |
1068 | | - reduce_doc}, |
1069 | | - {"__setstate__", (PyCFunction)longrangeiter_setstate, METH_O, |
1070 | | - setstate_doc}, |
| 1069 | + {"__length_hint__", longrangeiter_len, METH_NOARGS, length_hint_doc}, |
| 1070 | + {"__reduce__", longrangeiter_reduce, METH_NOARGS, reduce_doc}, |
| 1071 | + {"__setstate__", longrangeiter_setstate, METH_O, setstate_doc}, |
1071 | 1072 | {NULL, NULL} /* sentinel */ |
1072 | 1073 | }; |
1073 | 1074 |
|
1074 | 1075 | static void |
1075 | | -longrangeiter_dealloc(longrangeiterobject *r) |
| 1076 | +longrangeiter_dealloc(PyObject *op) |
1076 | 1077 | { |
| 1078 | + longrangeiterobject *r = (longrangeiterobject*)op; |
1077 | 1079 | Py_XDECREF(r->start); |
1078 | 1080 | Py_XDECREF(r->step); |
1079 | 1081 | Py_XDECREF(r->len); |
1080 | 1082 | PyObject_Free(r); |
1081 | 1083 | } |
1082 | 1084 |
|
1083 | 1085 | static PyObject * |
1084 | | -longrangeiter_next(longrangeiterobject *r) |
| 1086 | +longrangeiter_next(PyObject *op) |
1085 | 1087 | { |
| 1088 | + longrangeiterobject *r = (longrangeiterobject*)op; |
1086 | 1089 | if (PyObject_RichCompareBool(r->len, _PyLong_GetZero(), Py_GT) != 1) |
1087 | 1090 | return NULL; |
1088 | 1091 |
|
@@ -1107,7 +1110,7 @@ PyTypeObject PyLongRangeIter_Type = { |
1107 | 1110 | sizeof(longrangeiterobject), /* tp_basicsize */ |
1108 | 1111 | 0, /* tp_itemsize */ |
1109 | 1112 | /* methods */ |
1110 | | - (destructor)longrangeiter_dealloc, /* tp_dealloc */ |
| 1113 | + longrangeiter_dealloc, /* tp_dealloc */ |
1111 | 1114 | 0, /* tp_vectorcall_offset */ |
1112 | 1115 | 0, /* tp_getattr */ |
1113 | 1116 | 0, /* tp_setattr */ |
@@ -1129,7 +1132,7 @@ PyTypeObject PyLongRangeIter_Type = { |
1129 | 1132 | 0, /* tp_richcompare */ |
1130 | 1133 | 0, /* tp_weaklistoffset */ |
1131 | 1134 | PyObject_SelfIter, /* tp_iter */ |
1132 | | - (iternextfunc)longrangeiter_next, /* tp_iternext */ |
| 1135 | + longrangeiter_next, /* tp_iternext */ |
1133 | 1136 | longrangeiter_methods, /* tp_methods */ |
1134 | 1137 | 0, |
1135 | 1138 | }; |
|