> At the heart, all you are doing is grouping functionality for similar >function pointers into discrete structs, with a mechanism to allow for >some groups to be absent. This is nice for the API, in that things are >logically associated, and optional items are clearly separated. Plus, >later expansion does not wreak havoc on the whole organizational system. I like this description very much, and it makes the object-broker model represented by COM/CORBA and a few others suddenly seem attractive, some 15 years after I first heard of the idea and turned blue :) I was a little confused because I thought that the QueryInterface method was used to lookup specific function pointers, rather than groups of function pointers. Your email now makes this clear, and also connects COM back to more generic programming methodologies that to make people like feel more comfortable. I think this is a very nice design, and other than naming issues, would be very happy to see us use this for GMPI. What remains is the question of whether we try to do it in a way that is actually 100% compatible with COM across the platforms on which COM exists, or whether we use the general idea. I have no particular problem with the first goal, as long as fulfilling it does not require kludges, compiler-specific hacks etc. I do not think that we should be worrying about C++ compatability. Modern C++ compilers have RTTI which is equally powerful and works across all compilers. If you want to know if InstanceOfFoo is also an InstanceOfBar: if (dynamic_cast<Bar*>(&InstanceOfFoo) != 0) { /* its a Foo and a Bar */ } else { /* its a Foo, but its not a Bar */ } So lets just try to focus on the C side of this, and leave the C++ for later consideration. I would much rather use language features for this kind of thing where they exist; for C, they clearly do not, so a COM or COM-like model makes sense. --p ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe