on 2/11/05 11:59 AM, Mike Berry at mberry@xxxxxxxxx wrote: > B.J. Buchalter wrote: >> >> But other than the toll-free bridging to C++ on windows and this enforced >> versioning, it is not clear how the other aspects of COM are really helpful >> in this contexts. BTW, I did read the links that have been posted here about >> COM; this has only tended to enhance my perception. >> > > I certainly expect that we can use multiple interfaces on single > objects to our benefit. There are a number of capabilities in the reqs > on both the host and plugin sides which are optional. Each of these > should be isolated into an interface which does not need to be supported > and which the caller uses a query mechanism to determine support. This > should make it easier on developers to sort out the required parts of > GMPI from the optional ones. Ok. This is the part of COM that seems to be really kinda messy to me (multiple disjoint interfaces on one object), and very likely to expose implementation bugs due to the requirements on reference counting the interfaces and the object (cf. the COM cookbook URL that Vincent posted in his last post to this list). I sort of like the concept of COM interfaces providing factories for optional objects that provide the optional interfaces. This way, you only have one disjoint interface per object type; interfaces can be extended by adding a new UUID for the extended interface that adds to the existing interface. This way, the object only needs to maintain one vtable per object, and does not need to thunk the object pointer for each interface. Or was I so dazed by the apparent complexity of implementing multiple interfaces on one object that I am missing something simple? > I also think that there are potentially some benefits to the using COM > objects at smaller scope than the whole plugin. For instance, I'm not > sure how we are going to work out the tempo queries from plugin to host > (and I'm not suggesting talking about it now, simply digging for an > example), but the host might give the plugin a COM object which can be > used to query for tempo information. In some hosts, this might simply be > an interface to the host itself, but in other hosts it might be a > smaller object. The big advantage here is that the host can then attach > its own information to the object, without having to write a new > mechanism to support this. This makes sense to me. Best regards, B.J. Buchalter Metric Halo 5 Donovan Drive Hopewell Junction, NY 12533 USA tel +1 845 223-6112 fax +1 603 250-2451 ---------------------------------------------------------------------- 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