unknwn.h: unknwn.idl
Boaz Harrosh
boaz at hishome.net
Thu Jan 1 07:45:22 CST 2004
Robert Shearman wrote:
>>-----Original Message-----
>>From: Ove Kaaven [mailto:ovek at arcticnet.no]
>>Sent: 01 January 2004 01:34
>>To: Robert Shearman
>>Cc: Boaz Harrosh; wine-devel at winehq.org
>>Subject: RE: unknwn.h: unknwn.idl
>>
>>You can't use cpp_quote inside an interface definition.
>>
>>
>
>True, but you can use cpp_quote to disable interface generation using
>cpp_quote("#if 0") ... cpp_quote("#endif"). This is how Microsoft do it with
>their unknwn.idl.
>
>
>
point taken I'll have a look.
But that means two things:
1) At .h file we have Dead C++ code with no use, then another c++ code
duplicating most of the other code.
2) The code is duplicated any way. What is the difference if it is
duplicated in two different files (.h & .idl) or if it is duplicated
inside the same file? In any way it will have to be maintained by hand.
One in MIDL syntax and one in C++ syntax. ( with cpp_quote( .. ) around
it ).
And all that for something that will never change ( :) ) I go for change
the makefile.
By the way.
some thing funny. In MS headers from VC6 they do not have that thing in
the .idl file at all. And the .h file is hand crafted.
In one of the SDKs (the one I have) they have above solution but the
supplied Header is not the result of that idl file. It looks like: Here
is the header but if you accidentally compile the idl it will give you
some ugly brother that works too.
>>Apparently, MS didn't solve that problem, so widl hasn't either.
>>
>>
>
>Microsoft caused the problem. What is the point of creating this automatic
>QueryInterface function? Is it that hard to pass in a matching IID with your
>interface pointer?
>
>
Well, Personally I like it. One less thing That I can screw up. Either
it matches or it does not compile. I let the compiler do my job any day.
Any way ATL will not compile with out it. And it cannot be fixed either.
because a long chain of definitions relay at that chip of information
been carried by the compiler down 5 layers of code.
Look at it this way. One MS programmer hard codes COM in C the other one
in ATL. Which one will finish first? Well the second one wrote IE.
(I know bad example on purpose :) )
More information about the wine-devel
mailing list