WinAPI for druntime and OpenGL for deimos.

Paulo Pinto pjmlp at progtools.org
Fri Nov 23 09:08:11 PST 2012


Am 23.11.2012 15:03, schrieb Gor Gyolchanyan:
> That's exactly how the original WinAPI does it. All handles are pointers
> to their own dummy structures. The current druntime WinAPI just aliases
> all handle types to HANDLE, which is itself an alias to void*. This is
> very wrong.
>
>
> On Fri, Nov 23, 2012 at 5:58 PM, Vladimir Panteleev
> <vladimir at thecybershadow.net <mailto:vladimir at thecybershadow.net>> wrote:
>
>     On Friday, 23 November 2012 at 13:57:14 UTC, Vladimir Panteleev wrote:
>
>         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.
>
>
>     Oh, I think I remembered. I believe the proper solution is to create
>     a dummy struct type, and make HANDLE a const pointer to it. Then it
>     cannot be confused with other types, but still accepts null assignments.
>
>
>
>
> --
> Bye,
> Gor Gyolchanyan.

This kind of reminds me of the way Microsoft "improved" Win16 by using 
#define STRICT, thus making void* into incompatible structures, which 
were still size compatible.

This way lots of assignment problems were easily caught during build time.

Oh the wonders of Win16 C development!

--
Paulo


More information about the Digitalmars-d mailing list