Ugly dclipper winapi_check hack
Francois Gouget
fgouget at free.fr
Wed Apr 20 09:28:38 CDT 2005
On Wed, 20 Apr 2005, Vincent Béron wrote:
[...]
>> If anyone has an idea for a better fix (or if you know of other APIs
>> that should have the same problem) I'm all ears as I don't like this
>> solution much.
>
> If you're heading that way (a bit of spring cleaning of winapi_check),
> could you also look at how it thinks api names are unique? It complains
> about ValidateVertexShader (in d3d8 and d3d9), but that function takes 1
> arg in d3d8 and 2 in d3d9. I'm not sure if it read one of the spec file
> before the other or what.
I had a look in this area in the past but it's really complex so I don't
think I'll tackle it. I'll just tweak Wine and winapi_check to reduce
the size of the winapi_check output so it's less overwhelming.
Here are some of the winapi_check shortcomings in case someone is
interested in fixing them:
1) Type handling is wrong and this messes up the generated.c conformance
tests. In particular there is no way to handle structs or unions nested
inside a struct. This means these structures cannot be tested and that's
a lot of them :-(
2) It does not find the implementation of functions declared with the
DEFINE_REGS_ENTRYPOINT macro (e.g. MSVCRT__setjmp, _alloca_probe).
3) ValidateVertexShader() shows a problem with module matching because
it has different prototypes in DirectX8 and DirectX9.
4) It gets easily confused when checking the documentation. Fortunately
this can usually be fixed by adding empty but 'proper' documentation
comments. However some errors, like the riched20 and richedit DllMain
errors, are pretty mysterious.
I have roughly sorted these issues in their order of importance (in my
view). In particular, fixing issue 1 would make it possible to add tests
for a lot more types and make sure our structures have the right
packing, that each field has the right size and is at the right offset.
All these new tests would also exercise the compatibility of our headers
with the Platform SDK ones. So if you have perl skills I think this is a
good (if complex) issue to tackle.
--
Francois Gouget fgouget at free.fr http://fgouget.free.fr/
There are 10 types of people in the world...
those who understand binary and those who don't.
More information about the wine-devel
mailing list