[Python-3000] pre-PEP: Enhancing buffer protocol (tp_as_buffer)

Guido van Rossum guido at python.org
Tue Feb 27 22:18:33 CET 2007


On 2/27/07, Travis E. Oliphant <oliphant.travis at ieee.org> wrote:
> My understanding of this locking mechanism would require objects that
> wish to use it to keep track of how many views they have "exported" and
> refuse to re-allocate memory until the views have all been released.

Right.

> In my understanding this would require the addition of at least one
> integer to the object structure.

Right.

> So, for example, the bytesobject would need to at least add
>
> int ob_views
>
> to its C-structure:
>
> /* Object layout */
> typedef struct {
>      PyObject_VAR_HEAD
>      Py_ssize_t ob_alloc; /* How many bytes allocated */
>      int ob_views; /* Number of views to these bytes */
>      char *ob_bytes;
> } PyBytesObject;
>
> On creation, ob_views would be initialized to 0 and whenever getbuffer
> was called it would increase this number and whenever releasebuffer was
> called it would decrease this number.
>
> Am I missing something here?

I don't think so -- this is exactly what I was thinking of.

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-3000 mailing list