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

Reply via email to