Author: thomas.heller Date: Fri Jan 25 17:58:30 2008 New Revision: 60288 Modified: python/branches/py3k-ctypes-pep3118/Modules/_ctypes/_ctypes.c Log: All ctypes types now use the same CData_GetBuffer function.
Modified: python/branches/py3k-ctypes-pep3118/Modules/_ctypes/_ctypes.c ============================================================================== --- python/branches/py3k-ctypes-pep3118/Modules/_ctypes/_ctypes.c (original) +++ python/branches/py3k-ctypes-pep3118/Modules/_ctypes/_ctypes.c Fri Jan 25 17:58:30 2008 @@ -2318,7 +2318,32 @@ static int CData_GetBuffer(PyObject *_self, Py_buffer *view, int flags) { CDataObject *self = (CDataObject *)_self; - return PyBuffer_FillInfo(view, self->b_ptr, self->b_size, 0, flags); + StgDictObject *dict = PyObject_stgdict(_self); + + if (view == NULL) return 0; + if (((flags & PyBUF_LOCK) == PyBUF_LOCK)) { + PyErr_SetString(PyExc_BufferError, + "Cannot lock this object."); + return -1; + } + + view->buf = self->b_ptr; + view->len = self->b_size; + view->readonly = 0; + view->itemsize = self->b_size; +#if 1 + /* XXX fix later */ + /* use default format character if not set */ + view->format = dict->format ? dict->format : "B"; +#else + view->format = dict->format; +#endif + view->ndim = dict->ndim; + view->shape = dict->shape; + view->strides = NULL; + view->suboffsets = NULL; + view->internal = NULL; + return 0; } static PyBufferProcs CData_as_buffer = { @@ -4403,42 +4428,6 @@ return result; } -static int Simple_GetBuffer(PyObject *_self, Py_buffer *view, int flags) -{ - CDataObject *self = (CDataObject *)_self; - StgDictObject *dict = PyObject_stgdict(_self); - - if (view == NULL) return 0; - if (((flags & PyBUF_LOCK) == PyBUF_LOCK)) { - PyErr_SetString(PyExc_BufferError, - "Cannot lock this object."); - return -1; - } - - view->buf = self->b_ptr; - view->len = self->b_size; - view->readonly = 0; - view->itemsize = self->b_size; -#if 1 - /* XXX fix later */ - /* use default format character if not set */ - view->format = dict->format ? dict->format : "B"; -#else - view->format = dict->format; -#endif - view->ndim = 0; - view->shape = NULL; - view->strides = NULL; - view->suboffsets = NULL; - view->internal = NULL; - return 0; -} - -static PyBufferProcs Simple_as_buffer = { - Simple_GetBuffer, - NULL, -}; - static PyTypeObject Simple_Type = { PyVarObject_HEAD_INIT(NULL, 0) "_ctypes._SimpleCData", @@ -4458,7 +4447,7 @@ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ - &Simple_as_buffer, /* tp_as_buffer */ + &CData_as_buffer, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ "XXX to be provided", /* tp_doc */ (traverseproc)CData_traverse, /* tp_traverse */ _______________________________________________ Python-3000-checkins mailing list Python-3000-checkins@python.org http://mail.python.org/mailman/listinfo/python-3000-checkins