Confused about interfaces in D
Bryan Power
bp2626 at yahoo.com
Thu Oct 2 16:36:55 PDT 2008
Bill Baxter wrote:
>
> When it's derived from IUnknown, a special case put in to support COM
> interfaces on Win32.
> I've not heard anyone voice support for this particular design decision.
> I suppose it's very convenient if you happen to be a COM programmer,
> but I'm not sure why a vendor-specific technology like COM should get
> such special treatment in a language spec.
>
> --bb
Steven Schveighoffer wrote:
> The issue is totally with COM.
>
> Without the requirement for any interface to possibly be a COM interface,
> all interfaces would implicitly inherit from ObjectInterface or some
> interface that always has the functions required in Object defined (e.g.
> toString()).
>>
> But COM objects don't have the same base functions as Object does, so
> interfaces have no required base functions. Making life difficult for those
> who never ever work with COM (and I can't say I blame them, COM sucks).
>
> -Steve
A fair bit of extended API functionality on Windows is presented via
COM. This includes very important API sets like DirectX, which is
implemented via COM. A bonus of COM is that it allows use of the API in
its OOP form in C++ while still allowing the API to be used in
procedural languages like IA32, C and Pascal without any hacks or tricks.
Even Mozilla has their own COM implementation.
While I admit COM can be messy at times, I use it almost daily for my
work, and since I am free to use the languages of my choosing I
generally use D. This interface feature allows me to port COM
definitions from the C/C++ headers to D seamlessly
and quickly:
interface IWbemObjectSink : IUnknown {}
for example.
I am all for the COM compatibility.
More information about the Digitalmars-d-learn
mailing list