On Saturday, 24 November 2012 at 07:23:18 UTC, Walter Bright
wrote:
On 11/23/2012 5:06 PM, Vladimir Panteleev wrote:
On Friday, 23 November 2012 at 21:21:49 UTC, Walter Bright
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.
I don't think I follow the logic of this argument.
Because if we take on the task of "fixing" Windows APIs, then
we also take on the task of documenting them, supporting them,
educating people about them, and invalidating the river of
documentation that already exists on how to program via the
Windows APIs.
I don't think strong typing for HANDLE affects any of the above.
I believe all MS examples use casts for clarification of intent
even when the conversion would've been implicit.