summaryrefslogtreecommitdiff
path: root/Objects/bufferobject.c
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2007-08-30 22:57:53 +0000
committerThomas Wouters <thomas@python.org>2007-08-30 22:57:53 +0000
commitd2cf20eea2338a0369d4a5707adb01b201f7dfb2 (patch)
tree59fd4a094906997ae2b0cd520ff09010457da680 /Objects/bufferobject.c
parent582b5866174d20f7c027cbb6fb757fefb382f96f (diff)
downloadcpython-git-d2cf20eea2338a0369d4a5707adb01b201f7dfb2.tar.gz
Remove the simple slicing API. All slicing is now done with slice objects.
Diffstat (limited to 'Objects/bufferobject.c')
-rw-r--r--Objects/bufferobject.c82
1 files changed, 2 insertions, 80 deletions
diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c
index d3464c17be..d697d26c32 100644
--- a/Objects/bufferobject.c
+++ b/Objects/bufferobject.c
@@ -465,28 +465,6 @@ buffer_item(PyBufferObject *self, Py_ssize_t idx)
}
static PyObject *
-buffer_slice(PyBufferObject *self, Py_ssize_t left, Py_ssize_t right)
-{
- PyObject *ob;
- PyBuffer view;
- if (!get_buf(self, &view, PyBUF_SIMPLE))
- return NULL;
- if (left < 0)
- left = 0;
- if (right < 0)
- right = 0;
- if (right > view.len)
- right = view.len;
- if (right < left)
- right = left;
- /* XXX(nnorwitz): is it possible to access unitialized memory? */
- ob = PyBytes_FromStringAndSize((char *)view.buf + left,
- right - left);
- PyObject_ReleaseBuffer((PyObject *)self, &view);
- return ob;
-}
-
-static PyObject *
buffer_subscript(PyBufferObject *self, PyObject *item)
{
PyBuffer view;
@@ -605,62 +583,6 @@ buffer_ass_item(PyBufferObject *self, Py_ssize_t idx, PyObject *other)
}
static int
-buffer_ass_slice(PyBufferObject *self, Py_ssize_t left, Py_ssize_t right,
- PyObject *other)
-{
- PyBufferProcs *pb;
- PyBuffer v1, v2;
- Py_ssize_t slice_len;
-
- pb = other ? other->ob_type->tp_as_buffer : NULL;
- if (pb == NULL ||
- pb->bf_getbuffer == NULL) {
- PyErr_BadArgument();
- return -1;
- }
- if (!get_buf(self, &v1, PyBUF_SIMPLE))
- return -1;
-
- if (self->b_readonly || v1.readonly) {
- PyErr_SetString(PyExc_TypeError,
- "buffer is read-only");
- PyObject_ReleaseBuffer((PyObject *)self, &v1);
- return -1;
- }
-
- if ((*pb->bf_getbuffer)(other, &v2, PyBUF_SIMPLE) < 0) {
- PyObject_ReleaseBuffer((PyObject *)self, &v1);
- return -1;
- }
-
- if (left < 0)
- left = 0;
- else if (left > v1.len)
- left = v1.len;
- if (right < left)
- right = left;
- else if (right > v1.len)
- right = v1.len;
- slice_len = right - left;
-
- if (v2.len != slice_len) {
- PyErr_SetString(
- PyExc_TypeError,
- "right operand length must match slice length");
- PyObject_ReleaseBuffer((PyObject *)self, &v1);
- PyObject_ReleaseBuffer(other, &v2);
- return -1;
- }
-
- if (slice_len)
- memcpy((char *)v1.buf + left, v2.buf, slice_len);
-
- PyObject_ReleaseBuffer((PyObject *)self, &v1);
- PyObject_ReleaseBuffer(other, &v2);
- return 0;
-}
-
-static int
buffer_ass_subscript(PyBufferObject *self, PyObject *item, PyObject *value)
{
PyBuffer v1;
@@ -743,9 +665,9 @@ static PySequenceMethods buffer_as_sequence = {
(binaryfunc)buffer_concat, /*sq_concat*/
(ssizeargfunc)buffer_repeat, /*sq_repeat*/
(ssizeargfunc)buffer_item, /*sq_item*/
- (ssizessizeargfunc)buffer_slice, /*sq_slice*/
+ 0, /*sq_slice*/
(ssizeobjargproc)buffer_ass_item, /*sq_ass_item*/
- (ssizessizeobjargproc)buffer_ass_slice, /*sq_ass_slice*/
+ 0, /*sq_ass_slice*/
};
static PyMappingMethods buffer_as_mapping = {