[gmpi] Re: COM was: low level API - Abstract Factory summary

  • From: Paul Davis <paul@xxxxxxxxxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Fri, 11 Feb 2005 14:03:00 -0500

>       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

Other related posts: