[Python-Dev] PEP: Adding data-type objects to Python
andorxor at gmx.de
Tue Oct 31 18:31:30 CET 2006
Martin v. Löwis wrote:
> Travis Oliphant schrieb:
>> Function pointers are "supported" with the void data-type and could be
>> more specifically supported if it were important. People typically
>> don't use the buffer protocol to send function-pointers around in a way
>> that the void description wouldn't be enough.
> As I said before, I can't tell whether it's important, as I still don't
> know what the purpose of this PEP is. If it is to support a unification
> of memory layout specifications, and if that unifications is also to
> include ctypes, then yes, it is important. If it is to describe array
> elements in NumArray arrays, then it might not be important.
> For the usage of ctypes, the PEP void type is insufficient to describe
> function pointers: you also need a specification of the signature of
> the function pointer (parameter types and return type), or else you
> can't use the function pointer (i.e. you can't call the function).
The buffer protocol is primarily meant for describing the format of
(large) contiguous pieces of binary data. In most cases that will be all
kinds of numerical data for scientific applications, image and other
media data, simple databases and similar kinds of data.
There is currently no adequate data format type which sufficiently
supports these applications, otherwise Travis wouldn't make this proposal.
While Travis' proposal encompasses the data format functionality within
the struct module and overlaps with what ctypes has to offer, it does
not aim to replace ctypes.
I don't think that a basic data format type necessarily should be able
to encode all the information a foreign function interface needs to call
a code library. From my point of view, that kind of information is one
abstraction layer above a basic data format and should be implemented as
an extension of or complementary to the basic data format.
I also do not understand why the data format type should attempt to
fully describe arbitrarily complex data formats, like fragmented
(non-continuous) data structures in memory. You'd probably need a full
programming language for that anyway.
More information about the Python-Dev