On Wednesday, February 6, 2002, at 09:53 PM, Thomas Heller wrote:
A better solution is to store additional information in the __dict__.
You loose nice features: access these (new) slots from Python by providing tp_members entries for them (for example).
Martin pointed at a way to solve this. And I think that with my proposed API (... where is it..., ah yes, found it) void PyType_SetAnnotation(PyTypeObject *tp, char *name, void *unique, void *); void *PyType_GetAnnotation(PyTypeObject *tp, char *name, void *unique);
it would be almost as easy to use as a tp_ slot. The only thing needed to make it 100% safe is a registry for name/descr pairs. (Actually the API is changed a little since I understand how the second arg works)
For the benefit of whoever missed the previous thread: name is used as the key into the dictionary, and unique is a pointer stored with the entry, which assures that this entry hasn't been used for something else accidentally.
So in stead of a new slot tp_foo what you would need to do is come up with a name ("tp_foo" comes to mind) and a global variable whose address can be used for unique. -- - Jack Jansen Jack.Jansen@oratrix.com http://www.cwi.nl/~jack - - If I can't dance I don't want to be part of your revolution -- Emma Goldman -