I just checked in the first cut at interface flattening for PyXPCOM. This has been done as per the discussions on the Python XPCOM mailing list a few weeks ago. There is no differentiation between "flat" objects and "non-flat" objects. Thus, "QueryInterface()" is generally not needed, but when used returns "self". In a nutshell, it "just works". You do not need to specifiy an IID when using "createInstance()", and you should never need to call QueryInterface() - you can just create (or be handed) an XPCOM object, and use it to your heart's content. The test suite passes, including new "flat" specific tests. ActiveState's Komodo also appears to work fine (which is a good sign :) Interestingly, this version is slightly faster than the old non-flat version! It looks like I just made the Mozilla 0.9.1 tree. However, I still have not integrated the Linux build process with Mozilla's. This is my next step. The source can be found in the Mozilla tree under mozilla/extensions/python/xpcom, including documentation. The Python XPCOM mailing list is at http://listserv.ActiveState.com/mailman/listinfo/pyxpcom Enjoy! Mark.
