When step is given, it specifies the increment (or decrement).");
static void
-range_dealloc(rangeobject *r)
+range_dealloc(PyObject *op)
{
+ rangeobject *r = (rangeobject*)op;
Py_DECREF(r->start);
Py_DECREF(r->stop);
Py_DECREF(r->step);
}
static Py_ssize_t
-range_length(rangeobject *r)
+range_length(PyObject *op)
{
+ rangeobject *r = (rangeobject*)op;
return PyLong_AsSsize_t(r->length);
}
}
static PyObject *
-range_item(rangeobject *r, Py_ssize_t i)
+range_item(PyObject *op, Py_ssize_t i)
{
+ rangeobject *r = (rangeobject*)op;
PyObject *res, *arg = PyLong_FromSsize_t(i);
if (!arg) {
return NULL;
}
static int
-range_contains(rangeobject *r, PyObject *ob)
+range_contains(PyObject *self, PyObject *ob)
{
+ rangeobject *r = (rangeobject*)self;
if (PyLong_CheckExact(ob) || PyBool_Check(ob))
return range_contains_long(r, ob);
return hash((len(r), r.start, r.step))
*/
static Py_hash_t
-range_hash(rangeobject *r)
+range_hash(PyObject *op)
{
+ rangeobject *r = (rangeobject*)op;
PyObject *t;
Py_hash_t result = -1;
int cmp_result;
}
static PyObject *
-range_count(rangeobject *r, PyObject *ob)
+range_count(PyObject *self, PyObject *ob)
{
+ rangeobject *r = (rangeobject*)self;
if (PyLong_CheckExact(ob) || PyBool_Check(ob)) {
int result = range_contains_long(r, ob);
if (result == -1)
}
static PyObject *
-range_index(rangeobject *r, PyObject *ob)
+range_index(PyObject *self, PyObject *ob)
{
+ rangeobject *r = (rangeobject*)self;
int contains;
if (!PyLong_CheckExact(ob) && !PyBool_Check(ob)) {
}
static PySequenceMethods range_as_sequence = {
- (lenfunc)range_length, /* sq_length */
+ range_length, /* sq_length */
0, /* sq_concat */
0, /* sq_repeat */
- (ssizeargfunc)range_item, /* sq_item */
+ range_item, /* sq_item */
0, /* sq_slice */
0, /* sq_ass_item */
0, /* sq_ass_slice */
- (objobjproc)range_contains, /* sq_contains */
+ range_contains, /* sq_contains */
};
static PyObject *
-range_repr(rangeobject *r)
+range_repr(PyObject *op)
{
+ rangeobject *r = (rangeobject*)op;
Py_ssize_t istep;
/* Check for special case values for printing. We don't always
/* Pickling support */
static PyObject *
-range_reduce(rangeobject *r, PyObject *args)
+range_reduce(PyObject *op, PyObject *args)
{
+ rangeobject *r = (rangeobject*)op;
return Py_BuildValue("(O(OOO))", Py_TYPE(r),
r->start, r->stop, r->step);
}
static PyObject *
-range_subscript(rangeobject* self, PyObject* item)
+range_subscript(PyObject *op, PyObject *item)
{
+ rangeobject *self = (rangeobject*)op;
if (_PyIndex_Check(item)) {
PyObject *i, *result;
i = PyNumber_Index(item);
static PyMappingMethods range_as_mapping = {
- (lenfunc)range_length, /* mp_length */
- (binaryfunc)range_subscript, /* mp_subscript */
+ range_length, /* mp_length */
+ range_subscript, /* mp_subscript */
(objobjargproc)0, /* mp_ass_subscript */
};
static int
-range_bool(rangeobject* self)
+range_bool(PyObject *op)
{
+ rangeobject *self = (rangeobject*)op;
return PyObject_IsTrue(self->length);
}
static PyNumberMethods range_as_number = {
- .nb_bool = (inquiry)range_bool,
+ .nb_bool = range_bool,
};
static PyObject * range_iter(PyObject *seq);
static PyMethodDef range_methods[] = {
{"__reversed__", range_reverse, METH_NOARGS, reverse_doc},
- {"__reduce__", (PyCFunction)range_reduce, METH_NOARGS},
- {"count", (PyCFunction)range_count, METH_O, count_doc},
- {"index", (PyCFunction)range_index, METH_O, index_doc},
+ {"__reduce__", range_reduce, METH_NOARGS},
+ {"count", range_count, METH_O, count_doc},
+ {"index", range_index, METH_O, index_doc},
{NULL, NULL} /* sentinel */
};
"range", /* Name of this type */
sizeof(rangeobject), /* Basic object size */
0, /* Item size for varobject */
- (destructor)range_dealloc, /* tp_dealloc */
+ range_dealloc, /* tp_dealloc */
0, /* tp_vectorcall_offset */
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_as_async */
- (reprfunc)range_repr, /* tp_repr */
+ range_repr, /* tp_repr */
&range_as_number, /* tp_as_number */
&range_as_sequence, /* tp_as_sequence */
&range_as_mapping, /* tp_as_mapping */
- (hashfunc)range_hash, /* tp_hash */
+ range_hash, /* tp_hash */
0, /* tp_call */
0, /* tp_str */
PyObject_GenericGetAttr, /* tp_getattro */