Differences From Artifact [d85b79a6d3b758cc]:
- File
src/win32/windef.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
To Artifact [305164202924dd1b]:
- File
src/win32/windef.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
1 -
2 1 /***********************************************************************\
3 2 * windef.d *
4 3 * *
5 4 * Windows API header module *
6 5 * *
7 6 * Translated from MinGW Windows headers *
8 7 * by Stewart Gordon *
................................................................................
12 11 module win32.windef;
13 12
14 13 public import win32.winnt;
15 14 private import win32.w32api;
16 15
17 16 const size_t MAX_PATH = 260;
18 17
19 -ushort MAKEWORD(ubyte a, ubyte b)
20 -{
21 - return cast(ushort) ((b << 8) | a);
18 +ushort MAKEWORD(ubyte a, ubyte b) {
19 + return cast(ushort) ((b << 8) | a);
20 +}
21 +
22 +ushort MAKEWORD(ushort a, ushort b) {
23 + assert((a & 0xFF00) == 0);
24 + assert((b & 0xFF00) == 0);
25 + return MAKEWORD(cast(ubyte)a, cast(ubyte)b);
26 +}
27 +
28 +uint MAKELONG(ushort a, ushort b) {
29 + return cast(uint) ((b << 16) | a);
30 +}
31 +
32 +uint MAKELONG(uint a, uint b) {
33 + assert((a & 0xFFFF0000) == 0);
34 + assert((b & 0xFFFF0000) == 0);
35 + return MAKELONG(cast(ushort)a, cast(ushort)b);
36 +}
37 +
38 +ushort LOWORD(ulong l) {
39 + return cast(ushort) l;
40 +}
41 +
42 +ushort HIWORD(ulong l) {
43 + return cast(ushort) (l >>> 16);
22 44 }
23 45
24 -
25 -uint MAKELONG(ushort a, ushort b)
26 -{
27 - return cast(uint) ((b << 16) | a);
46 +ubyte LOBYTE(ushort w) {
47 + return cast(ubyte) w;
28 48 }
29 49
30 -
31 -ushort LOWORD(uint l)
32 -{
33 - return cast(ushort) l;
34 -}
35 -
36 -
37 -ushort HIWORD(uint l)
38 -{
39 - return cast(ushort) (l >>> 16);
50 +ubyte HIBYTE(ushort w) {
51 + return cast(ubyte) (w >>> 8);
40 52 }
41 53
42 -
43 -ubyte LOBYTE(ushort w)
44 -{
45 - return cast(ubyte) w;
46 -}
47 -
48 -
49 -ubyte HIBYTE(ushort w)
50 -{
51 - return cast(ubyte) (w >>> 8);
52 -}
53 -
54 -
55 -/+ template max(T) {
56 - T max(T a, T b)
57 - {
58 - return a > b ? a : b;
59 - }
54 +template max(T) {
55 + T max(T a, T b) {
56 + return a > b ? a : b;
57 + }
60 58 }
61 59
62 60 template min(T) {
63 - T min(T a, T b)
64 - {
65 - return a < b ? a : b;
66 - }
67 -} +/
61 + T min(T a, T b) {
62 + return a < b ? a : b;
63 + }
64 +}
68 65
69 -enum NULL = null;
70 -//~ alias null NULL;
71 -//~ const void *NULL = null;
72 -alias ubyte BYTE;
73 -alias ubyte *PBYTE, LPBYTE;
74 -alias ushort USHORT, WORD, ATOM;
75 -alias ushort*PUSHORT, PWORD, LPWORD;
76 -alias uint ULONG, DWORD, UINT, COLORREF;
77 -alias uint *PULONG, PDWORD, LPDWORD, PUINT, LPUINT;
78 -alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
79 -alias int*PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
80 -alias float FLOAT;
81 -alias float*PFLOAT;
82 -alias CPtr!(void) PCVOID, LPCVOID;
66 +enum void* NULL = null;
67 +alias ubyte BYTE;
68 +alias ubyte* PBYTE, LPBYTE;
69 +alias ushort USHORT, WORD, ATOM;
70 +alias ushort* PUSHORT, PWORD, LPWORD;
71 +alias uint ULONG, DWORD, UINT, COLORREF;
72 +alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT;
73 +alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
74 +alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
75 +alias float FLOAT;
76 +alias float* PFLOAT;
77 +alias const(void)* PCVOID, LPCVOID;
83 78
84 79 alias UINT_PTR WPARAM;
85 80 alias LONG_PTR LPARAM, LRESULT;
86 81
87 -alias HANDLE HGLOBAL, HLOCAL, GLOBALHANDLE, LOCALHANDLE, HGDIOBJ, HACCEL,
88 - HBITMAP, HBRUSH, HCOLORSPACE, HDC, HGLRC, HDESK, HENHMETAFILE, HFONT,
89 - HICON, HINSTANCE, HKEY, HMENU, HMETAFILE, HMODULE, HMONITOR, HPALETTE, HPEN,
90 - HRGN, HRSRC, HSTR, HTASK, HWND, HWINSTA, HKL, HCURSOR;
91 -alias HANDLE*PHKEY;
92 -
93 -static
82 +mixin DECLARE_HANDLE!("HGLOBAL");
83 +mixin DECLARE_HANDLE!("HLOCAL");
84 +mixin DECLARE_HANDLE!("GLOBALHANDLE");
85 +mixin DECLARE_HANDLE!("LOCALHANDLE");
86 +mixin DECLARE_HANDLE!("HGDIOBJ");
87 +mixin DECLARE_HANDLE!("HACCEL");
88 +mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ);
89 +mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ);
90 +mixin DECLARE_HANDLE!("HCOLORSPACE");
91 +mixin DECLARE_HANDLE!("HDC");
92 +mixin DECLARE_HANDLE!("HGLRC");
93 +mixin DECLARE_HANDLE!("HDESK");
94 +mixin DECLARE_HANDLE!("HENHMETAFILE");
95 +mixin DECLARE_HANDLE!("HFONT", HGDIOBJ);
96 +mixin DECLARE_HANDLE!("HICON");
97 +mixin DECLARE_HANDLE!("HINSTANCE");
98 +mixin DECLARE_HANDLE!("HKEY");
99 +mixin DECLARE_HANDLE!("HMENU");
100 +mixin DECLARE_HANDLE!("HMETAFILE");
101 +mixin DECLARE_HANDLE!("HMODULE");
102 +mixin DECLARE_HANDLE!("HMONITOR");
103 +mixin DECLARE_HANDLE!("HPALETTE");
104 +mixin DECLARE_HANDLE!("HPEN", HGDIOBJ);
105 +mixin DECLARE_HANDLE!("HRGN", HGDIOBJ);
106 +mixin DECLARE_HANDLE!("HRSRC");
107 +mixin DECLARE_HANDLE!("HSTR");
108 +mixin DECLARE_HANDLE!("HTASK");
109 +mixin DECLARE_HANDLE!("HWND");
110 +mixin DECLARE_HANDLE!("HWINSTA");
111 +mixin DECLARE_HANDLE!("HKL");
112 +mixin DECLARE_HANDLE!("HCURSOR");
113 +alias HKEY* PHKEY;
94 114
95 -if (WINVER >= 0x500)
96 -{
97 - alias HANDLE HTERMINAL, HWINEVENTHOOK;
115 +static if (_WIN32_WINNT >= 0x500) {
116 + mixin DECLARE_HANDLE!("HTERMINAL");
117 + mixin DECLARE_HANDLE!("HWINEVENTHOOK");
98 118 }
99 119
100 -alias extern (Windows) int function() FARPROC, NEARPROC, PROC;
120 +alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC;
101 121
102 -struct RECT
103 -{
104 - LONG left;
105 - LONG top;
106 - LONG right;
107 - LONG bottom;
122 +struct RECT {
123 + LONG left;
124 + LONG top;
125 + LONG right;
126 + LONG bottom;
108 127 }
109 128 alias RECT RECTL;
110 -alias RECT*PRECT, LPRECT, PRECTL, LPRECTL;
111 -alias CPtr!(RECT) LPCRECT, LPCRECTL;
129 +alias RECT* PRECT, LPRECT, PRECTL, LPRECTL;
130 +alias const(RECT)* LPCRECT, LPCRECTL;
112 131
113 -struct POINT
114 -{
115 - LONG x;
116 - LONG y;
117 - alias x e1;
118 - alias y e2;
132 +struct POINT {
133 + LONG x;
134 + LONG y;
119 135 }
120 136 alias POINT POINTL;
121 -alias POINT*PPOINT, LPPOINT, PPOINTL, LPPOINTL;
137 +alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL;
122 138
123 -struct SIZE
124 -{
125 - LONG cx;
126 - LONG cy;
139 +struct SIZE {
140 + LONG cx;
141 + LONG cy;
127 142 }
128 143 alias SIZE SIZEL;
129 -alias SIZE*PSIZE, LPSIZE, PSIZEL, LPSIZEL;
144 +alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL;
130 145
131 -struct POINTS
132 -{
133 - SHORT x;
134 - SHORT y;
146 +struct POINTS {
147 + SHORT x;
148 + SHORT y;
135 149 }
136 -alias POINTS*PPOINTS, LPPOINTS;
150 +alias POINTS* PPOINTS, LPPOINTS;
137 151
138 152 enum : BOOL {
139 - FALSE = 0,
140 - TRUE = 1
153 + FALSE = 0,
154 + TRUE = 1
141 155 }