in WinAPI each type of handle has it's own type. in Druntime it's all aliased to void*. It currently doesn't match WinAPI.
On Sat, Nov 24, 2012 at 1:21 AM, Walter Bright <[email protected]>wrote: > On 11/23/2012 5:57 AM, Vladimir Panteleev wrote: > >> There might be some incompatibilities, for example due to how the HANDLE >> type is >> declared. In C, you can use either 0 or NULL as a parameter to a function >> accepting an integer or pointer. In D, you cannot. IIRC, some types were >> declared differently in Druntime's modules and in the win32 bindings. >> >> If breaking code were not an issue, the best solution would be to make >> HANDLE a >> unique, opaque type (like a struct wrapping an intptr_t or void*) - which >> is >> exactly how it should be treated. It would need to support >> assignment/creation >> from "null" though. >> > > This is why I don't approve of attempts to "fix" Windows APIs. It winds up > being incompatible here and there, and breaks things. > > We all know what HANDLE should be, but it isn't. The D definition of > HANDLE should match what Microsoft's windows.h declares it as. > > Any attempt to fix APIs to C libraries, etc., should be in a separate > layer that goes on top of the D interface to those APIs. > -- Bye, Gor Gyolchanyan.
