[Python-Dev] Re: [Python-checkins] CVS: python/dist/src/Modules xxsubtype.c,2.9,2.10 (original) (raw)

Guido van Rossum guido@python.org
Mon, 17 Dec 2001 09:08:31 -0500


[Tim]

> Log Message: > David Abrahams tried to compile this as a separate DLL under MSVC, and > got a barrage of compile errors that didn't make sense to the C++ brain: > MSVC does not allow C (but does allow C++) initializers to contain > data addresses supplied by other DLLs. So changed the initializers here > to use dummy nulls, and changed module init to plug in the foreign > addresses at runtime (manually simulating what C++ does by magic). Tested > on Windows, and Guido tested on Linux (thanks!). BTW, the point is that > people are going to use this module as a template for writing their own > subtypes, and it's unusual for extension authors to build their extensions > into Python directly (separate DLLs are the norm on Windows); so it's > better if we give them a template that works .

[MAL]

This is a common problem when compiling Windows extensions. Perhaps we should provide some more generic way to help the extension writers here ?! FWIW, I'm using this macro for doing the deferred type init:

_#define PyTypeInit(x) _ _{ _ _x.obtype = &PyTypeType; _ }

Hm, alternatively, we could put a statement in PyType_Ready() that initializes ob_type if it's NULL -- then we'd encourage people to call PyType_Ready(), which is a good idea anyway.

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