[Python-checkins] CVS: python/dist/src/Objects abstract.c,2.91,2.92
Jeremy Hylton
jhylton@users.sourceforge.net
Fri, 09 Nov 2001 13:59:44 -0800
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv11615
Modified Files:
abstract.c
Log Message:
Add PyObject_CheckReadBuffer(), which returns true if its argument
supports the single-segment readable buffer interface.
Add documentation for this and other PyObject_XXXBuffer() calls.
Index: abstract.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/abstract.c,v
retrieving revision 2.91
retrieving revision 2.92
diff -C2 -d -r2.91 -r2.92
*** abstract.c 2001/11/01 20:26:12 2.91
--- abstract.c 2001/11/09 21:59:42 2.92
***************
*** 183,207 ****
}
pb = obj->ob_type->tp_as_buffer;
! if ( pb == NULL ||
pb->bf_getcharbuffer == NULL ||
! pb->bf_getsegcount == NULL ) {
PyErr_SetString(PyExc_TypeError,
"expected a character buffer object");
! goto onError;
}
! if ( (*pb->bf_getsegcount)(obj,NULL) != 1 ) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! goto onError;
}
! len = (*pb->bf_getcharbuffer)(obj,0,&pp);
if (len < 0)
! goto onError;
*buffer = pp;
*buffer_len = len;
return 0;
! onError:
! return -1;
}
--- 183,217 ----
}
pb = obj->ob_type->tp_as_buffer;
! if (pb == NULL ||
pb->bf_getcharbuffer == NULL ||
! pb->bf_getsegcount == NULL) {
PyErr_SetString(PyExc_TypeError,
"expected a character buffer object");
! return -1;
}
! if ((*pb->bf_getsegcount)(obj,NULL) != 1) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! return -1;
}
! len = (*pb->bf_getcharbuffer)(obj, 0, &pp);
if (len < 0)
! return -1;
*buffer = pp;
*buffer_len = len;
return 0;
+ }
! int
! PyObject_CheckReadBuffer(PyObject *obj)
! {
! PyBufferProcs *pb = obj->ob_type->tp_as_buffer;
!
! if (pb == NULL ||
! pb->bf_getreadbuffer == NULL ||
! pb->bf_getsegcount == NULL ||
! (*pb->bf_getsegcount)(obj, NULL) != 1)
! return 0;
! return 1;
}
***************
*** 219,243 ****
}
pb = obj->ob_type->tp_as_buffer;
! if ( pb == NULL ||
pb->bf_getreadbuffer == NULL ||
! pb->bf_getsegcount == NULL ) {
PyErr_SetString(PyExc_TypeError,
"expected a readable buffer object");
! goto onError;
}
! if ( (*pb->bf_getsegcount)(obj,NULL) != 1 ) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! goto onError;
}
! len = (*pb->bf_getreadbuffer)(obj,0,&pp);
if (len < 0)
! goto onError;
*buffer = pp;
*buffer_len = len;
return 0;
-
- onError:
- return -1;
}
--- 229,250 ----
}
pb = obj->ob_type->tp_as_buffer;
! if (pb == NULL ||
pb->bf_getreadbuffer == NULL ||
! pb->bf_getsegcount == NULL) {
PyErr_SetString(PyExc_TypeError,
"expected a readable buffer object");
! return -1;
}
! if ((*pb->bf_getsegcount)(obj, NULL) != 1) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! return -1;
}
! len = (*pb->bf_getreadbuffer)(obj, 0, &pp);
if (len < 0)
! return -1;
*buffer = pp;
*buffer_len = len;
return 0;
}
***************
*** 255,279 ****
}
pb = obj->ob_type->tp_as_buffer;
! if ( pb == NULL ||
pb->bf_getwritebuffer == NULL ||
! pb->bf_getsegcount == NULL ) {
PyErr_SetString(PyExc_TypeError,
"expected a writeable buffer object");
! goto onError;
}
! if ( (*pb->bf_getsegcount)(obj,NULL) != 1 ) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! goto onError;
}
len = (*pb->bf_getwritebuffer)(obj,0,&pp);
if (len < 0)
! goto onError;
*buffer = pp;
*buffer_len = len;
return 0;
-
- onError:
- return -1;
}
--- 262,283 ----
}
pb = obj->ob_type->tp_as_buffer;
! if (pb == NULL ||
pb->bf_getwritebuffer == NULL ||
! pb->bf_getsegcount == NULL) {
PyErr_SetString(PyExc_TypeError,
"expected a writeable buffer object");
! return -1;
}
! if ((*pb->bf_getsegcount)(obj, NULL) != 1) {
PyErr_SetString(PyExc_TypeError,
"expected a single-segment buffer object");
! return -1;
}
len = (*pb->bf_getwritebuffer)(obj,0,&pp);
if (len < 0)
! return -1;
*buffer = pp;
*buffer_len = len;
return 0;
}
***************
*** 1981,1985 ****
if (PySequence_Check(o))
return PySeqIter_New(o);
! PyErr_SetString(PyExc_TypeError, "iteration over non-sequence");
return NULL;
}
--- 1985,1990 ----
if (PySequence_Check(o))
return PySeqIter_New(o);
! PyErr_SetString(PyExc_TypeError,
! "iteration over non-sequence");
return NULL;
}
***************
*** 2022,2023 ****
--- 2027,2029 ----
return result;
}
+