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 * windef.d * 2 * windef.d *
4 * * 3 * *
5 * Windows API header module * 4 * Windows API header module *
6 * * 5 * *
7 * Translated from MinGW Windows headers * 6 * Translated from MinGW Windows headers *
8 * by Stewart Gordon * 7 * by Stewart Gordon *
................................................................................................................................................................................
12 module win32.windef; 11 module win32.windef;
13 12
14 public import win32.winnt; 13 public import win32.winnt;
15 private import win32.w32api; 14 private import win32.w32api;
16 15
17 const size_t MAX_PATH = 260; 16 const size_t MAX_PATH = 260;
18 17
19 ushort MAKEWORD(ubyte a, ubyte b) | 18 ushort MAKEWORD(ubyte a, ubyte b) {
> 19 return cast(ushort) ((b << 8) | a);
> 20 }
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) {
21 return cast(ushort) ((b << 8) | a); | 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 { <
> 46 ubyte LOBYTE(ushort w) {
27 return cast(uint) ((b << 16) | a); | 47 return cast(ubyte) w;
28 } 48 }
29 49
30 <
31 ushort LOWORD(uint l) <
32 { <
> 50 ubyte HIBYTE(ushort w) {
33 return cast(ushort) l; | 51 return cast(ubyte) (w >>> 8);
34 } <
35 <
36 <
37 ushort HIWORD(uint l) <
38 { <
39 return cast(ushort) (l >>> 16); <
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) { | 54 template max(T) {
56 T max(T a, T b) | 55 T max(T a, T b) {
57 { <
58 return a > b ? a : b; | 56 return a > b ? a : b;
59 } | 57 }
60 } 58 }
61 59
62 template min(T) { 60 template min(T) {
63 T min(T a, T b) | 61 T min(T a, T b) {
64 { <
65 return a < b ? a : b; | 62 return a < b ? a : b;
66 } | 63 }
67 } +/ <
> 64 }
68 65
69 enum NULL = null; | 66 enum void* NULL = null;
70 //~ alias null NULL; <
71 //~ const void *NULL = null; <
72 alias ubyte BYTE; | 67 alias ubyte BYTE;
73 alias ubyte *PBYTE, LPBYTE; | 68 alias ubyte* PBYTE, LPBYTE;
74 alias ushort USHORT, WORD, ATOM; | 69 alias ushort USHORT, WORD, ATOM;
75 alias ushort*PUSHORT, PWORD, LPWORD; | 70 alias ushort* PUSHORT, PWORD, LPWORD;
76 alias uint ULONG, DWORD, UINT, COLORREF; | 71 alias uint ULONG, DWORD, UINT, COLORREF;
77 alias uint *PULONG, PDWORD, LPDWORD, PUINT, LPUINT; | 72 alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT;
78 alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; | 73 alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
79 alias int*PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; | 74 alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
80 alias float FLOAT; | 75 alias float FLOAT;
81 alias float*PFLOAT; | 76 alias float* PFLOAT;
82 alias CPtr!(void) PCVOID, LPCVOID; | 77 alias const(void)* PCVOID, LPCVOID;
83 78
84 alias UINT_PTR WPARAM; 79 alias UINT_PTR WPARAM;
85 alias LONG_PTR LPARAM, LRESULT; 80 alias LONG_PTR LPARAM, LRESULT;
86 81
87 alias HANDLE HGLOBAL, HLOCAL, GLOBALHANDLE, LOCALHANDLE, HGDIOBJ, HACCEL, | 82 mixin DECLARE_HANDLE!("HGLOBAL");
88 HBITMAP, HBRUSH, HCOLORSPACE, HDC, HGLRC, HDESK, HENHMETAFILE, HFON | 83 mixin DECLARE_HANDLE!("HLOCAL");
89 HICON, HINSTANCE, HKEY, HMENU, HMETAFILE, HMODULE, HMONITOR, HPALET | 84 mixin DECLARE_HANDLE!("GLOBALHANDLE");
90 HRGN, HRSRC, HSTR, HTASK, HWND, HWINSTA, HKL, HCURSOR; | 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");
91 alias HANDLE*PHKEY; | 113 alias HKEY* PHKEY;
92 <
93 static <
94 114
95 if (WINVER >= 0x500) | 115 static if (_WIN32_WINNT >= 0x500) {
96 { <
> 116 mixin DECLARE_HANDLE!("HTERMINAL");
97 alias HANDLE HTERMINAL, HWINEVENTHOOK; | 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 | 122 struct RECT {
103 { <
104 LONG left; | 123 LONG left;
105 LONG top; | 124 LONG top;
106 LONG right; | 125 LONG right;
107 LONG bottom; | 126 LONG bottom;
108 } 127 }
109 alias RECT RECTL; 128 alias RECT RECTL;
110 alias RECT*PRECT, LPRECT, PRECTL, LPRECTL; | 129 alias RECT* PRECT, LPRECT, PRECTL, LPRECTL;
111 alias CPtr!(RECT) LPCRECT, LPCRECTL; | 130 alias const(RECT)* LPCRECT, LPCRECTL;
112 131
113 struct POINT | 132 struct POINT {
114 { <
115 LONG x; | 133 LONG x;
116 LONG y; | 134 LONG y;
117 alias x e1; <
118 alias y e2; <
119 } 135 }
120 alias POINT POINTL; 136 alias POINT POINTL;
121 alias POINT*PPOINT, LPPOINT, PPOINTL, LPPOINTL; | 137 alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL;
122 138
123 struct SIZE | 139 struct SIZE {
124 { <
125 LONG cx; | 140 LONG cx;
126 LONG cy; | 141 LONG cy;
127 } 142 }
128 alias SIZE SIZEL; 143 alias SIZE SIZEL;
129 alias SIZE*PSIZE, LPSIZE, PSIZEL, LPSIZEL; | 144 alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL;
130 145
131 struct POINTS | 146 struct POINTS {
132 { <
133 SHORT x; | 147 SHORT x;
134 SHORT y; | 148 SHORT y;
135 } 149 }
136 alias POINTS*PPOINTS, LPPOINTS; | 150 alias POINTS* PPOINTS, LPPOINTS;
137 151
138 enum : BOOL { 152 enum : BOOL {
139 FALSE = 0, | 153 FALSE = 0,
140 TRUE = 1 | 154 TRUE = 1
141 } 155 }