summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-12-03 11:45:13 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-12-03 11:45:13 (GMT)
commit665174834aadddbec4884d2e2673832b10f1a83c (patch)
treea07f7c1360fd1fcf08bc93531bd8d0556c3d8666
parentf9245578c918ee75b2dda0eefb50bd30e41651e7 (diff)
downloadcpython-665174834aadddbec4884d2e2673832b10f1a83c.zip
cpython-665174834aadddbec4884d2e2673832b10f1a83c.tar.gz
cpython-665174834aadddbec4884d2e2673832b10f1a83c.tar.bz2
Remove PyRange_New().
-rw-r--r--Include/rangeobject.h2
-rw-r--r--Misc/NEWS2
-rw-r--r--Objects/rangeobject.c45
3 files changed, 2 insertions, 47 deletions
diff --git a/Include/rangeobject.h b/Include/rangeobject.h
index 50aa061..359bcb6 100644
--- a/Include/rangeobject.h
+++ b/Include/rangeobject.h
@@ -22,8 +22,6 @@ PyAPI_DATA(PyTypeObject) PyRange_Type;
#define PyRange_Check(op) ((op)->ob_type == &PyRange_Type)
-PyAPI_FUNC(PyObject *) PyRange_New(long, long, long, int);
-
#ifdef __cplusplus
}
#endif
diff --git a/Misc/NEWS b/Misc/NEWS
index a1dfa45..32da2f7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,8 @@ Build
C API
-----
+- Removed PyRange_New().
+
Tests
-----
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index dabb8d4..2f5d164 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -9,51 +9,6 @@ typedef struct {
long len;
} rangeobject;
-/* XXX PyRange_New should be deprecated. It's not documented. It's not
- * used in the core. Its error-checking is akin to Swiss cheese: accepts
- * step == 0; accepts len < 0; ignores that (len - 1) * step may overflow;
- * raises a baffling "integer addition" exception if it thinks the last
- * item is "too big"; and doesn't compute whether "last item is too big"
- * correctly even if the multiplication doesn't overflow.
- */
-PyObject *
-PyRange_New(long start, long len, long step, int reps)
-{
- rangeobject *obj;
-
- if (reps != 1) {
- PyErr_SetString(PyExc_ValueError,
- "PyRange_New's 'repetitions' argument must be 1");
- return NULL;
- }
-
- obj = PyObject_New(rangeobject, &PyRange_Type);
- if (obj == NULL)
- return NULL;
-
- if (len == 0) {
- start = 0;
- len = 0;
- step = 1;
- }
- else {
- long last = start + (len - 1) * step;
- if ((step > 0) ?
- (last > (PyInt_GetMax() - step)) :
- (last < (-1 - PyInt_GetMax() - step))) {
- PyErr_SetString(PyExc_OverflowError,
- "integer addition");
- Py_DECREF(obj);
- return NULL;
- }
- }
- obj->start = start;
- obj->len = len;
- obj->step = step;
-
- return (PyObject *) obj;
-}
-
/* Return number of items in range/xrange (lo, hi, step). step > 0
* required. Return a value < 0 if & only if the true value is too
* large to fit in a signed long.