[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dlsym() and C++

Quoting Bert Peers (rat@larian.com):

> I'm not following here.  If you upgrade the *interface* you're
> adding new members, right, so you'll have to know the new
> interface to use it, wether you access it directly or through
> the Query...  Replacing the COM object to have a different
> implementation of the same interface is not really an
> upgrade from the client's point of view, it's rather
> maintenance; if you really want to use new functions you'll
> have to know them, the only difference between native C++
> and COM is that COM allows you to (truly) upgrade
> client and object independetly, typically first a new object,
> then the new client.

Unless you've stopped developing on your library, you'll always get more
class and functions. Let's take a surface in DirectX as an example. First
you have to use CreateSurface a surface from the IDirectDraw object - _then_
you need to do a query interface to get the actual surface interface you
wanted. With DirectX, almost every object now have 3-4 different versions of
the interfaces.
In DirectX, I once remembered doing 5 QueryInterfaces when loading a simple
texture - I don't want the users of ClanLib to experience that nightmare.

Maybe this can be avoided - and maybe DirectX doesn't use COM very well -
but I just don't like what I've seen...

Magnus Norddahl