diff options
author | Benjamin Peterson <benjamin@python.org> | 2008-07-31 16:23:04 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2008-07-31 16:23:04 (GMT) |
commit | d63137159b0e0cdbaec5d4cb98b3de5940173ee3 (patch) | |
tree | af0338eee39149f2fd7cdff45a71aaa7ba79eaf5 /Modules | |
parent | 76b09ca89a1e712a7b3732e3640df54bb29eff35 (diff) | |
download | cpython-d63137159b0e0cdbaec5d4cb98b3de5940173ee3.zip cpython-d63137159b0e0cdbaec5d4cb98b3de5940173ee3.tar.gz cpython-d63137159b0e0cdbaec5d4cb98b3de5940173ee3.tar.bz2 |
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r65209 | raymond.hettinger | 2008-07-23 19:08:18 -0500 (Wed, 23 Jul 2008) | 1 line
Finish-up the partial conversion from int to Py_ssize_t for deque indices and length.
........
r65210 | raymond.hettinger | 2008-07-23 19:53:49 -0500 (Wed, 23 Jul 2008) | 1 line
Parse to the correct datatype.
........
r65211 | benjamin.peterson | 2008-07-23 21:27:46 -0500 (Wed, 23 Jul 2008) | 1 line
fix spacing
........
r65212 | benjamin.peterson | 2008-07-23 21:31:28 -0500 (Wed, 23 Jul 2008) | 1 line
fix markup
........
r65213 | benjamin.peterson | 2008-07-23 21:45:37 -0500 (Wed, 23 Jul 2008) | 1 line
add some documentation for 2to3
........
r65214 | raymond.hettinger | 2008-07-24 00:38:48 -0500 (Thu, 24 Jul 2008) | 1 line
Finish conversion from int to Py_ssize_t.
........
r65215 | raymond.hettinger | 2008-07-24 02:04:55 -0500 (Thu, 24 Jul 2008) | 1 line
Convert from long to Py_ssize_t.
........
r65216 | georg.brandl | 2008-07-24 02:09:21 -0500 (Thu, 24 Jul 2008) | 2 lines
Fix indentation.
........
r65225 | benjamin.peterson | 2008-07-25 11:55:37 -0500 (Fri, 25 Jul 2008) | 1 line
teach .bzrignore about doc tools
........
r65226 | benjamin.peterson | 2008-07-25 12:02:11 -0500 (Fri, 25 Jul 2008) | 1 line
document default value for fillvalue
........
r65233 | raymond.hettinger | 2008-07-25 13:43:33 -0500 (Fri, 25 Jul 2008) | 1 line
Issue 1592: Better error reporting for operations on closed shelves.
........
r65239 | benjamin.peterson | 2008-07-25 16:59:53 -0500 (Fri, 25 Jul 2008) | 1 line
fix indentation
........
r65246 | andrew.kuchling | 2008-07-26 08:08:19 -0500 (Sat, 26 Jul 2008) | 1 line
This sentence continues to bug me; rewrite it for the second time
........
r65247 | andrew.kuchling | 2008-07-26 08:09:06 -0500 (Sat, 26 Jul 2008) | 1 line
Remove extra words
........
r65255 | skip.montanaro | 2008-07-26 19:49:02 -0500 (Sat, 26 Jul 2008) | 3 lines
Close issue 3437 - missing state change when Allow lines are processed.
Adds test cases which use Allow: as well.
........
r65256 | skip.montanaro | 2008-07-26 19:50:41 -0500 (Sat, 26 Jul 2008) | 2 lines
note robotparser bug fix.
........
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_bisectmodule.c | 46 | ||||
-rw-r--r-- | Modules/_collectionsmodule.c | 49 |
2 files changed, 48 insertions, 47 deletions
diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c index bf47feb..b84509b 100644 --- a/Modules/_bisectmodule.c +++ b/Modules/_bisectmodule.c @@ -5,7 +5,7 @@ Converted to C by Dmitry Vasiliev (dima at hlabs.spb.ru). #include "Python.h" -static int +static Py_ssize_t internal_bisect_right(PyObject *list, PyObject *item, Py_ssize_t lo, Py_ssize_t hi) { PyObject *litem; @@ -41,18 +41,18 @@ static PyObject * bisect_right(PyObject *self, PyObject *args, PyObject *kw) { PyObject *list, *item; - int lo = 0; - int hi = -1; - int index; + Py_ssize_t lo = 0; + Py_ssize_t hi = -1; + Py_ssize_t index; static char *keywords[] = {"a", "x", "lo", "hi", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:bisect_right", + if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:bisect_right", keywords, &list, &item, &lo, &hi)) return NULL; index = internal_bisect_right(list, item, lo, hi); if (index < 0) return NULL; - return PyLong_FromLong(index); + return PyLong_FromSsize_t(index); } PyDoc_STRVAR(bisect_right_doc, @@ -71,12 +71,12 @@ static PyObject * insort_right(PyObject *self, PyObject *args, PyObject *kw) { PyObject *list, *item, *result; - int lo = 0; - int hi = -1; - int index; + Py_ssize_t lo = 0; + Py_ssize_t hi = -1; + Py_ssize_t index; static char *keywords[] = {"a", "x", "lo", "hi", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:insort_right", + if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:insort_right", keywords, &list, &item, &lo, &hi)) return NULL; index = internal_bisect_right(list, item, lo, hi); @@ -86,7 +86,7 @@ insort_right(PyObject *self, PyObject *args, PyObject *kw) if (PyList_Insert(list, index, item) < 0) return NULL; } else { - result = PyObject_CallMethod(list, "insert", "iO", + result = PyObject_CallMethod(list, "insert", "nO", index, item); if (result == NULL) return NULL; @@ -106,11 +106,11 @@ If x is already in a, insert it to the right of the rightmost x.\n\ Optional args lo (default 0) and hi (default len(a)) bound the\n\ slice of a to be searched.\n"); -static int -internal_bisect_left(PyObject *list, PyObject *item, int lo, int hi) +static Py_ssize_t +internal_bisect_left(PyObject *list, PyObject *item, Py_ssize_t lo, Py_ssize_t hi) { PyObject *litem; - int mid, res; + Py_ssize_t mid, res; if (lo < 0) { PyErr_SetString(PyExc_ValueError, "lo must be non-negative"); @@ -142,18 +142,18 @@ static PyObject * bisect_left(PyObject *self, PyObject *args, PyObject *kw) { PyObject *list, *item; - int lo = 0; - int hi = -1; - int index; + Py_ssize_t lo = 0; + Py_ssize_t hi = -1; + Py_ssize_t index; static char *keywords[] = {"a", "x", "lo", "hi", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:bisect_left", + if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:bisect_left", keywords, &list, &item, &lo, &hi)) return NULL; index = internal_bisect_left(list, item, lo, hi); if (index < 0) return NULL; - return PyLong_FromLong(index); + return PyLong_FromSsize_t(index); } PyDoc_STRVAR(bisect_left_doc, @@ -172,12 +172,12 @@ static PyObject * insort_left(PyObject *self, PyObject *args, PyObject *kw) { PyObject *list, *item, *result; - int lo = 0; - int hi = -1; - int index; + Py_ssize_t lo = 0; + Py_ssize_t hi = -1; + Py_ssize_t index; static char *keywords[] = {"a", "x", "lo", "hi", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|ii:insort_left", + if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:insort_left", keywords, &list, &item, &lo, &hi)) return NULL; index = internal_bisect_left(list, item, lo, hi); diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 2327cf5..1763efe 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -52,20 +52,20 @@ typedef struct BLOCK { } block; #define MAXFREEBLOCKS 10 -static int numfreeblocks = 0; +static Py_ssize_t numfreeblocks = 0; static block *freeblocks[MAXFREEBLOCKS]; static block * -newblock(block *leftlink, block *rightlink, int len) { +newblock(block *leftlink, block *rightlink, Py_ssize_t len) { block *b; - /* To prevent len from overflowing INT_MAX on 64-bit machines, we + /* To prevent len from overflowing PY_SSIZE_T_MAX on 64-bit machines, we * refuse to allocate new blocks if the current len is dangerously * close. There is some extra margin to prevent spurious arithmetic * overflows at various places. The following check ensures that * the blocks allocated to the deque, in the worst case, can only - * have INT_MAX-2 entries in total. + * have PY_SSIZE_T_MAX-2 entries in total. */ - if (len >= INT_MAX - 2*BLOCKLEN) { + if (len >= PY_SSIZE_T_MAX - 2*BLOCKLEN) { PyErr_SetString(PyExc_OverflowError, "cannot add more blocks to the deque"); return NULL; @@ -100,10 +100,10 @@ typedef struct { PyObject_HEAD block *leftblock; block *rightblock; - int leftindex; /* in range(BLOCKLEN) */ - int rightindex; /* in range(BLOCKLEN) */ - int len; - int maxlen; + Py_ssize_t leftindex; /* in range(BLOCKLEN) */ + Py_ssize_t rightindex; /* in range(BLOCKLEN) */ + Py_ssize_t len; + Py_ssize_t maxlen; long state; /* incremented whenever the indices move */ PyObject *weakreflist; /* List of weak references */ } dequeobject; @@ -355,7 +355,7 @@ PyDoc_STRVAR(extendleft_doc, static int _deque_rotate(dequeobject *deque, Py_ssize_t n) { - int i, len=deque->len, halflen=(len+1)>>1; + Py_ssize_t i, len=deque->len, halflen=(len+1)>>1; PyObject *item, *rv; if (len == 0) @@ -392,9 +392,9 @@ _deque_rotate(dequeobject *deque, Py_ssize_t n) static PyObject * deque_rotate(dequeobject *deque, PyObject *args) { - int n=1; + Py_ssize_t n=1; - if (!PyArg_ParseTuple(args, "|i:rotate", &n)) + if (!PyArg_ParseTuple(args, "|n:rotate", &n)) return NULL; if (_deque_rotate(deque, n) == 0) Py_RETURN_NONE; @@ -462,11 +462,11 @@ deque_clear(dequeobject *deque) } static PyObject * -deque_item(dequeobject *deque, int i) +deque_item(dequeobject *deque, Py_ssize_t i) { block *b; PyObject *item; - int n, index=i; + Py_ssize_t n, index=i; if (i < 0 || i >= deque->len) { PyErr_SetString(PyExc_IndexError, @@ -591,11 +591,11 @@ deque_traverse(dequeobject *deque, visitproc visit, void *arg) { block *b; PyObject *item; - int index; - int indexlo = deque->leftindex; + Py_ssize_t index; + Py_ssize_t indexlo = deque->leftindex; for (b = deque->leftblock; b != NULL; b = b->rightlink) { - const int indexhi = b == deque->rightblock ? + const Py_ssize_t indexhi = b == deque->rightblock ? deque->rightindex : BLOCKLEN - 1; @@ -637,12 +637,12 @@ deque_reduce(dequeobject *deque) if (deque->maxlen == -1) result = Py_BuildValue("O(O)", Py_TYPE(deque), aslist); else - result = Py_BuildValue("O(Oi)", Py_TYPE(deque), aslist, deque->maxlen); + result = Py_BuildValue("O(On)", Py_TYPE(deque), aslist, deque->maxlen); } else { if (deque->maxlen == -1) result = Py_BuildValue("O(OO)O", Py_TYPE(deque), aslist, Py_None, dict); else - result = Py_BuildValue("O(Oi)O", Py_TYPE(deque), aslist, deque->maxlen, dict); + result = Py_BuildValue("O(On)O", Py_TYPE(deque), aslist, deque->maxlen, dict); } Py_XDECREF(dict); Py_DECREF(aslist); @@ -683,7 +683,8 @@ static PyObject * deque_richcompare(PyObject *v, PyObject *w, int op) { PyObject *it1=NULL, *it2=NULL, *x, *y; - int b, vs, ws, cmp=-1; + Py_ssize_t vs, ws; + int b, cmp=-1; if (!PyObject_TypeCheck(v, &deque_type) || !PyObject_TypeCheck(w, &deque_type)) { @@ -762,13 +763,13 @@ deque_init(dequeobject *deque, PyObject *args, PyObject *kwdargs) { PyObject *iterable = NULL; PyObject *maxlenobj = NULL; - int maxlen = -1; + Py_ssize_t maxlen = -1; char *kwlist[] = {"iterable", "maxlen", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwdargs, "|OO:deque", kwlist, &iterable, &maxlenobj)) return -1; if (maxlenobj != NULL && maxlenobj != Py_None) { - maxlen = PyLong_AsLong(maxlenobj); + maxlen = PyLong_AsSsize_t(maxlenobj); if (maxlen == -1 && PyErr_Occurred()) return -1; if (maxlen < 0) { @@ -884,11 +885,11 @@ static PyTypeObject deque_type = { typedef struct { PyObject_HEAD - int index; + Py_ssize_t index; block *b; dequeobject *deque; long state; /* state when the iterator is created */ - int counter; /* number of items remaining for iteration */ + Py_ssize_t counter; /* number of items remaining for iteration */ } dequeiterobject; static PyTypeObject dequeiter_type; |