[Python-Dev] Extending types in C - help needed
Thomas Heller
thomas.heller@ion-tof.com
Thu, 17 Jan 2002 20:23:00 +0100
From: "Jack Jansen" <Jack.Jansen@oratrix.nl>
> In the discussion on my request for an ("O@", typeobject,
> void **) format for PyArg_Parse and Py_BuildValue MAL suggested
(as MAL already explained, that we suggested by me)
> that I could get the same functionality by creating a type
> WrapperTypeObject, which would be a subtype of TypeObject with
> extra fields pointing to the _New() and _Convert() routines to
> convert Python objects from/to C pointers. This would be good
> enough for me, because then types wanting to participate in the
> wrapper protocol would subtype WrapperTypeObject in stead of
> TypeObject, and two global routines could return the _New and
> _Convert routines given the type object, and we wouldn't need
> yet another PyArg_Parse format specifier.
>
> However, after digging high and low I haven't been able to
> deduce how I would then use this WrapperType in C as the type
> for my extension module objects. Are there any examples? If not,
> could someone who understands the new inheritance scheme give me
> some clues as to how to do this?
Currently (after quite some time) I have the impression that you
cannot create a subtype of PyType_Type in C because PyType_Type
ends in a variable sized array, at least not in this way:
struct {
PyTypeObject type;
...additional fields...
} WrapperType_Type;
Can someone confirm this?
(I have to find out what to do with the tp_members slot, which seems to be
correspond to the Python level __slots__ class variable)
Thomas