Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 23695:6266f1bd1ab9 legacy-trunk
Skip Montanaro's patch, SF 559833, exposing xrange type in builtins.
Also, added more regression tests to cover the new type and test its
conformity with range().
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Wed, 05 Jun 2002 23:12:45 +0000 |
| parents | ed007e47b3a1 |
| children | ed1ba37a46b7 |
line wrap: on
line diff
--- a/Python/bltinmodule.c Wed Jun 05 22:31:57 2002 +0000 +++ b/Python/bltinmodule.c Wed Jun 05 23:12:45 2002 +0000 @@ -1365,48 +1365,6 @@ static PyObject * -builtin_xrange(PyObject *self, PyObject *args) -{ - long ilow = 0, ihigh = 0, istep = 1; - long n; - - if (PyTuple_Size(args) <= 1) { - if (!PyArg_ParseTuple(args, - "l;xrange() requires 1-3 int arguments", - &ihigh)) - return NULL; - } - else { - if (!PyArg_ParseTuple(args, - "ll|l;xrange() requires 1-3 int arguments", - &ilow, &ihigh, &istep)) - return NULL; - } - if (istep == 0) { - PyErr_SetString(PyExc_ValueError, "xrange() arg 3 must not be zero"); - return NULL; - } - if (istep > 0) - n = get_len_of_range(ilow, ihigh, istep); - else - n = get_len_of_range(ihigh, ilow, -istep); - if (n < 0) { - PyErr_SetString(PyExc_OverflowError, - "xrange() result has too many items"); - return NULL; - } - return PyRange_New(ilow, n, istep, 1); -} - -static char xrange_doc[] = -"xrange([start,] stop[, step]) -> xrange object\n\ -\n\ -Like range(), but instead of returning a list, returns an object that\n\ -generates the numbers in the range on demand. This is slightly slower\n\ -than range() but more memory efficient."; - - -static PyObject * builtin_raw_input(PyObject *self, PyObject *args) { PyObject *v = NULL; @@ -1860,7 +1818,6 @@ {"unichr", builtin_unichr, METH_VARARGS, unichr_doc}, #endif {"vars", builtin_vars, METH_VARARGS, vars_doc}, - {"xrange", builtin_xrange, METH_VARARGS, xrange_doc}, {"zip", builtin_zip, METH_VARARGS, zip_doc}, {NULL, NULL}, }; @@ -1909,6 +1866,7 @@ SETBUILTIN("super", &PySuper_Type); SETBUILTIN("tuple", &PyTuple_Type); SETBUILTIN("type", &PyType_Type); + SETBUILTIN("xrange", &PyRange_Type); /* Note that open() is just an alias of file(). */ SETBUILTIN("open", &PyFile_Type);
