]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Greg Stein: Implement the new bf_getcharbuffer function, indicating
authorGuido van Rossum <guido@python.org>
Thu, 8 Oct 1998 02:18:52 +0000 (02:18 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 8 Oct 1998 02:18:52 +0000 (02:18 +0000)
that (as far as the data type is concerned!) this is character data.

Objects/bufferobject.c
Objects/stringobject.c

index 9be1e43272406521d842376d19edcb5b9a3a807c..091688d677e6dbced1257138a681fee611f3eb35 100644 (file)
@@ -523,7 +523,7 @@ buffer_getreadbuf(self, idx, pp)
 {
        if ( idx != 0 ) {
                PyErr_SetString(PyExc_SystemError,
-                               "Accessing non-existent buffer segment");
+                               "accessing non-existent buffer segment");
                return -1;
        }
        *pp = self->b_ptr;
@@ -554,6 +554,21 @@ buffer_getsegcount(self, lenp)
        return 1;
 }
 
+static int
+buffer_getcharbuf(self, idx, pp)
+       PyBufferObject *self;
+       int idx;
+       const char ** pp;
+{
+       if ( idx != 0 ) {
+               PyErr_SetString(PyExc_SystemError,
+                               "accessing non-existent buffer segment");
+               return -1;
+       }
+       *pp = (const char *)self->b_ptr;
+       return self->b_size;
+}
+
 
 static PySequenceMethods buffer_as_sequence = {
        (inquiry)buffer_length, /*sq_length*/
@@ -569,6 +584,7 @@ static PyBufferProcs buffer_as_buffer = {
        (getreadbufferproc)buffer_getreadbuf,
        (getwritebufferproc)buffer_getwritebuf,
        (getsegcountproc)buffer_getsegcount,
+       (getcharbufferproc)buffer_getcharbuf,
 };
 
 PyTypeObject PyBuffer_Type = {
@@ -592,7 +608,7 @@ PyTypeObject PyBuffer_Type = {
        0,              /*tp_getattro*/
        0,              /*tp_setattro*/
        &buffer_as_buffer,      /*tp_as_buffer*/
-       0,              /*tp_xxx4*/
+       Py_TPFLAGS_DEFAULT,     /*tp_flags*/
        0,              /*tp_doc*/
 };
 
index 648e6e2a486f1d666a8e69485f14a98071451f61..1f1a41b21bdd5e9e629fdca6bb2a8b90ff32da7b 100644 (file)
@@ -465,7 +465,7 @@ string_buffer_getreadbuf(self, index, ptr)
 {
        if ( index != 0 ) {
                PyErr_SetString(PyExc_SystemError,
-                               "Accessing non-existent string segment");
+                               "accessing non-existent string segment");
                return -1;
        }
        *ptr = (void *)self->ob_sval;
@@ -493,6 +493,21 @@ string_buffer_getsegcount(self, lenp)
        return 1;
 }
 
+static int
+string_buffer_getcharbuf(self, index, ptr)
+       PyStringObject *self;
+       int index;
+       const char **ptr;
+{
+       if ( index != 0 ) {
+               PyErr_SetString(PyExc_SystemError,
+                               "accessing non-existent string segment");
+               return -1;
+       }
+       *ptr = self->ob_sval;
+       return self->ob_size;
+}
+
 static PySequenceMethods string_as_sequence = {
        (inquiry)string_length, /*sq_length*/
        (binaryfunc)string_concat, /*sq_concat*/
@@ -507,6 +522,7 @@ static PyBufferProcs string_as_buffer = {
        (getreadbufferproc)string_buffer_getreadbuf,
        (getwritebufferproc)string_buffer_getwritebuf,
        (getsegcountproc)string_buffer_getsegcount,
+       (getcharbufferproc)string_buffer_getcharbuf,
 };
 
 PyTypeObject PyString_Type = {
@@ -530,7 +546,7 @@ PyTypeObject PyString_Type = {
        0,              /*tp_getattro*/
        0,              /*tp_setattro*/
        &string_as_buffer,      /*tp_as_buffer*/
-       0,              /*tp_xxx4*/
+       Py_TPFLAGS_DEFAULT,     /*tp_flags*/
        0,              /*tp_doc*/
 };